From d1ed4fccd4a7021d3aac8b02fce83f4a310182b2 Mon Sep 17 00:00:00 2001 From: Cyclinder Kuo Date: Tue, 4 Mar 2025 19:32:50 +0800 Subject: [PATCH] SpiderMultusConfig: Fix error json tag for min/maxTxRateMbps --- docs/usage/spider-multus-config-zh_CN.md | 10 ++++----- pkg/constant/k8s.go | 1 + pkg/multuscniconfig/utils.go | 4 ++-- test/e2e/spidermultus/spidermultus_test.go | 26 ++++++++++++++++++++-- 4 files changed, 32 insertions(+), 9 deletions(-) diff --git a/docs/usage/spider-multus-config-zh_CN.md b/docs/usage/spider-multus-config-zh_CN.md index dec0372817..68bdb4fcd5 100644 --- a/docs/usage/spider-multus-config-zh_CN.md +++ b/docs/usage/spider-multus-config-zh_CN.md @@ -387,9 +387,9 @@ spec: config: '{"cniVersion":"0.3.1","name":"sriov-rdma","plugins":[{"vlan":100,"type":"sriov","ipam":{"type":"spiderpool"}},{"type":"rdma"},{"type":"coordinator"}]}' ``` -- 配置 Sriov 网络带宽 +- 限制 Sriov VF 传输带宽 -我们可通过 SpiderMultusConfig 配置 Sriov 的网络带宽: +我们可通过 SpiderMultusConfig 限制 Sriov VF 传输带宽: ```bash cat < `minTxRateMbps` 和 `MaxTxRateMbps` 配置此 CNI 配置文件的网络传输带宽范围为: [100,1000] +> `min_tx_rateMbps` 和 `MaxTxRateMbps` 配置此 CNI 配置文件的网络传输带宽范围为: [100,1000] 创建后,查看对应的 Multus NetworkAttachmentDefinition CR: @@ -430,7 +430,7 @@ metadata: name: sriov-bandwidth uid: b08ce054-1ae8-414a-b37c-7fd6988b1b8e spec: - config: '{"cniVersion":"0.3.1","name":"sriov-bandwidth","plugins":[{"vlan":100,"type":"sriov","minTxRate": 100, "maxTxRate": 1000,"ipam":{"type":"spiderpool"}},{"type":"rdma"},{"type":"coordinator"}]}' + config: '{"cniVersion":"0.3.1","name":"sriov-bandwidth","plugins":[{"vlan":100,"type":"sriov","min_tx_rate": 100, "max_tx_rate": 1000,"ipam":{"type":"spiderpool"}},{"type":"rdma"},{"type":"coordinator"}]}' ``` - 配置 Sriov VF 的 MTU 大小 @@ -475,7 +475,7 @@ metadata: name: sriov-bandwidth uid: b08ce054-1ae8-414a-b37c-7fd6988b1b8e spec: - config: '{"cniVersion":"0.3.1","name":"sriov-bandwidth","plugins":[{"vlan":100,"type":"sriov","minTxRate": 100, "maxTxRate": 1000,"ipam":{"type":"spiderpool"}},{"type":"rdma"},{"type":"coordinator"},{"type":"tuning","mtu":8000}]}' + config: '{"cniVersion":"0.3.1","name":"sriov-bandwidth","plugins":[{"vlan":100,"type":"sriov","min_tx_rate": 0, "max_tx_rate": 0,"ipam":{"type":"spiderpool"}},{"type":"rdma"},{"type":"coordinator"},{"type":"tuning","mtu":8000}]}' ``` ### Ifacer 使用配置 diff --git a/pkg/constant/k8s.go b/pkg/constant/k8s.go index 4213d39582..cb9f5cfadf 100644 --- a/pkg/constant/k8s.go +++ b/pkg/constant/k8s.go @@ -170,6 +170,7 @@ const ( IPoIBCNI = "ipoib" OvsCNI = "ovs" CustomCNI = "custom" + TuningCNI = "tuning" ) const WebhookMutateRoute = "/webhook-health-check" diff --git a/pkg/multuscniconfig/utils.go b/pkg/multuscniconfig/utils.go index 5decf02163..e9011207f8 100644 --- a/pkg/multuscniconfig/utils.go +++ b/pkg/multuscniconfig/utils.go @@ -52,9 +52,9 @@ type IPvlanNetConf struct { type SRIOVNetConf struct { Vlan *int32 `json:"vlan,omitempty"` // Mbps, 0 = disable rate limiting - MinTxRate *int `json:"minTxRate,omitempty"` + MinTxRate *int `json:"min_tx_rate,omitempty"` // Mbps, 0 = disable rate limiting - MaxTxRate *int `json:"maxTxRate,omitempty"` + MaxTxRate *int `json:"max_tx_rate,omitempty"` Type string `json:"type"` DeviceID string `json:"deviceID,omitempty"` IPAM *spiderpoolcmd.IPAMConfig `json:"ipam,omitempty"` diff --git a/test/e2e/spidermultus/spidermultus_test.go b/test/e2e/spidermultus/spidermultus_test.go index 5707c37e2a..14794b69ab 100644 --- a/test/e2e/spidermultus/spidermultus_test.go +++ b/test/e2e/spidermultus/spidermultus_test.go @@ -1195,7 +1195,7 @@ var _ = Describe("test spidermultus", Label("SpiderMultusConfig"), func() { }, common.SpiderSyncMultusTime, common.ForcedWaitingTime).Should(BeTrue()) }) - It("test the multusConfig with mtu size for sriov", Label("M00035"), func() { + It("test the multusConfig with for sriov", Label("M00035"), func() { smcName := "mtu" + common.GenerateString(10, true) smc := &v2beta1.SpiderMultusConfig{ ObjectMeta: metav1.ObjectMeta{ @@ -1208,6 +1208,8 @@ var _ = Describe("test spidermultus", Label("SpiderMultusConfig"), func() { MTU: ptr.To(int32(-1)), ResourceName: ptr.To("spidernet.io/test"), RdmaIsolation: ptr.To(true), + MinTxRateMbps: ptr.To(int(10)), + MaxTxRateMbps: ptr.To(int(30)), }, }, } @@ -1225,7 +1227,27 @@ var _ = Describe("test spidermultus", Label("SpiderMultusConfig"), func() { nad, err := frame.GetMultusInstance(smcName, namespace) if err == nil { GinkgoWriter.Printf("Multus Nad created: %+v \n", nad.Spec.Config) - return true + config, err := libcni.ConfListFromBytes([]byte(nad.Spec.Config)) + Expect(err).NotTo(HaveOccurred()) + + sriov, tuning := false, false + for _, p := range config.Plugins { + c := make(map[string]interface{}) + err = json.Unmarshal(p.Bytes, &c) + Expect(err).NotTo(HaveOccurred()) + + if c["type"] == constant.SriovCNI { + Expect(c["minTxRateMbps"]).To(Equal(10)) + Expect(c["maxTxRateMbps"]).To(Equal(30)) + sriov = true + } + + if c["type"] == constant.TuningCNI { + Expect(c["mtu"]).To(Equal(1400)) + tuning = true + } + } + return sriov && tuning } Expect(err.Error()).To(ContainSubstring("not found"))