Skip to content

Commit 8cb8f03

Browse files
authored
fix: correct device filter initialization order (#857)
Ensure DevicePluginFilterDevice is initialized before FilterDeviceToRegister. This fixes the initialization sequence to make device filtering work. Signed-off-by: Nimbus318 <[email protected]>
1 parent b512861 commit 8cb8f03

File tree

3 files changed

+24
-9
lines changed

3 files changed

+24
-9
lines changed

pkg/device-plugin/nvidiadevice/nvinternal/plugin/manager/nvml.go

Lines changed: 6 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -43,14 +43,19 @@ type nvmlmanager manager
4343

4444
// GetPlugins returns the plugins associated with the NVML resources available on the node
4545
func (m *nvmlmanager) GetPlugins() ([]plugin.Interface, error) {
46+
sConfig, mode, err := plugin.LoadNvidiaDevicePluginConfig()
47+
if err != nil {
48+
return nil, fmt.Errorf("failed to load nvidia plugin config: %v", err)
49+
}
50+
4651
rms, err := rm.NewNVMLResourceManagers(m.nvmllib, m.config)
4752
if err != nil {
4853
return nil, fmt.Errorf("failed to construct NVML resource managers: %v", err)
4954
}
5055

5156
var plugins []plugin.Interface
5257
for _, r := range rms {
53-
plugins = append(plugins, plugin.NewNvidiaDevicePlugin(m.config, r, m.cdiHandler, m.cdiEnabled))
58+
plugins = append(plugins, plugin.NewNvidiaDevicePlugin(m.config, r, m.cdiHandler, m.cdiEnabled, sConfig, mode))
5459
}
5560
return plugins, nil
5661
}

pkg/device-plugin/nvidiadevice/nvinternal/plugin/manager/tegra.go

Lines changed: 6 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -43,14 +43,19 @@ type tegramanager manager
4343

4444
// GetPlugins returns the plugins associated with the NVML resources available on the node
4545
func (m *tegramanager) GetPlugins() ([]plugin.Interface, error) {
46+
sConfig, mode, err := plugin.LoadNvidiaDevicePluginConfig()
47+
if err != nil {
48+
return nil, fmt.Errorf("failed to load nvidia plugin config: %v", err)
49+
}
50+
4651
rms, err := rm.NewTegraResourceManagers(m.config)
4752
if err != nil {
4853
return nil, fmt.Errorf("failed to construct NVML resource managers: %v", err)
4954
}
5055

5156
var plugins []plugin.Interface
5257
for _, r := range rms {
53-
plugins = append(plugins, plugin.NewNvidiaDevicePlugin(m.config, r, m.cdiHandler, m.cdiEnabled))
58+
plugins = append(plugins, plugin.NewNvidiaDevicePlugin(m.config, r, m.cdiHandler, m.cdiEnabled, sConfig, mode))
5459
}
5560
return plugins, nil
5661
}

pkg/device-plugin/nvidiadevice/nvinternal/plugin/server.go

Lines changed: 12 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -135,21 +135,26 @@ func readFromConfigFile(sConfig *nvidia.NvidiaConfig) (string, error) {
135135
return mode, nil
136136
}
137137

138-
// NewNvidiaDevicePlugin returns an initialized NvidiaDevicePlugin
139-
func NewNvidiaDevicePlugin(config *nvidia.DeviceConfig, resourceManager rm.ResourceManager, cdiHandler cdi.Interface, cdiEnabled bool) *NvidiaDevicePlugin {
140-
_, name := resourceManager.Resource().Split()
141-
142-
deviceListStrategies, _ := spec.NewDeviceListStrategies(*config.Flags.Plugin.DeviceListStrategy)
143-
138+
func LoadNvidiaDevicePluginConfig() (*device.Config, string, error) {
144139
sConfig, err := device.LoadConfig(*ConfigFile)
145-
klog.Infoln("reading config=", config, "resourceName", config.ResourceName, "configfile=", *ConfigFile, "sconfig=", sConfig)
146140
if err != nil {
147141
klog.Fatalf(`failed to load device config file %s: %v`, *ConfigFile, err)
148142
}
149143
mode, err := readFromConfigFile(&sConfig.NvidiaConfig)
150144
if err != nil {
151145
klog.Errorf("readFromConfigFile err:%s", err.Error())
152146
}
147+
return sConfig, mode, nil
148+
}
149+
150+
// NewNvidiaDevicePlugin returns an initialized NvidiaDevicePlugin
151+
func NewNvidiaDevicePlugin(config *nvidia.DeviceConfig, resourceManager rm.ResourceManager, cdiHandler cdi.Interface, cdiEnabled bool, sConfig *device.Config, mode string) *NvidiaDevicePlugin {
152+
_, name := resourceManager.Resource().Split()
153+
154+
deviceListStrategies, _ := spec.NewDeviceListStrategies(*config.Flags.Plugin.DeviceListStrategy)
155+
156+
klog.Infoln("reading config=", config, "resourceName", config.ResourceName, "configfile=", *ConfigFile, "sconfig=", sConfig)
157+
153158
// Initialize devices with configuration
154159
if err := device.InitDevicesWithConfig(sConfig); err != nil {
155160
klog.Fatalf("failed to initialize devices: %v", err)

0 commit comments

Comments
 (0)