Skip to content

Commit 2d74919

Browse files
authored
Merge pull request #906 from BSWANG/main
fix vf config format
2 parents e151b4c + 7b94c0e commit 2d74919

File tree

2 files changed

+42
-2
lines changed

2 files changed

+42
-2
lines changed

plugin/driver/vf/vf.go

Lines changed: 11 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -28,8 +28,17 @@ type Configs struct {
2828
EniVFs []*Config `json:"eniVFs"`
2929
}
3030

31-
func parse(config []byte) (*Configs, error) {
31+
func parse(path string, config []byte) (*Configs, error) {
3232
var configs Configs
33+
if path == defaultNUSAConfigPath {
34+
configs.EniVFs = make([]*Config, 0)
35+
err := json.Unmarshal(config, &configs.EniVFs)
36+
if err != nil {
37+
return nil, err
38+
}
39+
return &configs, nil
40+
}
41+
3342
err := json.Unmarshal(config, &configs)
3443
if err != nil {
3544
return nil, err
@@ -45,7 +54,7 @@ func GetBDFbyVFID(path string, vfID int) (string, error) {
4554
if err != nil {
4655
return "", err
4756
}
48-
config, err := parse(configContent)
57+
config, err := parse(path, configContent)
4958
if err != nil {
5059
return "", err
5160
}

plugin/driver/vf/vf_test.go

Lines changed: 31 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -9,6 +9,37 @@ import (
99
"github.com/stretchr/testify/require"
1010
)
1111

12+
func TestParse(t *testing.T) {
13+
t.Run("valid config eni controller", func(t *testing.T) {
14+
config := []byte(`[{"bdf": "0000:1:1.6","mac": "cc:48:15:ff:00:09","vf_id": 9,"pf_id": 2}]`)
15+
configs, err := parse(defaultNUSAConfigPath, config)
16+
require.NoError(t, err)
17+
assert.Len(t, configs.EniVFs, 1)
18+
assert.Equal(t, "0000:1:1.6", configs.EniVFs[0].BDF)
19+
assert.Equal(t, 9, configs.EniVFs[0].VfID)
20+
assert.Equal(t, 2, configs.EniVFs[0].PfID)
21+
})
22+
t.Run("invalid config eni controller", func(t *testing.T) {
23+
config := []byte(`{"eniVFs": [{ "pf_id": 0,"vf_id": 0,"bdf": "0000:1:2.5"}]}`)
24+
_, err := parse(defaultNUSAConfigPath, config)
25+
require.NotNil(t, err)
26+
})
27+
t.Run("valid config vpc eni agent", func(t *testing.T) {
28+
config := []byte(`{"eniVFs": [{"pf_id": 1,"vf_id": 9,"bdf": "0000:1:1.6"}]}`)
29+
configs, err := parse("/var/run/hc-eni-host/vf-topo-vpc", config)
30+
require.NoError(t, err)
31+
assert.Len(t, configs.EniVFs, 1)
32+
assert.Equal(t, "0000:1:1.6", configs.EniVFs[0].BDF)
33+
assert.Equal(t, 9, configs.EniVFs[0].VfID)
34+
assert.Equal(t, 1, configs.EniVFs[0].PfID)
35+
})
36+
t.Run("invalid config vpc eni agent", func(t *testing.T) {
37+
config := []byte(`[{"bdf": "0000:1:1.6","mac": "cc:48:15:ff:00:09","vf_id": 9,"pf_id": 2}]`)
38+
_, err := parse("/var/run/hc-eni-host/vf-topo-vpc", config)
39+
require.NotNil(t, err)
40+
})
41+
}
42+
1243
// TestGetPFBDF tests the getPFBDF function with mocked sysfs structure
1344
func TestGetPFBDF(t *testing.T) {
1445
t.Run("invalid BDF format", func(t *testing.T) {

0 commit comments

Comments
 (0)