Set minimum version on save

Signed-off-by: Evan Lezar <elezar@nvidia.com>
This commit is contained in:
Evan Lezar
2024-05-08 15:48:21 +02:00
parent edda11d647
commit 17c044eef8
5 changed files with 250 additions and 18 deletions

View File

@@ -39,6 +39,8 @@ type builder struct {
mergedDeviceOptions []transform.MergedDeviceOption
noSimplify bool
permissions os.FileMode
transformOnSave transform.Transformer
}
// newBuilder creates a new spec builder with the supplied options
@@ -47,15 +49,23 @@ func newBuilder(opts ...Option) *builder {
for _, opt := range opts {
opt(s)
}
if s.raw != nil {
s.noSimplify = true
vendor, class := parser.ParseQualifier(s.raw.Kind)
s.vendor = vendor
s.class = class
if s.vendor == "" {
s.vendor = vendor
}
if s.class == "" {
s.class = class
}
if s.version == "" || s.version == DetectMinimumVersion {
s.version = s.raw.Version
}
}
if s.version == "" {
s.version = DetectMinimumVersion
if s.version == "" || s.version == DetectMinimumVersion {
s.transformOnSave = &setMinimumRequiredVersion{}
s.version = cdi.CurrentVersion
}
if s.vendor == "" {
s.vendor = "nvidia.com"
@@ -83,13 +93,8 @@ func (o *builder) Build() (*spec, error) {
ContainerEdits: o.edits,
}
}
if raw.Version == DetectMinimumVersion {
minVersion, err := cdi.MinimumRequiredVersion(raw)
if err != nil {
return nil, fmt.Errorf("failed to get minimum required CDI spec version: %v", err)
}
raw.Version = minVersion
if raw.Version == "" {
raw.Version = o.version
}
if !o.noSimplify {
@@ -110,11 +115,11 @@ func (o *builder) Build() (*spec, error) {
}
s := spec{
Spec: raw,
format: o.format,
permissions: o.permissions,
Spec: raw,
format: o.format,
permissions: o.permissions,
transformOnSave: o.transformOnSave,
}
return &s, nil
}