@@ -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