@@ -79,26 +79,27 @@ func newSpecModifier(logger logger.Interface, cfg *config.Config, ociSpec oci.Sp
7979 if err != nil {
8080 return nil , err
8181 }
82- // For CDI mode we make no additional modifications.
83- if mode == "cdi" {
84- return modeModifier , nil
85- }
8682
87- graphicsModifier , err := modifier .NewGraphicsModifier (logger , cfg , image , driver )
88- if err != nil {
89- return nil , err
90- }
91-
92- featureModifier , err := modifier .NewFeatureGatedModifier (logger , cfg , image )
93- if err != nil {
94- return nil , err
83+ var modifiers modifier.List
84+ for _ , modifierType := range supportedModifierTypes (mode ) {
85+ switch modifierType {
86+ case "mode" :
87+ modifiers = append (modifiers , modeModifier )
88+ case "graphics" :
89+ graphicsModifier , err := modifier .NewGraphicsModifier (logger , cfg , image , driver )
90+ if err != nil {
91+ return nil , err
92+ }
93+ modifiers = append (modifiers , graphicsModifier )
94+ case "feature-gated" :
95+ featureGatedModifier , err := modifier .NewFeatureGatedModifier (logger , cfg , image )
96+ if err != nil {
97+ return nil , err
98+ }
99+ modifiers = append (modifiers , featureGatedModifier )
100+ }
95101 }
96102
97- modifiers := modifier .Merge (
98- modeModifier ,
99- graphicsModifier ,
100- featureModifier ,
101- )
102103 return modifiers , nil
103104}
104105
@@ -114,3 +115,14 @@ func newModeModifier(logger logger.Interface, mode string, cfg *config.Config, o
114115
115116 return nil , fmt .Errorf ("invalid runtime mode: %v" , cfg .NVIDIAContainerRuntimeConfig .Mode )
116117}
118+
119+ // supportedModifierTypes returns the modifiers supported for a specific runtime mode.
120+ func supportedModifierTypes (mode string ) []string {
121+ switch mode {
122+ case "cdi" :
123+ // For CDI mode we make no additional modifications.
124+ return []string {"mode" }
125+ default :
126+ return []string {"mode" , "graphics" , "feature-gated" }
127+ }
128+ }
0 commit comments