Skip to content

Commit

Permalink
Address PR feedback
Browse files Browse the repository at this point in the history
Signed-off-by: David Kwon <[email protected]>
  • Loading branch information
dkwon17 committed Jan 23, 2024
1 parent d9554c8 commit cf2d070
Show file tree
Hide file tree
Showing 6 changed files with 72 additions and 13 deletions.
15 changes: 9 additions & 6 deletions pkg/library/overrides/pods.go
Original file line number Diff line number Diff line change
Expand Up @@ -76,24 +76,27 @@ func ApplyPodOverrides(workspace *common.DevWorkspaceWithConfig, deployment *app
return patched, nil
}

func GetPodVolumeOverrides(workspace *dw.DevWorkspaceTemplateSpec) (*[]corev1.Volume, error) {
var volumeOverrides []corev1.Volume
func GetVolumesFromOverrides(workspace *dw.DevWorkspaceTemplateSpec) (map[string]bool, error) {
overrideVolumes := map[string]bool{}

overrides, err := getPodOverrides(workspace)
if err != nil {
return &volumeOverrides, err
return nil, err
}

for _, override := range overrides {
podSpecTemplate := corev1.PodTemplateSpec{}
if err := json.Unmarshal(override.Raw, &podSpecTemplate); err != nil {
return &volumeOverrides, fmt.Errorf("error unmarshalling: %w", err)
return nil, fmt.Errorf("error unmarshalling: %w", err)
}

if podSpecTemplate.Spec.Volumes != nil {
volumeOverrides = append(volumeOverrides, podSpecTemplate.Spec.Volumes...)
for _, volume := range podSpecTemplate.Spec.Volumes {
overrideVolumes[volume.Name] = true
}
}
}
return &volumeOverrides, nil
return overrideVolumes, nil
}

// getPodOverrides returns PodTemplateSpecOverrides for every instance of the pod overrides attribute
Expand Down
Original file line number Diff line number Diff line change
@@ -0,0 +1,28 @@
name: "Container overrides can add volumeMounts"

input:
component:
name: test-component
attributes:
container-overrides:
volumeMounts:
- name: test-volume
mountPath: /test-volume/path
container:
image: test-image
container:
name: test-component
image: test-image
volumeMounts:
- name: my-volume
mountPath: /my-volume/path

output:
container:
name: test-component
image: test-image
volumeMounts:
- name: test-volume
mountPath: /test-volume/path
- name: my-volume
mountPath: /my-volume/path
Original file line number Diff line number Diff line change
@@ -1,4 +1,4 @@
name: "Applies volumeMount overrides from container-overrides attribute"
name: "Container overrides can add define volumeMounts"

input:
component:
Expand Down
Original file line number Diff line number Diff line change
@@ -0,0 +1,28 @@
name: "Container overrides can override existing volumeMounts"

input:
component:
name: test-component
attributes:
container-overrides:
volumeMounts:
# patchMergeKey is mountPath
- mountPath: /my-volume/path
subPath: test-subpath
container:
image: test-image
container:
name: test-component
image: test-image
volumeMounts:
- name: my-volume
mountPath: /my-volume/path

output:
container:
name: test-component
image: test-image
volumeMounts:
- name: my-volume
mountPath: /my-volume/path
subPath: test-subpath
6 changes: 3 additions & 3 deletions pkg/provision/storage/commonStorage.go
Original file line number Diff line number Diff line change
Expand Up @@ -146,12 +146,12 @@ func (p *CommonStorageProvisioner) rewriteContainerVolumeMounts(workspaceId, pvc
}

// Containers in podAdditions may reference volumes defined in pod overrides, and this is not an error
overridesVolumes, err := overrides.GetPodVolumeOverrides(workspace)
overridesVolumes, err := overrides.GetVolumesFromOverrides(workspace)
if err != nil {
return err
}
for _, overridesVolume := range *overridesVolumes {
additionalVolumes[overridesVolume.Name] = true
for key, value := range overridesVolumes {
additionalVolumes[key] = value
}

// Add implicit projects volume to support mountSources, if needed
Expand Down
6 changes: 3 additions & 3 deletions pkg/provision/storage/perWorkspaceStorage.go
Original file line number Diff line number Diff line change
Expand Up @@ -111,12 +111,12 @@ func (p *PerWorkspaceStorageProvisioner) rewriteContainerVolumeMounts(workspaceI
}

// Containers in podAdditions may reference volumes defined in pod overrides, and this is not an error
overridesVolumes, err := overrides.GetPodVolumeOverrides(workspace)
overridesVolumes, err := overrides.GetVolumesFromOverrides(workspace)
if err != nil {
return err
}
for _, overridesVolume := range *overridesVolumes {
additionalVolumes[overridesVolume.Name] = true
for key, value := range overridesVolumes {
additionalVolumes[key] = value
}

// Add implicit projects volume to support mountSources, if needed
Expand Down

0 comments on commit cf2d070

Please sign in to comment.