mirror of
https://github.com/NVIDIA/nvidia-container-toolkit
synced 2025-06-26 18:18:24 +00:00
Generate all device using merged transform
The nvcid api is extended to allow for merged device options to be specified. If any options are specified, then a merged device is generated. Signed-off-by: Evan Lezar <elezar@nvidia.com>
This commit is contained in:
@@ -33,8 +33,10 @@ type builder struct {
|
||||
deviceSpecs []specs.Device
|
||||
edits specs.ContainerEdits
|
||||
format string
|
||||
noSimplify bool
|
||||
permissions os.FileMode
|
||||
|
||||
mergedDeviceOptions []transform.MergedDeviceOption
|
||||
noSimplify bool
|
||||
permissions os.FileMode
|
||||
}
|
||||
|
||||
// newBuilder creates a new spec builder with the supplied options
|
||||
@@ -95,6 +97,16 @@ func (o *builder) Build() (*spec, error) {
|
||||
}
|
||||
}
|
||||
|
||||
if len(o.mergedDeviceOptions) > 0 {
|
||||
merge, err := transform.NewMergedDevice(o.mergedDeviceOptions...)
|
||||
if err != nil {
|
||||
return nil, fmt.Errorf("failed to create merged device transformer: %v", err)
|
||||
}
|
||||
if err := merge.Transform(raw); err != nil {
|
||||
return nil, fmt.Errorf("failed to merge devices: %v", err)
|
||||
}
|
||||
}
|
||||
|
||||
s := spec{
|
||||
Spec: raw,
|
||||
format: o.format,
|
||||
@@ -169,3 +181,10 @@ func WithPermissions(permissions os.FileMode) Option {
|
||||
o.permissions = permissions
|
||||
}
|
||||
}
|
||||
|
||||
// WithMergedDeviceOptions sets the options for generating a merged device.
|
||||
func WithMergedDeviceOptions(opts ...transform.MergedDeviceOption) Option {
|
||||
return func(o *builder) {
|
||||
o.mergedDeviceOptions = opts
|
||||
}
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user