Add infinibandGUID runtime config to delegate netconf

This commit extend the various network conf methods
to translate `infiniband-guid` network attachment configuration
to `infinibandGUID` CNI runtime config.

- Update relevant methods in types package
- Update unit tests
This commit is contained in:
Adrian Chiris
2020-04-27 10:23:26 +03:00
committed by Tomofumi Hayashi
parent 46be700cb5
commit 2796202d8c
3 changed files with 39 additions and 18 deletions

View File

@@ -211,6 +211,12 @@ func parsePodNetworkAnnotation(podNetworks, defaultNamespace string) ([]*types.N
return nil, logging.Errorf("parsePodNetworkAnnotation: failed to mac: %v", err) return nil, logging.Errorf("parsePodNetworkAnnotation: failed to mac: %v", err)
} }
} }
if n.InfinibandGUIDRequest != "" {
// validate GUID address
if _, err := net.ParseMAC(n.InfinibandGUIDRequest); err != nil {
return nil, logging.Errorf("parsePodNetworkAnnotation: failed to validate infiniband GUID: %v", err)
}
}
if n.IPRequest != nil { if n.IPRequest != nil {
for _, ip := range n.IPRequest { for _, ip := range n.IPRequest {
// validate IP address // validate IP address

View File

@@ -119,6 +119,9 @@ func LoadDelegateNetConf(bytes []byte, net *NetworkSelectionElement, deviceID st
if net.GatewayRequest != nil { if net.GatewayRequest != nil {
delegateConf.GatewayRequest = append(delegateConf.GatewayRequest, net.GatewayRequest...) delegateConf.GatewayRequest = append(delegateConf.GatewayRequest, net.GatewayRequest...)
} }
if net.InfinibandGUIDRequest != "" {
delegateConf.InfinibandGUIDRequest = net.InfinibandGUIDRequest
}
} }
delegateConf.Bytes = bytes delegateConf.Bytes = bytes
@@ -148,6 +151,9 @@ func MergeCNIRuntimeConfig(runtimeConfig *RuntimeConfig, delegate *DelegateNetCo
if delegate.MacRequest != "" { if delegate.MacRequest != "" {
runtimeConfig.Mac = delegate.MacRequest runtimeConfig.Mac = delegate.MacRequest
} }
if delegate.InfinibandGUIDRequest != "" {
runtimeConfig.InfinibandGUID = delegate.InfinibandGUIDRequest
}
} }
return runtimeConfig return runtimeConfig
@@ -187,6 +193,9 @@ func CreateCNIRuntimeConf(args *skel.CmdArgs, k8sArgs *K8sArgs, ifName string, r
if len(rc.Mac) != 0 { if len(rc.Mac) != 0 {
capabilityArgs["mac"] = rc.Mac capabilityArgs["mac"] = rc.Mac
} }
if len(rc.InfinibandGUID) != 0 {
capabilityArgs["infinibandGUID"] = rc.InfinibandGUID
}
rt.CapabilityArgs = capabilityArgs rt.CapabilityArgs = capabilityArgs
} }
return rt return rt

View File

@@ -659,18 +659,20 @@ var _ = Describe("config operations", func() {
} }
networkSelection := &NetworkSelectionElement{ networkSelection := &NetworkSelectionElement{
Name: "testname", Name: "testname",
InterfaceRequest: "testIF1", InterfaceRequest: "testIF1",
MacRequest: "c2:11:22:33:44:66", MacRequest: "c2:11:22:33:44:66",
IPRequest: []string{"10.0.0.1/24"}, InfinibandGUIDRequest: "24:8a:07:03:00:8d:ae:2e",
BandwidthRequest: bandwidthEntry1, IPRequest: []string{"10.0.0.1/24"},
PortMappingsRequest: []*PortMapEntry{portMapEntry1}, BandwidthRequest: bandwidthEntry1,
PortMappingsRequest: []*PortMapEntry{portMapEntry1},
} }
delegateConf, err := LoadDelegateNetConf([]byte(cniConfig), networkSelection, "") delegateConf, err := LoadDelegateNetConf([]byte(cniConfig), networkSelection, "")
Expect(err).NotTo(HaveOccurred()) Expect(err).NotTo(HaveOccurred())
Expect(delegateConf.IfnameRequest).To(Equal(networkSelection.InterfaceRequest)) Expect(delegateConf.IfnameRequest).To(Equal(networkSelection.InterfaceRequest))
Expect(delegateConf.MacRequest).To(Equal(networkSelection.MacRequest)) Expect(delegateConf.MacRequest).To(Equal(networkSelection.MacRequest))
Expect(delegateConf.InfinibandGUIDRequest).To(Equal(networkSelection.InfinibandGUIDRequest))
Expect(delegateConf.IPRequest).To(Equal(networkSelection.IPRequest)) Expect(delegateConf.IPRequest).To(Equal(networkSelection.IPRequest))
Expect(delegateConf.BandwidthRequest).To(Equal(networkSelection.BandwidthRequest)) Expect(delegateConf.BandwidthRequest).To(Equal(networkSelection.BandwidthRequest))
Expect(delegateConf.PortMappingsRequest).To(Equal(networkSelection.PortMappingsRequest)) Expect(delegateConf.PortMappingsRequest).To(Equal(networkSelection.PortMappingsRequest))
@@ -704,12 +706,13 @@ var _ = Describe("config operations", func() {
} }
networkSelection := &NetworkSelectionElement{ networkSelection := &NetworkSelectionElement{
Name: "testname", Name: "testname",
InterfaceRequest: "testIF1", InterfaceRequest: "testIF1",
MacRequest: "c2:11:22:33:44:66", MacRequest: "c2:11:22:33:44:66",
IPRequest: []string{"10.0.0.1/24"}, InfinibandGUIDRequest: "24:8a:07:03:00:8d:ae:2e",
BandwidthRequest: bandwidthEntry1, IPRequest: []string{"10.0.0.1/24"},
PortMappingsRequest: []*PortMapEntry{portMapEntry1}, BandwidthRequest: bandwidthEntry1,
PortMappingsRequest: []*PortMapEntry{portMapEntry1},
} }
delegate, err := LoadDelegateNetConf([]byte(conf), networkSelection, "") delegate, err := LoadDelegateNetConf([]byte(conf), networkSelection, "")
delegate.MasterPlugin = true delegate.MasterPlugin = true
@@ -717,6 +720,7 @@ var _ = Describe("config operations", func() {
runtimeConf := MergeCNIRuntimeConfig(&RuntimeConfig{}, delegate) runtimeConf := MergeCNIRuntimeConfig(&RuntimeConfig{}, delegate)
Expect(runtimeConf.PortMaps).To(BeNil()) Expect(runtimeConf.PortMaps).To(BeNil())
Expect(runtimeConf.Bandwidth).To(BeNil()) Expect(runtimeConf.Bandwidth).To(BeNil())
Expect(runtimeConf.InfinibandGUID).To(Equal(""))
}) })
It("test MergeCNIRuntimeConfig with delegate plugin", func() { It("test MergeCNIRuntimeConfig with delegate plugin", func() {
@@ -739,12 +743,13 @@ var _ = Describe("config operations", func() {
} }
networkSelection := &NetworkSelectionElement{ networkSelection := &NetworkSelectionElement{
Name: "testname", Name: "testname",
InterfaceRequest: "testIF1", InterfaceRequest: "testIF1",
MacRequest: "c2:11:22:33:44:66", MacRequest: "c2:11:22:33:44:66",
IPRequest: []string{"10.0.0.1/24"}, InfinibandGUIDRequest: "24:8a:07:03:00:8d:ae:2e",
BandwidthRequest: bandwidthEntry1, IPRequest: []string{"10.0.0.1/24"},
PortMappingsRequest: []*PortMapEntry{portMapEntry1}, BandwidthRequest: bandwidthEntry1,
PortMappingsRequest: []*PortMapEntry{portMapEntry1},
} }
delegate, err := LoadDelegateNetConf([]byte(conf), networkSelection, "") delegate, err := LoadDelegateNetConf([]byte(conf), networkSelection, "")
Expect(err).NotTo(HaveOccurred()) Expect(err).NotTo(HaveOccurred())
@@ -755,5 +760,6 @@ var _ = Describe("config operations", func() {
Expect(runtimeConf.Bandwidth).To(Equal(bandwidthEntry1)) Expect(runtimeConf.Bandwidth).To(Equal(bandwidthEntry1))
Expect(len(runtimeConf.IPs)).To(BeEquivalentTo(1)) Expect(len(runtimeConf.IPs)).To(BeEquivalentTo(1))
Expect(runtimeConf.Mac).To(Equal("c2:11:22:33:44:66")) Expect(runtimeConf.Mac).To(Equal("c2:11:22:33:44:66"))
Expect(runtimeConf.InfinibandGUID).To(Equal("24:8a:07:03:00:8d:ae:2e"))
}) })
}) })