Skip to content

Commit b140141

Browse files
synaretephlogistonjohn
authored andcommitted
resources: create ensure-share-paths init container
Add init container to ensure share's top-level permissions are properly set, via sambacc tool. Signed-off-by: Shachar Sharon <[email protected]>
1 parent 36829b5 commit b140141

File tree

2 files changed

+42
-1
lines changed

2 files changed

+42
-1
lines changed

internal/planner/args.go

Lines changed: 5 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -121,3 +121,8 @@ func (*SambaContainerArgs) CTDBNodeStatus() []string {
121121
"ctdb-nodestatus",
122122
}
123123
}
124+
125+
// EnsureSharePaths container arguments generator.
126+
func (*SambaContainerArgs) EnsureSharePaths() []string {
127+
return []string{"ensure-share-paths"}
128+
}

internal/resources/pods.go

Lines changed: 37 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -113,6 +113,7 @@ func buildADPodSpec(
113113
podSpec.Volumes = getVolumes(volumes)
114114
podSpec.InitContainers = []corev1.Container{
115115
buildInitCtr(planner, podEnv, smbAllVols),
116+
buildEnsureShareCtr(planner, podEnv, smbAllVols),
116117
buildMustJoinCtr(planner, joinEnv, joinVols),
117118
}
118119
podSpec.Containers = containers
@@ -125,6 +126,7 @@ func buildUserPodSpec(
125126
pvcName string) corev1.PodSpec {
126127
// ---
127128
vols := []volMount{}
129+
initContainers := []corev1.Container{}
128130

129131
shareVol := shareVolumeAndMount(planner, pvcName)
130132
vols = append(vols, shareVol)
@@ -135,17 +137,21 @@ func buildUserPodSpec(
135137
configVol := configVolumeAndMount(planner)
136138
vols = append(vols, configVol)
137139

140+
podEnv := defaultPodEnv(planner)
141+
initContainers = append(initContainers,
142+
buildEnsureShareCtr(planner, podEnv, vols))
143+
138144
osRunVol := osRunVolumeAndMount(planner)
139145
vols = append(vols, osRunVol)
140146

141147
if planner.UserSecuritySource().Configured {
142148
v := userConfigVolumeAndMount(planner)
143149
vols = append(vols, v)
144150
}
145-
podEnv := defaultPodEnv(planner)
146151
podSpec := defaultPodSpec(planner)
147152
podSpec.Volumes = getVolumes(vols)
148153
podSpec.Containers = buildSmbdCtrs(planner, podEnv, vols)
154+
podSpec.InitContainers = initContainers
149155
return podSpec
150156
}
151157

@@ -203,6 +209,14 @@ func buildClusteredUserPodSpec(
203209
ctdbSharedVol, // needed to decide if real init or not
204210
)))
205211

212+
initContainers = append(
213+
initContainers,
214+
buildEnsureShareCtr(planner, podEnv, append(
215+
podCfgVols,
216+
stateVol,
217+
shareVol,
218+
)))
219+
206220
initContainers = append(
207221
initContainers,
208222
buildCTDBMigrateCtr(planner, ctdbEnv, append(
@@ -321,6 +335,14 @@ func buildClusteredADPodSpec(
321335
ctdbSharedVol, // needed to decide if real init or not
322336
)))
323337

338+
initContainers = append(
339+
initContainers,
340+
buildEnsureShareCtr(planner, podEnv, append(
341+
podCfgVols,
342+
stateVol,
343+
shareVol,
344+
)))
345+
324346
joinVols := append(
325347
append(podCfgVols, stateVol, ctdbSharedVol),
326348
jsrc.volumes...)
@@ -576,6 +598,20 @@ func buildInitCtr(
576598
}
577599
}
578600

601+
func buildEnsureShareCtr(
602+
planner *pln.Planner,
603+
env []corev1.EnvVar,
604+
vols []volMount) corev1.Container {
605+
// ---
606+
return corev1.Container{
607+
Image: planner.GlobalConfig.SmbdContainerImage,
608+
Name: "ensure-share-paths",
609+
Args: planner.Args().EnsureSharePaths(),
610+
Env: env,
611+
VolumeMounts: getMounts(vols),
612+
}
613+
}
614+
579615
func buildMustJoinCtr(
580616
planner *pln.Planner,
581617
env []corev1.EnvVar,

0 commit comments

Comments
 (0)