Skip to content

Commit 1fdc58b

Browse files
authored
chart: Allow overwrite config videoRecorder in each node (#2445)
Signed-off-by: Viet Nguyen Duc <[email protected]>
1 parent a5e252c commit 1fdc58b

12 files changed

+56
-30
lines changed

Diff for: charts/selenium-grid/CONFIGURATION.md

+3
Original file line numberDiff line numberDiff line change
@@ -396,6 +396,7 @@ A Helm chart for creating a Selenium Grid Server in Kubernetes
396396
| chromeNode.hpa.unsafeSsl | string | `"{{ template \"seleniumGrid.graphqlURL.unsafeSsl\" . }}"` | Skip check SSL when connecting to the Graphql endpoint |
397397
| chromeNode.initContainers | list | `[]` | It is used to add initContainers in the same pod of the browser node. It should be set using the --set-json option |
398398
| chromeNode.sidecars | list | `[]` | It is used to add sidecars proxy in the same pod of the browser node. It means it will add a new container to the deployment itself. It should be set using the --set-json option |
399+
| chromeNode.videoRecorder | object | `{}` | Override specific video recording settings for chrome node |
399400
| firefoxNode.enabled | bool | `true` | Enable firefox nodes |
400401
| firefoxNode.deploymentEnabled | bool | `true` | NOTE: Only used when autoscaling.enabled is false Enable creation of Deployment true (default) - if you want long living pods false - for provisioning your own custom type such as Jobs |
401402
| firefoxNode.updateStrategy | object | `{"type":"RollingUpdate"}` | Global update strategy will be overwritten by individual component |
@@ -446,6 +447,7 @@ A Helm chart for creating a Selenium Grid Server in Kubernetes
446447
| firefoxNode.hpa.unsafeSsl | string | `"{{ template \"seleniumGrid.graphqlURL.unsafeSsl\" . }}"` | Skip check SSL when connecting to the Graphql endpoint |
447448
| firefoxNode.initContainers | list | `[]` | It is used to add initContainers in the same pod of the browser node. It should be set using the --set-json option |
448449
| firefoxNode.sidecars | list | `[]` | It is used to add sidecars proxy in the same pod of the browser node. It means it will add a new container to the deployment itself. It should be set using the --set-json option |
450+
| firefoxNode.videoRecorder | object | `{}` | Override specific video recording settings for firefox node |
449451
| edgeNode.enabled | bool | `true` | Enable edge nodes |
450452
| edgeNode.deploymentEnabled | bool | `true` | NOTE: Only used when autoscaling.enabled is false Enable creation of Deployment true (default) - if you want long living pods false - for provisioning your own custom type such as Jobs |
451453
| edgeNode.updateStrategy | object | `{"type":"RollingUpdate"}` | Global update strategy will be overwritten by individual component |
@@ -496,6 +498,7 @@ A Helm chart for creating a Selenium Grid Server in Kubernetes
496498
| edgeNode.hpa.unsafeSsl | string | `"{{ template \"seleniumGrid.graphqlURL.unsafeSsl\" . }}"` | Skip check SSL when connecting to the Graphql endpoint |
497499
| edgeNode.initContainers | list | `[]` | It is used to add initContainers in the same pod of the browser node. It should be set using the --set-json option |
498500
| edgeNode.sidecars | list | `[]` | It is used to add sidecars proxy in the same pod of the browser node. It means it will add a new container to the deployment itself. It should be set using the --set-json option |
501+
| edgeNode.videoRecorder | object | `{}` | Override specific video recording settings for edge node |
499502
| videoRecorder.enabled | bool | `false` | Enable video recording in all browser nodes |
500503
| videoRecorder.name | string | `"video"` | Container name is set to resource specs |
501504
| videoRecorder.imageRegistry | string | `nil` | Registry to pull the image (this overwrites global.seleniumGrid.imageRegistry parameter) |

Diff for: charts/selenium-grid/templates/_helpers.tpl

+24-24
Original file line numberDiff line numberDiff line change
@@ -277,8 +277,8 @@ Common pod template
277277
{{- define "seleniumGrid.podTemplate" -}}
278278
{{- $nodeImageRegistry := default $.Values.global.seleniumGrid.imageRegistry .node.imageRegistry -}}
279279
{{- $nodeImageTag := default $.Values.global.seleniumGrid.nodesImageTag .node.imageTag -}}
280-
{{- $videoImageRegistry := default $.Values.global.seleniumGrid.imageRegistry $.Values.videoRecorder.imageRegistry -}}
281-
{{- $videoImageTag := default $.Values.global.seleniumGrid.videoImageTag $.Values.videoRecorder.imageTag -}}
280+
{{- $videoImageRegistry := default $.Values.global.seleniumGrid.imageRegistry .recorder.imageRegistry -}}
281+
{{- $videoImageTag := default $.Values.global.seleniumGrid.videoImageTag .recorder.imageTag -}}
282282
{{- $nodeMaxSessions := default $.Values.global.seleniumGrid.nodeMaxSessions .node.nodeMaxSessions | int64 -}}
283283
template:
284284
metadata:
@@ -315,11 +315,11 @@ template:
315315
{{- with .node.resources }}
316316
resources: {{- toYaml . | nindent 10 }}
317317
{{- end }}
318-
{{- if $.Values.videoRecorder.enabled }}
319-
- name: "pre-puller-{{ $.Values.videoRecorder.name }}"
320-
image: {{ printf "%s/%s:%s" $videoImageRegistry $.Values.videoRecorder.imageName $videoImageTag }}
318+
{{- if .recorder.enabled }}
319+
- name: "pre-puller-{{ .recorder.name }}"
320+
image: {{ printf "%s/%s:%s" $videoImageRegistry .recorder.imageName $videoImageTag }}
321321
command: ["bash", "-c", "'true'"]
322-
{{- with $.Values.videoRecorder.resources }}
322+
{{- with .recorder.resources }}
323323
resources: {{- toYaml . | nindent 10 }}
324324
{{- end }}
325325
{{- end }}
@@ -478,10 +478,10 @@ template:
478478
{{- if .node.sidecars }}
479479
{{- toYaml .node.sidecars | nindent 6 }}
480480
{{- end }}
481-
{{- if $.Values.videoRecorder.enabled }}
482-
- name: {{ $.Values.videoRecorder.name }}
483-
image: {{ printf "%s/%s:%s" $videoImageRegistry $.Values.videoRecorder.imageName $videoImageTag }}
484-
imagePullPolicy: {{ $.Values.videoRecorder.imagePullPolicy }}
481+
{{- if .recorder.enabled }}
482+
- name: {{ .recorder.name }}
483+
image: {{ printf "%s/%s:%s" $videoImageRegistry .recorder.imageName $videoImageTag }}
484+
imagePullPolicy: {{ .recorder.imagePullPolicy }}
485485
env:
486486
- name: SE_NODE_MAX_SESSIONS
487487
value: {{ $nodeMaxSessions | quote }}
@@ -493,7 +493,7 @@ template:
493493
valueFrom:
494494
fieldRef:
495495
fieldPath: status.podIP
496-
{{- with $.Values.videoRecorder.extraEnvironmentVariables }}
496+
{{- with .recorder.extraEnvironmentVariables }}
497497
{{- tpl (toYaml .) $ | nindent 8 }}
498498
{{- end }}
499499
envFrom:
@@ -507,16 +507,16 @@ template:
507507
name: {{ template "seleniumGrid.server.configmap.fullname" $ }}
508508
- secretRef:
509509
name: {{ template "seleniumGrid.basicAuth.secrets.fullname" $ }}
510-
{{- if and $.Values.videoRecorder.uploader.enabled (empty $.Values.videoRecorder.uploader.name) }}
510+
{{- if and .recorder.uploader.enabled (empty .recorder.uploader.name) }}
511511
- secretRef:
512512
name: {{ tpl (default (include "seleniumGrid.common.secrets.fullname" $) $.Values.uploaderConfigMap.secretVolumeMountName) $ }}
513513
{{- end }}
514-
{{- with $.Values.videoRecorder.extraEnvFrom }}
514+
{{- with .recorder.extraEnvFrom }}
515515
{{- tpl (toYaml .) $ | nindent 8 }}
516516
{{- end }}
517-
{{- if gt (len $.Values.videoRecorder.ports) 0 }}
517+
{{- if gt (len .recorder.ports) 0 }}
518518
ports:
519-
{{- range $.Values.videoRecorder.ports }}
519+
{{- range .recorder.ports }}
520520
- containerPort: {{ . }}
521521
protocol: TCP
522522
{{- end }}
@@ -527,23 +527,23 @@ template:
527527
mountPath: /dev/shm
528528
{{- end }}
529529
{{- tpl (include "seleniumGrid.video.volumeMounts" .) $ | nindent 8 }}
530-
{{- with $.Values.videoRecorder.resources }}
530+
{{- with .recorder.resources }}
531531
resources: {{- toYaml . | nindent 10 }}
532532
{{- end }}
533-
{{- with $.Values.videoRecorder.securityContext }}
533+
{{- with .recorder.securityContext }}
534534
securityContext: {{- toYaml . | nindent 10 }}
535535
{{- end }}
536-
{{- with $.Values.videoRecorder.startupProbe }}
536+
{{- with .recorder.startupProbe }}
537537
startupProbe: {{- toYaml . | nindent 10 }}
538538
{{- end }}
539-
{{- with $.Values.videoRecorder.livenessProbe }}
539+
{{- with .recorder.livenessProbe }}
540540
livenessProbe: {{- toYaml . | nindent 10 }}
541541
{{- end }}
542-
{{- with $.Values.videoRecorder.lifecycle }}
542+
{{- with .recorder.lifecycle }}
543543
lifecycle: {{- toYaml . | nindent 10 }}
544544
{{- end }}
545-
{{- if and $.Values.videoRecorder.uploader.enabled (not (empty $.Values.videoRecorder.uploader.name)) }}
546-
- name: {{ default "uploader" $.Values.videoRecorder.uploader.name }}
545+
{{- if and .recorder.uploader.enabled (not (empty .recorder.uploader.name)) }}
546+
- name: {{ default "uploader" .recorder.uploader.name }}
547547
{{- $imageTag := .uploader.imageTag }}
548548
{{- $imageRegistry := .uploader.imageRegistry }}
549549
image: {{ printf "%s/%s:%s" $imageRegistry .uploader.imageName $imageTag }}
@@ -556,7 +556,7 @@ template:
556556
{{- if .uploader.args }}
557557
args: {{- tpl (toYaml .uploader.args) $ | nindent 8 }}
558558
{{- else }}
559-
args: ["-c", "{{ $.Values.recorderConfigMap.extraScriptsDirectory }}/{{ $.Values.videoRecorder.uploader.entryPointFileName }}"]
559+
args: ["-c", "{{ $.Values.recorderConfigMap.extraScriptsDirectory }}/{{ .recorder.uploader.entryPointFileName }}"]
560560
{{- end }}
561561
{{- with .uploader.extraEnvironmentVariables }}
562562
env: {{- tpl (toYaml .) $ | nindent 8 }}
@@ -632,7 +632,7 @@ template:
632632
{{- if .node.extraVolumes }}
633633
{{ tpl (toYaml .node.extraVolumes) $ | nindent 6 }}
634634
{{- end }}
635-
{{- if $.Values.videoRecorder.enabled }}
635+
{{- if .recorder.enabled }}
636636
{{- tpl (include "seleniumGrid.video.volumes" .) $ | nindent 6 }}
637637
{{- end }}
638638
{{- end -}}

Diff for: charts/selenium-grid/templates/chrome-node-deployment.yaml

+2-1
Original file line numberDiff line numberDiff line change
@@ -30,6 +30,7 @@ spec:
3030
{{- $podScope := deepCopy . -}}
3131
{{- $_ := set $podScope "name" (include "seleniumGrid.chromeNode.fullname" .) -}}
3232
{{- $_ = set $podScope "node" .Values.chromeNode -}}
33-
{{- $_ = set $podScope "uploader" (get .Values.videoRecorder (.Values.videoRecorder.uploader.name | toString)) -}}
33+
{{- $_ = set $podScope "recorder" (mergeOverwrite .Values.videoRecorder .Values.chromeNode.videoRecorder) -}}
34+
{{- $_ = set $podScope "uploader" (get .Values.videoRecorder ($podScope.recorder.uploader.name | toString)) -}}
3435
{{- include "seleniumGrid.podTemplate" $podScope | nindent 2 }}
3536
{{- end }}

Diff for: charts/selenium-grid/templates/chrome-node-scaledjobs.yaml

+2-1
Original file line numberDiff line numberDiff line change
@@ -23,7 +23,8 @@ spec:
2323
{{- $podScope := deepCopy . -}}
2424
{{- $_ := set $podScope "name" (include "seleniumGrid.chromeNode.fullname" .) -}}
2525
{{- $_ = set $podScope "node" .Values.chromeNode -}}
26-
{{- $_ = set $podScope "uploader" (get .Values.videoRecorder (.Values.videoRecorder.uploader.name | toString)) -}}
26+
{{- $_ = set $podScope "recorder" (mergeOverwrite .Values.videoRecorder .Values.chromeNode.videoRecorder) -}}
27+
{{- $_ = set $podScope "uploader" (get .Values.videoRecorder ($podScope.recorder.uploader.name | toString)) -}}
2728
{{- $_ = set $podScope "podTemplate" (include "seleniumGrid.podTemplate" $podScope | fromYaml) }}
2829
{{- include "seleniumGrid.autoscalingTemplate" $podScope | nindent 2 }}
2930
{{- end }}

Diff for: charts/selenium-grid/templates/edge-node-deployment.yaml

+2-1
Original file line numberDiff line numberDiff line change
@@ -30,6 +30,7 @@ spec:
3030
{{- $podScope := deepCopy . -}}
3131
{{- $_ := set $podScope "name" (include "seleniumGrid.edgeNode.fullname" .) -}}
3232
{{- $_ = set $podScope "node" .Values.edgeNode -}}
33-
{{- $_ = set $podScope "uploader" (get .Values.videoRecorder (.Values.videoRecorder.uploader.name | toString)) -}}
33+
{{- $_ = set $podScope "recorder" (mergeOverwrite .Values.videoRecorder .Values.edgeNode.videoRecorder) -}}
34+
{{- $_ = set $podScope "uploader" (get .Values.videoRecorder ($podScope.recorder.uploader.name | toString)) -}}
3435
{{- include "seleniumGrid.podTemplate" $podScope | nindent 2 }}
3536
{{- end }}

Diff for: charts/selenium-grid/templates/edge-node-scaledjob.yaml

+2-1
Original file line numberDiff line numberDiff line change
@@ -23,7 +23,8 @@ spec:
2323
{{- $podScope := deepCopy . -}}
2424
{{- $_ := set $podScope "name" (include "seleniumGrid.edgeNode.fullname" .) -}}
2525
{{- $_ = set $podScope "node" .Values.edgeNode -}}
26-
{{- $_ = set $podScope "uploader" (get .Values.videoRecorder (.Values.videoRecorder.uploader.name | toString)) -}}
26+
{{- $_ = set $podScope "recorder" (mergeOverwrite .Values.videoRecorder .Values.edgeNode.videoRecorder) -}}
27+
{{- $_ = set $podScope "uploader" (get .Values.videoRecorder ($podScope.recorder.uploader.name | toString)) -}}
2728
{{- $_ = set $podScope "podTemplate" (include "seleniumGrid.podTemplate" $podScope | fromYaml) }}
2829
{{- include "seleniumGrid.autoscalingTemplate" $podScope | nindent 2 }}
2930
{{- end }}

Diff for: charts/selenium-grid/templates/firefox-node-deployment.yaml

+2-1
Original file line numberDiff line numberDiff line change
@@ -30,6 +30,7 @@ spec:
3030
{{- $podScope := deepCopy . -}}
3131
{{- $_ := set $podScope "name" (include "seleniumGrid.firefoxNode.fullname" .) -}}
3232
{{- $_ = set $podScope "node" .Values.firefoxNode -}}
33-
{{- $_ = set $podScope "uploader" (get .Values.videoRecorder (.Values.videoRecorder.uploader.name | toString)) -}}
33+
{{- $_ = set $podScope "recorder" (mergeOverwrite .Values.videoRecorder .Values.firefoxNode.videoRecorder) -}}
34+
{{- $_ = set $podScope "uploader" (get .Values.videoRecorder ($podScope.recorder.uploader.name | toString)) -}}
3435
{{- include "seleniumGrid.podTemplate" $podScope | nindent 2 }}
3536
{{- end }}

Diff for: charts/selenium-grid/templates/firefox-node-scaledjob.yaml

+2-1
Original file line numberDiff line numberDiff line change
@@ -23,7 +23,8 @@ spec:
2323
{{- $podScope := deepCopy . -}}
2424
{{- $_ := set $podScope "name" (include "seleniumGrid.firefoxNode.fullname" .) -}}
2525
{{- $_ = set $podScope "node" .Values.firefoxNode -}}
26-
{{- $_ = set $podScope "uploader" (get .Values.videoRecorder (.Values.videoRecorder.uploader.name | toString)) -}}
26+
{{- $_ = set $podScope "recorder" (mergeOverwrite .Values.videoRecorder .Values.firefoxNode.videoRecorder) -}}
27+
{{- $_ = set $podScope "uploader" (get .Values.videoRecorder ($podScope.recorder.uploader.name | toString)) -}}
2728
{{- $_ = set $podScope "podTemplate" (include "seleniumGrid.podTemplate" $podScope | fromYaml) }}
2829
{{- include "seleniumGrid.autoscalingTemplate" $podScope | nindent 2 }}
2930
{{- end }}

Diff for: charts/selenium-grid/values.yaml

+7
Original file line numberDiff line numberDiff line change
@@ -1082,6 +1082,8 @@ chromeNode:
10821082
# It means it will add a new container to the deployment itself.
10831083
# It should be set using the --set-json option
10841084
sidecars: []
1085+
# -- Override specific video recording settings for chrome node
1086+
videoRecorder: {}
10851087

10861088
# Configuration for firefox nodes
10871089
firefoxNode:
@@ -1262,6 +1264,8 @@ firefoxNode:
12621264
# It means it will add a new container to the deployment itself.
12631265
# It should be set using the --set-json option
12641266
sidecars: []
1267+
# -- Override specific video recording settings for firefox node
1268+
videoRecorder: {}
12651269

12661270
# Configuration for edge nodes
12671271
edgeNode:
@@ -1442,7 +1446,10 @@ edgeNode:
14421446
# It means it will add a new container to the deployment itself.
14431447
# It should be set using the --set-json option
14441448
sidecars: []
1449+
# -- Override specific video recording settings for edge node
1450+
videoRecorder: {}
14451451

1452+
# Video recording configuration for all browser nodes. Can be overridden by each browser node
14461453
videoRecorder:
14471454
# -- Enable video recording in all browser nodes
14481455
enabled: false

Diff for: tests/charts/templates/render/dummy.yaml

+3
Original file line numberDiff line numberDiff line change
@@ -131,6 +131,9 @@ firefoxNode:
131131
edgeNode:
132132
annotations:
133133
"restartOnUpdate": "true"
134+
videoRecorder:
135+
uploader:
136+
enabled: false
134137

135138
videoRecorder:
136139
enabled: true

Diff for: tests/charts/templates/render/dummy_solution.yaml

+3
Original file line numberDiff line numberDiff line change
@@ -119,6 +119,9 @@ selenium-grid:
119119

120120
edgeNode:
121121
affinity: *affinity
122+
videoRecorder:
123+
uploader:
124+
enabled: false
122125

123126
videoRecorder:
124127
enabled: true

Diff for: tests/charts/templates/test.py

+4
Original file line numberDiff line numberDiff line change
@@ -207,6 +207,10 @@ def test_upload_conf_mount_to_video_container(self):
207207
video_container = container
208208
if container['name'] == 's3':
209209
uploader_container = container
210+
# Test for case override upload config in Edge node
211+
if doc['metadata']['name'] == '{0}selenium-edge-node'.format(RELEASE_NAME):
212+
self.assertTrue(uploader_container is None, "Video uploader should be disabled in Edge node config")
213+
continue
210214
list_volume_mounts = None
211215
if uploader_container is not None:
212216
list_volume_mounts = uploader_container['volumeMounts']

0 commit comments

Comments
 (0)