Skip to content

Commit d91bdef

Browse files
committed
Assert CNI version greater than equal to 1.0.0
1 parent ac4798a commit d91bdef

File tree

18 files changed

+2186
-34
lines changed

18 files changed

+2186
-34
lines changed

go.mod

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -29,6 +29,7 @@ require (
2929
github.com/apparentlymart/go-cidr v1.1.0
3030
github.com/aws/aws-sdk-go v1.50.25
3131
github.com/blang/semver/v4 v4.0.0
32+
github.com/containernetworking/cni v1.3.0
3233
github.com/coreos/stream-metadata-go v0.4.9
3334
github.com/davecgh/go-spew v1.1.2-0.20180830191138-d8f796af33cc
3435
github.com/distribution/distribution/v3 v3.0.0-20230530204932-ba46c769b3d1

go.sum

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -266,6 +266,8 @@ github.com/containerd/ttrpc v1.2.6 h1:zG+Kn5EZ6MUYCS1t2Hmt2J4tMVaLSFEJVOraDQwNPC
266266
github.com/containerd/ttrpc v1.2.6/go.mod h1:YCXHsb32f+Sq5/72xHubdiJRQY9inL4a4ZQrAbN1q9o=
267267
github.com/containerd/typeurl/v2 v2.2.2 h1:3jN/k2ysKuPCsln5Qv8bzR9cxal8XjkxPogJfSNO31k=
268268
github.com/containerd/typeurl/v2 v2.2.2/go.mod h1:95ljDnPfD3bAbDJRugOiShd/DlAAsxGtUBhJxIn7SCk=
269+
github.com/containernetworking/cni v1.3.0 h1:v6EpN8RznAZj9765HhXQrtXgX+ECGebEYEmnuFjskwo=
270+
github.com/containernetworking/cni v1.3.0/go.mod h1:Bs8glZjjFfGPHMw6hQu82RUgEPNGEaBb9KS5KtNMnJ4=
269271
github.com/coreos/go-oidc v2.3.0+incompatible h1:+5vEsrgprdLjjQ9FzIKAzQz1wwPD+83hQRfUIPh7rO0=
270272
github.com/coreos/go-oidc v2.3.0+incompatible/go.mod h1:CgnwVTmzoESiwO9qyAFEMiHoZ1nMCKZlZ9V6mm3/LKc=
271273
github.com/coreos/go-semver v0.3.0/go.mod h1:nnelYz7RCh+5ahJtPPxZlU+153eP4D4r3EedlOD2RNk=

test/extended/networking/network_segmentation.go

Lines changed: 30 additions & 34 deletions
Original file line numberDiff line numberDiff line change
@@ -17,8 +17,10 @@ import (
1717
"k8s.io/apimachinery/pkg/runtime/schema"
1818
"k8s.io/client-go/dynamic"
1919

20+
cniversion "github.com/containernetworking/cni/pkg/version"
2021
nadapi "github.com/k8snetworkplumbingwg/network-attachment-definition-client/pkg/apis/k8s.cni.cncf.io/v1"
2122
nadclient "github.com/k8snetworkplumbingwg/network-attachment-definition-client/pkg/client/clientset/versioned/typed/k8s.cni.cncf.io/v1"
23+
ovncnitypes "github.com/ovn-org/ovn-kubernetes/go-controller/pkg/cni/types"
2224

2325
kubeauthorizationv1 "k8s.io/api/authorization/v1"
2426
v1 "k8s.io/api/core/v1"
@@ -1524,6 +1526,32 @@ spec:
15241526
`
15251527
}
15261528

1529+
func assertNADConfig(nad *nadapi.NetworkAttachmentDefinition, expectedLegacyNetworkName, expectedNetworkName, expectedNadName string) {
1530+
cniConfig := ovncnitypes.NetConf{}
1531+
err := json.Unmarshal([]byte(nad.Spec.Config), &cniConfig)
1532+
Expect(err).NotTo(HaveOccurred())
1533+
1534+
Expect(cniversion.GreaterThanOrEqualTo(cniConfig.CNIVersion, "1.0.0")).To(BeTrue())
1535+
1536+
jsonTemplate := `{
1537+
"cniVersion":"%s",
1538+
"type": "ovn-k8s-cni-overlay",
1539+
"name": "%s",
1540+
"netAttachDefName": "%s",
1541+
"topology": "layer2",
1542+
"role": "secondary",
1543+
"subnets": "10.100.0.0/16"
1544+
}`
1545+
1546+
nadJSONLegacy := fmt.Sprintf(jsonTemplate, cniConfig.CNIVersion, expectedLegacyNetworkName, expectedNadName)
1547+
nadJSON := fmt.Sprintf(jsonTemplate, cniConfig.CNIVersion, expectedNetworkName, expectedNadName)
1548+
1549+
ExpectWithOffset(1, nad.Spec.Config).To(SatisfyAny(
1550+
MatchJSON(nadJSONLegacy),
1551+
MatchJSON(nadJSON),
1552+
))
1553+
}
1554+
15271555
func assertNetAttachDefManifest(nadClient nadclient.K8sCniCncfIoV1Interface, namespace, udnName, udnUID string) {
15281556
nad, err := nadClient.NetworkAttachmentDefinitions(namespace).Get(context.Background(), udnName, metav1.GetOptions{})
15291557
Expect(err).NotTo(HaveOccurred())
@@ -1539,28 +1567,12 @@ func assertNetAttachDefManifest(nadClient nadclient.K8sCniCncfIoV1Interface, nam
15391567
Controller: pointer.Bool(true),
15401568
}}))
15411569

1542-
jsonTemplate := `{
1543-
"cniVersion":"1.0.0",
1544-
"type": "ovn-k8s-cni-overlay",
1545-
"name": "%s",
1546-
"netAttachDefName": "%s",
1547-
"topology": "layer2",
1548-
"role": "secondary",
1549-
"subnets": "10.100.0.0/16"
1550-
}`
1551-
15521570
// REMOVEME(trozet): after network name has been updated to use underscores in OVNK
15531571
expectedLegacyNetworkName := namespace + "." + udnName
15541572
expectedNetworkName := namespace + "_" + udnName
15551573
expectedNadName := namespace + "/" + udnName
15561574

1557-
nadJSONLegacy := fmt.Sprintf(jsonTemplate, expectedLegacyNetworkName, expectedNadName)
1558-
nadJSON := fmt.Sprintf(jsonTemplate, expectedNetworkName, expectedNadName)
1559-
1560-
ExpectWithOffset(1, nad.Spec.Config).To(SatisfyAny(
1561-
MatchJSON(nadJSONLegacy),
1562-
MatchJSON(nadJSON),
1563-
))
1575+
assertNADConfig(nad, expectedLegacyNetworkName, expectedNetworkName, expectedNadName)
15641576
}
15651577

15661578
func validateUDNStatusReportsConsumers(client dynamic.Interface, udnNamesapce, udnName, expectedPodName string) error {
@@ -1626,23 +1638,7 @@ func assertClusterNADManifest(nadClient nadclient.K8sCniCncfIoV1Interface, names
16261638
expectedNetworkName := "cluster_udn_" + udnName
16271639
expectedNadName := namespace + "/" + udnName
16281640

1629-
jsonTemplate := `{
1630-
"cniVersion":"1.0.0",
1631-
"type": "ovn-k8s-cni-overlay",
1632-
"name": "%s",
1633-
"netAttachDefName": "%s",
1634-
"topology": "layer2",
1635-
"role": "secondary",
1636-
"subnets": "10.100.0.0/16"
1637-
}`
1638-
1639-
nadJSONLegacy := fmt.Sprintf(jsonTemplate, expectedLegacyNetworkName, expectedNadName)
1640-
nadJSON := fmt.Sprintf(jsonTemplate, expectedNetworkName, expectedNadName)
1641-
1642-
ExpectWithOffset(1, nad.Spec.Config).To(SatisfyAny(
1643-
MatchJSON(nadJSONLegacy),
1644-
MatchJSON(nadJSON),
1645-
))
1641+
assertNADConfig(nad, expectedLegacyNetworkName, expectedNetworkName, expectedNadName)
16461642
}
16471643

16481644
func validateClusterUDNStatusReportsActiveNamespacesFunc(client dynamic.Interface, cUDNName string, expectedActiveNsNames ...string) func() error {

vendor/github.com/containernetworking/cni/LICENSE

Lines changed: 202 additions & 0 deletions
Some generated files are not rendered by default. Learn more about customizing how changed files appear on GitHub.

0 commit comments

Comments
 (0)