Skip to content
This repository was archived by the owner on Dec 15, 2023. It is now read-only.

Commit d124f22

Browse files
committed
feat: Configurable task capabilities
Signed-off-by: Grzegorz Nosek <[email protected]>
1 parent 7ad0244 commit d124f22

File tree

4 files changed

+39
-17
lines changed

4 files changed

+39
-17
lines changed

pkg/hocon/build.go

Lines changed: 5 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -21,6 +21,11 @@ func extractBuild(config *configuration.Config) (*kilt.Build, error) {
2121
b.Command = make([]string, 0)
2222
}
2323

24+
b.Capabilities = config.GetStringList("build.capabilities")
25+
if b.Capabilities == nil {
26+
b.Capabilities = make([]string, 0)
27+
}
28+
2429
b.EnvironmentVariables = extractToStringMap(config, "build.environment_variables")
2530

2631
if config.IsArray("build.mount") {

pkg/kilt/types.go

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -29,6 +29,7 @@ type Build struct {
2929
EntryPoint []string
3030
Command []string
3131
EnvironmentVariables map[string]string
32+
Capabilities []string
3233

3334
Resources []BuildResource
3435
}

runtimes/cloudformation/cfnpatcher/cfn_test.go

Lines changed: 3 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -70,6 +70,7 @@ build {
7070
entry_point: ["/kilt/wait"]
7171
}
7272
]
73+
capabilities: ["SYS_PTRACE"]
7374
}
7475
`
7576

@@ -88,6 +89,7 @@ build {
8889
entry_point: ["/kilt/wait"]
8990
}
9091
]
92+
capabilities: ["SYS_PTRACE"]
9193
}
9294
`
9395

@@ -106,6 +108,7 @@ build {
106108
}
107109
}
108110
]
111+
capabilities: ["SYS_PTRACE"]
109112
}
110113
`
111114

runtimes/cloudformation/cfnpatcher/patcher.go

Lines changed: 30 additions & 17 deletions
Original file line numberDiff line numberDiff line change
@@ -206,27 +206,40 @@ func applyContainerDefinitionPatch(ctx context.Context, container *gabs.Containe
206206

207207
}
208208

209-
// We need to add SYS_PTRACE capability to the container
210-
if !container.Exists("LinuxParameters") {
211-
emptyMap := make(map[string]interface{})
212-
_, err = container.Set(emptyMap, "LinuxParameters")
213-
if err != nil {
214-
return fmt.Errorf("could not add LinuxParameters: %w", err)
209+
if len(patch.Capabilities) > 0 {
210+
capabilities := make([]interface{}, len(patch.Capabilities))
211+
for i, v := range patch.Capabilities {
212+
capabilities[i] = v
213+
}
214+
// We need to add capabilities to the container
215+
if !container.Exists("LinuxParameters") {
216+
emptyMap := make(map[string]interface{})
217+
_, err = container.Set(emptyMap, "LinuxParameters")
218+
if err != nil {
219+
return fmt.Errorf("could not add LinuxParameters: %w", err)
220+
}
215221
}
216-
}
217222

218-
if !container.Exists("LinuxParameters", "Capabilities") {
219-
emptyMap := make(map[string]interface{})
220-
_, err = container.Set(emptyMap, "LinuxParameters", "Capabilities")
221-
if err != nil {
222-
return fmt.Errorf("could not add LinuxParameters.Capabilities: %w", err)
223+
if !container.Exists("LinuxParameters", "Capabilities") {
224+
emptyMap := make(map[string]interface{})
225+
_, err = container.Set(emptyMap, "LinuxParameters", "Capabilities")
226+
if err != nil {
227+
return fmt.Errorf("could not add LinuxParameters.Capabilities: %w", err)
228+
}
223229
}
224-
}
225230

226-
// fargate only supports SYS_PTRACE
227-
_, err = container.Set([]string{"SYS_PTRACE"}, "LinuxParameters", "Capabilities", "Add")
228-
if err != nil {
229-
return fmt.Errorf("could not add LinuxParamaters.Capabilities.Add: %w", err)
231+
if !container.Exists("LinuxParameters", "Capabilities", "Add") {
232+
emptyList := make([]interface{}, 0)
233+
_, err = container.Set(emptyList, "LinuxParameters", "Capabilities", "Add")
234+
if err != nil {
235+
return fmt.Errorf("could not add LinuxParameters.Capabilities.Add: %w", err)
236+
}
237+
}
238+
239+
err := container.ArrayConcat(capabilities, "LinuxParameters", "Capabilities", "Add")
240+
if err != nil {
241+
return fmt.Errorf("could not append to LinuxParameters.Capabilities.Add: %w", err)
242+
}
230243
}
231244

232245
return nil

0 commit comments

Comments
 (0)