Skip to content

Commit d2952b0

Browse files
author
Evan Lezar
committed
Merge branch 'fix-from-discover' into 'main'
Ensure that an empty discoverer returns valid edits See merge request nvidia/container-toolkit/container-toolkit!258
2 parents 0a2083d + 41f1b93 commit d2952b0

File tree

4 files changed

+48
-6
lines changed

4 files changed

+48
-6
lines changed

cmd/nvidia-ctk/cdi/generate/generate.go

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -208,7 +208,7 @@ func (m command) generateSpec(root string) (*specs.Spec, error) {
208208

209209
deviceSpecs = append(deviceSpecs, allDevice)
210210

211-
allEdits := cdi.ContainerEdits{}
211+
allEdits := edits.NewContainerEdits()
212212

213213
ipcs, err := NewIPCDiscoverer(m.logger, root)
214214
if err != nil {
@@ -316,7 +316,7 @@ func (m command) generateDeviceSpecs(devicelib device.Interface, root string) ([
316316

317317
// createAllDevice creates an 'all' device which combines the edits from the previous devices
318318
func createAllDevice(deviceSpecs []specs.Device) specs.Device {
319-
edits := cdi.ContainerEdits{}
319+
edits := edits.NewContainerEdits()
320320

321321
for _, d := range deviceSpecs {
322322
edit := cdi.ContainerEdits{

internal/edits/edits.go

Lines changed: 11 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -22,6 +22,7 @@ import (
2222
"github.com/NVIDIA/nvidia-container-toolkit/internal/discover"
2323
"github.com/NVIDIA/nvidia-container-toolkit/internal/oci"
2424
"github.com/container-orchestrated-devices/container-device-interface/pkg/cdi"
25+
"github.com/container-orchestrated-devices/container-device-interface/specs-go"
2526
ociSpecs "github.com/opencontainers/runtime-spec/specs-go"
2627
"github.com/sirupsen/logrus"
2728
)
@@ -63,7 +64,7 @@ func FromDiscoverer(d discover.Discover) (*cdi.ContainerEdits, error) {
6364
return nil, fmt.Errorf("failed to discover hooks: %v", err)
6465
}
6566

66-
c := cdi.ContainerEdits{}
67+
c := NewContainerEdits()
6768
for _, d := range devices {
6869
edits, err := device(d).toEdits()
6970
if err != nil {
@@ -80,7 +81,15 @@ func FromDiscoverer(d discover.Discover) (*cdi.ContainerEdits, error) {
8081
c.Append(hook(h).toEdits())
8182
}
8283

83-
return &c, nil
84+
return c, nil
85+
}
86+
87+
// NewContainerEdits is a utility function to create a CDI ContainerEdits struct.
88+
func NewContainerEdits() *cdi.ContainerEdits {
89+
c := cdi.ContainerEdits{
90+
ContainerEdits: &specs.ContainerEdits{},
91+
}
92+
return &c
8493
}
8594

8695
// Modify applies the defined edits to the incoming OCI spec

internal/edits/edits_test.go

Lines changed: 31 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,31 @@
1+
/**
2+
# Copyright (c) NVIDIA CORPORATION. All rights reserved.
3+
#
4+
# Licensed under the Apache License, Version 2.0 (the "License");
5+
# you may not use this file except in compliance with the License.
6+
# You may obtain a copy of the License at
7+
#
8+
# http://www.apache.org/licenses/LICENSE-2.0
9+
#
10+
# Unless required by applicable law or agreed to in writing, software
11+
# distributed under the License is distributed on an "AS IS" BASIS,
12+
# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
13+
# See the License for the specific language governing permissions and
14+
# limitations under the License.
15+
**/
16+
17+
package edits
18+
19+
import (
20+
"testing"
21+
22+
"github.com/NVIDIA/nvidia-container-toolkit/internal/discover"
23+
"github.com/stretchr/testify/require"
24+
)
25+
26+
func TestFromDiscovererAllowsMountsToIterate(t *testing.T) {
27+
edits, err := FromDiscoverer(discover.None{})
28+
require.NoError(t, err)
29+
30+
require.Empty(t, edits.Mounts)
31+
}

internal/modifier/discover_test.go

Lines changed: 4 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -37,8 +37,10 @@ func TestDiscoverModifier(t *testing.T) {
3737
expectedSpec *specs.Spec
3838
}{
3939
{
40-
description: "empty discoverer does not modify spec",
41-
discover: &discover.DiscoverMock{},
40+
description: "empty discoverer does not modify spec",
41+
spec: &specs.Spec{},
42+
discover: &discover.DiscoverMock{},
43+
expectedSpec: &specs.Spec{},
4244
},
4345
{
4446
description: "failed hooks discoverer returns error",

0 commit comments

Comments
 (0)