diff --git a/CHANGELOG.md b/CHANGELOG.md index 95d8ced1..33ea2c8c 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -2,6 +2,9 @@ ## v1.12.0-rc.4 +* Generate a minimum CDI spec version for improved compatibility. +* Add `--device-name-strategy` options to the `nvidia-ctk cdi generate` command that can be used to control how device names are constructed. +* Set default for CDI device name generation to `index` to generate device names such as `nvidia.com/gpu=0` or `nvidia.com/gpu=1:0` by default. ## v1.12.0-rc.3 * Don't fail if by-path symlinks for DRM devices do not exist diff --git a/cmd/nvidia-ctk/cdi/generate/generate.go b/cmd/nvidia-ctk/cdi/generate/generate.go index aeee4967..23bd17c9 100644 --- a/cmd/nvidia-ctk/cdi/generate/generate.go +++ b/cmd/nvidia-ctk/cdi/generate/generate.go @@ -89,8 +89,8 @@ func (m command) build() *cli.Command { }, &cli.StringFlag{ Name: "device-name-strategy", - Usage: "Specify the strategy for generating device names. One of [type-index | index | uuid]", - Value: deviceNameStrategyTypeIndex, + Usage: "Specify the strategy for generating device names. One of [index | uuid | type-index]", + Value: deviceNameStrategyIndex, Destination: &cfg.deviceNameStrategy, }, &cli.StringFlag{ @@ -117,7 +117,7 @@ func (m command) validateFlags(r *cli.Context, cfg *config) error { return fmt.Errorf("invalid output format: %v", cfg.format) } - _, err := NewDeviceNamer(cfg.deviceNameStrategy) + _, err := newDeviceNamer(cfg.deviceNameStrategy) if err != nil { return err } @@ -126,7 +126,7 @@ func (m command) validateFlags(r *cli.Context, cfg *config) error { } func (m command) run(c *cli.Context, cfg *config) error { - deviceNamer, err := NewDeviceNamer(cfg.deviceNameStrategy) + deviceNamer, err := newDeviceNamer(cfg.deviceNameStrategy) if err != nil { return fmt.Errorf("failed to create device namer: %v", err) } @@ -279,6 +279,8 @@ func (m command) generateSpec(root string, nvidiaCTKPath string, namer deviceNam if err != nil { return nil, fmt.Errorf("failed to get minumum required CDI spec version: %v", err) } + m.logger.Infof("Using minimum required CDI spec version: %s", minVersion) + spec.Version = minVersion return &spec, nil diff --git a/cmd/nvidia-ctk/cdi/generate/namer.go b/cmd/nvidia-ctk/cdi/generate/namer.go index 63131ca9..06e90ea4 100644 --- a/cmd/nvidia-ctk/cdi/generate/namer.go +++ b/cmd/nvidia-ctk/cdi/generate/namer.go @@ -40,9 +40,9 @@ type deviceNameIndex struct { } type deviceNameUUID struct{} -// NewDeviceNamer creates a Device Namer based on the supplied strategy. +// newDeviceNamer creates a Device Namer based on the supplied strategy. // This namer can be used to construct the names for MIG and GPU devices when generating the CDI spec. -func NewDeviceNamer(strategy string) (deviceNamer, error) { +func newDeviceNamer(strategy string) (deviceNamer, error) { switch strategy { case deviceNameStrategyIndex: return deviceNameIndex{}, nil