99
1010 tfv1 "github.com/NexusGPU/tensor-fusion/api/v1"
1111 constants "github.com/NexusGPU/tensor-fusion/internal/constants"
12+ "github.com/samber/lo"
1213 v1 "k8s.io/api/core/v1"
1314 "k8s.io/apimachinery/pkg/api/resource"
1415 "k8s.io/utils/ptr"
@@ -202,10 +203,50 @@ func AddTFDefaultClientConfBeforePatch(
202203
203204 if tfInfo .Profile .IsLocalGPU {
204205 for _ , injectContainerIndex := range injectContainerIndices {
205- pod .Spec .Containers [injectContainerIndex ].Env = append (pod .Spec .Containers [injectContainerIndex ].Env , v1.EnvVar {
206- Name : constants .NvidiaVisibleAllDeviceEnv ,
207- Value : constants .NvidiaVisibleAllDeviceValue ,
208- }, v1.EnvVar {
206+ envList := pod .Spec .Containers [injectContainerIndex ].Env
207+ if ! lo .ContainsBy (envList , func (env v1.EnvVar ) bool {
208+ return env .Name == constants .PodNamespaceEnv
209+ }) {
210+ envList = append (envList , v1.EnvVar {
211+ Name : constants .PodNamespaceEnv ,
212+ ValueFrom : & v1.EnvVarSource {
213+ FieldRef : & v1.ObjectFieldSelector {
214+ FieldPath : constants .NamespaceFieldRef ,
215+ },
216+ },
217+ })
218+ }
219+ if ! lo .ContainsBy (envList , func (env v1.EnvVar ) bool {
220+ return env .Name == constants .PodNameEnv
221+ }) {
222+ envList = append (envList , v1.EnvVar {
223+ Name : constants .PodNameEnv ,
224+ ValueFrom : & v1.EnvVarSource {
225+ FieldRef : & v1.ObjectFieldSelector {
226+ FieldPath : constants .ResourceNameFieldRef ,
227+ },
228+ },
229+ })
230+ }
231+ if ! lo .ContainsBy (envList , func (env v1.EnvVar ) bool {
232+ return env .Name == constants .ContainerNameEnv
233+ }) {
234+ envList = append (envList , v1.EnvVar {
235+ Name : constants .ContainerNameEnv ,
236+ Value : pod .Spec .Containers [injectContainerIndex ].Name ,
237+ })
238+ }
239+
240+ if ! lo .ContainsBy (envList , func (env v1.EnvVar ) bool {
241+ return env .Name == constants .NvidiaVisibleAllDeviceEnv
242+ }) {
243+ envList = append (envList , v1.EnvVar {
244+ Name : constants .NvidiaVisibleAllDeviceEnv ,
245+ Value : constants .NvidiaVisibleAllDeviceValue ,
246+ })
247+ }
248+
249+ envList = append (envList , v1.EnvVar {
209250 Name : constants .RealNvmlLibPathEnv ,
210251 Value : constants .RealNvmlLibPathValue ,
211252 }, v1.EnvVar {
@@ -221,23 +262,6 @@ func AddTFDefaultClientConfBeforePatch(
221262 }, v1.EnvVar {
222263 Name : constants .HypervisorPortEnv ,
223264 Value : strconv .Itoa (int (getHypervisorPortNumber (pool .Spec .ComponentConfig .Hypervisor ))),
224- }, v1.EnvVar {
225- Name : constants .PodNamespaceEnv ,
226- ValueFrom : & v1.EnvVarSource {
227- FieldRef : & v1.ObjectFieldSelector {
228- FieldPath : constants .NamespaceFieldRef ,
229- },
230- },
231- }, v1.EnvVar {
232- Name : constants .PodNameEnv ,
233- ValueFrom : & v1.EnvVarSource {
234- FieldRef : & v1.ObjectFieldSelector {
235- FieldPath : constants .ResourceNameFieldRef ,
236- },
237- },
238- }, v1.EnvVar {
239- Name : constants .ContainerNameEnv ,
240- Value : pod .Spec .Containers [injectContainerIndex ].Name ,
241265 }, v1.EnvVar {
242266 Name : constants .NGPUPathEnv ,
243267 Value : constants .NGPUPathValue ,
@@ -253,13 +277,15 @@ func AddTFDefaultClientConfBeforePatch(
253277 features := strings .Split (pod .Annotations [constants .DisableFeaturesAnnotation ], "," )
254278 for _ , feature := range features {
255279 if feat , ok := featureShortcutMap [feature ]; ok {
256- pod . Spec . Containers [ injectContainerIndex ]. Env = append (pod . Spec . Containers [ injectContainerIndex ]. Env , v1.EnvVar {
280+ envList = append (envList , v1.EnvVar {
257281 Name : feat .EnvName ,
258282 Value : feat .EnvValue ,
259283 })
260284 }
261285 }
262286 }
287+
288+ pod .Spec .Containers [injectContainerIndex ].Env = envList
263289 }
264290 }
265291}
0 commit comments