Skip to content

Commit 0ea52bf

Browse files
Merge pull request #2660 from jluhrsen/4.19-sync-from-4.20-07-09-2025
[release-4.19] OCPBUGS-48709: DownStream Merge Sync from 4.20 [07-09-2025]
2 parents 0b613e3 + 2a58872 commit 0ea52bf

File tree

140 files changed

+4879
-1944
lines changed

Some content is hidden

Large Commits have some content hidden by default. Use the searchbox below for content that may be hidden.

140 files changed

+4879
-1944
lines changed

.github/workflows/test.yml

Lines changed: 36 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -315,6 +315,7 @@ jobs:
315315
316316
- name: Free up disk space
317317
run: |
318+
df -h
318319
sudo rm -rf /usr/local/lib/android/sdk
319320
sudo apt-get update
320321
sudo eatmydata apt-get purge --auto-remove -y \
@@ -323,6 +324,17 @@ jobs:
323324
llvm-* microsoft-edge-stable mono-* \
324325
msbuild mysql-server-core-* php-* php7* \
325326
powershell temurin-* zulu-*
327+
# clean unused packages
328+
sudo apt-get autoclean
329+
sudo apt-get autoremove -y
330+
# clean apt cache
331+
sudo apt-get clean
332+
sudo docker system prune -af --volumes
333+
df -h
334+
sudo swapon --show
335+
sudo swapoff -a
336+
sudo rm -f /mnt/swapfile
337+
df -h
326338
327339
- name: Download test-image-master
328340
uses: actions/download-artifact@v4
@@ -507,6 +519,7 @@ jobs:
507519
508520
- name: Free up disk space
509521
run: |
522+
df -h
510523
sudo rm -rf /usr/local/lib/android/sdk
511524
sudo apt-get update
512525
sudo eatmydata apt-get purge --auto-remove -y \
@@ -515,7 +528,17 @@ jobs:
515528
llvm-* microsoft-edge-stable mono-* \
516529
msbuild mysql-server-core-* php-* php7* \
517530
powershell temurin-* zulu-*
518-
sudo docker system prune -af
531+
# clean unused packages
532+
sudo apt-get autoclean
533+
sudo apt-get autoremove -y
534+
# clean apt cache
535+
sudo apt-get clean
536+
sudo docker system prune -af --volumes
537+
df -h
538+
sudo swapon --show
539+
sudo swapoff -a
540+
sudo rm -f /mnt/swapfile
541+
df -h
519542
520543
- name: Setup /mnt/runner directory
521544
run: |
@@ -730,6 +753,7 @@ jobs:
730753
731754
- name: Free up disk space
732755
run: |
756+
df -h
733757
sudo rm -rf /usr/local/lib/android/sdk
734758
sudo apt-get update
735759
sudo eatmydata apt-get purge --auto-remove -y \
@@ -738,6 +762,17 @@ jobs:
738762
llvm-* microsoft-edge-stable mono-* \
739763
msbuild mysql-server-core-* php-* php7* \
740764
powershell temurin-* zulu-*
765+
# clean unused packages
766+
sudo apt-get autoclean
767+
sudo apt-get autoremove -y
768+
# clean apt cache
769+
sudo apt-get clean
770+
sudo docker system prune -af --volumes
771+
df -h
772+
sudo swapon --show
773+
sudo swapoff -a
774+
sudo rm -f /mnt/swapfile
775+
df -h
741776
742777
- name: Disable ufw
743778
# For IPv6 and Dualstack, ufw (Uncomplicated Firewall) should be disabled.

contrib/kind.sh

Lines changed: 21 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -504,6 +504,11 @@ check_dependencies() {
504504
echo "Dependency not met: Neither docker nor podman found"
505505
exit 1
506506
fi
507+
508+
if command_exists podman && ! command_exists skopeo; then
509+
echo "Dependency not met: skopeo not installed. Run the following command to install it: 'sudo dnf install skopeo'"
510+
exit 1
511+
fi
507512
}
508513

509514
OPENSSL=""
@@ -822,6 +827,12 @@ set_ovn_image() {
822827
}
823828

824829
build_ovn_image() {
830+
local push_args=""
831+
if [ "$OCI_BIN" == "podman" ]; then
832+
# docker doesn't perform tls check by default only podman does, hence we need to disable it for podman.
833+
push_args="--tls-verify=false"
834+
fi
835+
825836
if [ "$OVN_IMAGE" == local ]; then
826837
set_ovn_image
827838

@@ -834,22 +845,28 @@ build_ovn_image() {
834845
# store in local registry
835846
if [ "$KIND_LOCAL_REGISTRY" == true ];then
836847
echo "Pushing built image to local $OCI_BIN registry"
837-
$OCI_BIN push "${OVN_IMAGE}"
848+
$OCI_BIN push "$push_args" "$OVN_IMAGE"
838849
fi
839850
# We should push to local registry if image is not remote
840851
elif [ "${OVN_IMAGE}" != "" -a "${KIND_LOCAL_REGISTRY}" == true ] && (echo "$OVN_IMAGE" | grep / -vq); then
841852
local local_registry_ovn_image="localhost:5000/${OVN_IMAGE}"
842853
$OCI_BIN tag "$OVN_IMAGE" $local_registry_ovn_image
843854
OVN_IMAGE=$local_registry_ovn_image
844-
$OCI_BIN push $OVN_IMAGE
855+
$OCI_BIN push "$push_args" "$OVN_IMAGE"
845856
fi
846857
}
847858

848859
create_ovn_kube_manifests() {
849860
local ovnkube_image=${OVN_IMAGE}
850861
if [ "$KIND_LOCAL_REGISTRY" == true ];then
851-
# When updating with local registry we have to reference the sha
852-
ovnkube_image=$($OCI_BIN inspect --format='{{index .RepoDigests 0}}' $OVN_IMAGE)
862+
# When updating with local registry we have to reference the image digest (SHA)
863+
# Check the image digest in the local registry because it might be different then the digest in the local container runtime
864+
if [ "$OCI_BIN" == "podman" ]; then
865+
# due to differences how podman and docker persist images, for podman use skopeo to get the image and digest.
866+
ovnkube_image=$(skopeo inspect --format "{{.Name}}@{{.Digest}}" --tls-verify=false "docker://$OVN_IMAGE")
867+
else
868+
ovnkube_image=$($OCI_BIN inspect --format='{{index .RepoDigests 0}}' $OVN_IMAGE)
869+
fi
853870
fi
854871
pushd ${DIR}/../dist/images
855872
if [ "$OVN_ENABLE_INTERCONNECT" == true ]; then

dist/images/ovnkube.sh

Lines changed: 32 additions & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -324,6 +324,16 @@ ovn_nohostsubnet_label=${OVN_NOHOSTSUBNET_LABEL:-""}
324324
# should be set to true when dpu nodes are in the cluster
325325
ovn_disable_requestedchassis=${OVN_DISABLE_REQUESTEDCHASSIS:-false}
326326

327+
# external_ids:host-k8s-nodename is set on an Open_vSwitch enabled system if the ovnkube stack
328+
# should function on behalf of a different host than external_ids:hostname. This includes
329+
# all the components that belond in an ovnkube stack (i.e. NB DB, SB DB, ovnkube etc)
330+
# overwrite the K8S_NODE env var with the one found within the OVS metadata in this case
331+
ovn_k8s_node=$(ovs-vsctl --if-exists get Open_vSwitch . external_ids:host-k8s-nodename | tr -d '\"')
332+
if [[ ! -z $ovn_k8s_node ]]; then
333+
echo "host-k8s-nodename is set, overriding K8S_NODE with $ovn_k8s_node"
334+
K8S_NODE=$ovn_k8s_node
335+
fi
336+
327337
# Determine the ovn rundir.
328338
if [[ -f /usr/bin/ovn-appctl ]]; then
329339
# ovn-appctl is present. Use new ovn run dir path.
@@ -1356,6 +1366,7 @@ ovn-master() {
13561366
${network_qos_enabled_flag} \
13571367
${ovn_enable_dnsnameresolver_flag} \
13581368
${nohostsubnet_label_option} \
1369+
${ovn_stateless_netpol_enable_flag} \
13591370
${ovn_disable_requestedchassis_flag} \
13601371
--cluster-subnets ${net_cidr} --k8s-service-cidr=${svc_cidr} \
13611372
--gateway-mode=${ovn_gateway_mode} ${ovn_gateway_opts} \
@@ -1626,6 +1637,13 @@ ovnkube-controller() {
16261637
fi
16271638
echo "ovn_observ_enable_flag=${ovn_observ_enable_flag}"
16281639

1640+
1641+
ovn_stateless_netpol_enable_flag=
1642+
if [[ ${ovn_stateless_netpol_enable} == "true" ]]; then
1643+
ovn_stateless_netpol_enable_flag="--enable-stateless-netpol"
1644+
fi
1645+
echo "ovn_stateless_netpol_enable_flag: ${ovn_stateless_netpol_enable_flag}"
1646+
16291647
echo "=============== ovnkube-controller ========== MASTER ONLY"
16301648
/usr/bin/ovnkube --init-ovnkube-controller ${K8S_NODE} \
16311649
${anp_enabled_flag} \
@@ -2054,6 +2072,11 @@ ovnkube-controller-with-node() {
20542072
fi
20552073
echo "ovn_observ_enable_flag=${ovn_observ_enable_flag}"
20562074

2075+
ovn_stateless_netpol_enable_flag=
2076+
if [[ ${ovn_stateless_netpol_enable} == "true" ]]; then
2077+
ovn_stateless_netpol_enable_flag="--enable-stateless-netpol"
2078+
fi
2079+
20572080
echo "=============== ovnkube-controller-with-node --init-ovnkube-controller-with-node=========="
20582081
/usr/bin/ovnkube --init-ovnkube-controller ${K8S_NODE} --init-node ${K8S_NODE} \
20592082
${anp_enabled_flag} \
@@ -2399,8 +2422,15 @@ ovn-node() {
23992422
wait_for_event ovs_ready
24002423
fi
24012424

2402-
echo "=============== ovn-node - (wait for ready_to_start_node)"
2403-
wait_for_event ready_to_start_node
2425+
if [[ ${ovnkube_node_mode} == "dpu-host" ]] && [[ ${ovn_enable_interconnect} == "true" ]]; then
2426+
# ready_to_start_node checks for the NB/SB readiness state.
2427+
# This is not available on the DPU host when interconnect is enabled,
2428+
# because the DBs will run locally on the DPU
2429+
echo "skipping ready_to_start_node on DPU Host and when interconnect is true"
2430+
else
2431+
echo "=============== ovn-node - (wait for ready_to_start_node)"
2432+
wait_for_event ready_to_start_node
2433+
fi
24042434

24052435
echo "ovn_nbdb ${ovn_nbdb} ovn_sbdb ${ovn_sbdb} ovn_nbdb_conn ${ovn_nbdb_conn}"
24062436

@@ -2578,12 +2608,6 @@ ovn-node() {
25782608
fi
25792609

25802610
if [[ ${ovnkube_node_mode} == "dpu" ]]; then
2581-
# in the case of dpu mode we want the host K8s Node Name and not the DPU K8s Node Name
2582-
K8S_NODE=$(ovs-vsctl --if-exists get Open_vSwitch . external_ids:host-k8s-nodename | tr -d '\"')
2583-
if [[ ${K8S_NODE} == "" ]]; then
2584-
echo "Couldn't get the required Host K8s Nodename. Exiting..."
2585-
exit 1
2586-
fi
25872611
if [[ ${ovn_gateway_opts} == "" ]]; then
25882612
# get the gateway interface
25892613
gw_iface=$(ovs-vsctl --if-exists get Open_vSwitch . external_ids:ovn-gw-interface | tr -d \")

docs/features/hardware-offload/dpu-support.md

Lines changed: 36 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -17,3 +17,39 @@ on the embedded CPU.
1717
Any vendor that manufactures a DPU which supports the above model should work with current design.
1818

1919
Design document can be found [here](https://docs.google.com/document/d/11IoMKiohK7hIyIE36FJmwJv46DEBx52a4fqvrpCBBcg/edit?usp=sharing).
20+
21+
## OVN Kubernetes in a DPU-Accelerated Environment
22+
23+
The **ovn-kubernetes** deployment will have two parts one on the host and another on the DPU side.
24+
25+
26+
These aforementioned parts are expected to be deployed also on two different Kubernetes clusters, one for the host and another for the DPUs.
27+
28+
29+
### Host Cluster
30+
---
31+
32+
#### OVN Kubernetes control plane related component
33+
- ovn-cluster-manager
34+
35+
#### OVN Kubernetes components on a Standard Host (Non-DPU)
36+
- local-nb-ovsdb
37+
- local-sb-ovsdb
38+
- run-ovn-northd
39+
- ovnkube-controller-with-node
40+
- ovn-controller
41+
- ovs-metrics
42+
43+
#### OVN Kubernetes component on a DPU-Enabled Host
44+
- ovn-node
45+
46+
### DPU Cluster
47+
---
48+
49+
#### OVN Kubernetes components
50+
- local-nb-ovsdb
51+
- local-sb-ovsdb
52+
- run-ovn-northd
53+
- ovnkube-controller-with-node
54+
- ovn-controller
55+
- ovs-metrics

go-controller/go.mod

Lines changed: 7 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -47,9 +47,9 @@ require (
4747
github.com/urfave/cli/v2 v2.27.2
4848
github.com/vishvananda/netlink v1.3.1-0.20250206174618-62fb240731fa
4949
golang.org/x/exp v0.0.0-20240719175910-8a7402abbf56
50-
golang.org/x/net v0.30.0
51-
golang.org/x/sync v0.8.0
52-
golang.org/x/sys v0.26.0
50+
golang.org/x/net v0.38.0
51+
golang.org/x/sync v0.12.0
52+
golang.org/x/sys v0.31.0
5353
golang.org/x/time v0.7.0
5454
google.golang.org/grpc v1.65.0
5555
google.golang.org/grpc/security/advancedtls v0.0.0-20240425232638-1e8b9b7fc655
@@ -62,7 +62,7 @@ require (
6262
k8s.io/client-go v0.32.3
6363
k8s.io/component-helpers v0.32.3
6464
k8s.io/klog/v2 v2.130.1
65-
k8s.io/kubernetes v1.32.3
65+
k8s.io/kubernetes v1.32.6
6666
k8s.io/utils v0.0.0-20241104100929-3ea5e8cea738
6767
kubevirt.io/api v1.0.0-alpha.0
6868
sigs.k8s.io/controller-runtime v0.20.3
@@ -124,10 +124,10 @@ require (
124124
github.com/x448/float16 v0.8.4 // indirect
125125
github.com/xrash/smetrics v0.0.0-20240312152122-5f08fbb34913 // indirect
126126
go.opencensus.io v0.24.0 // indirect
127-
golang.org/x/crypto v0.28.0 // indirect
127+
golang.org/x/crypto v0.36.0 // indirect
128128
golang.org/x/oauth2 v0.23.0 // indirect
129-
golang.org/x/term v0.25.0 // indirect
130-
golang.org/x/text v0.19.0 // indirect
129+
golang.org/x/term v0.30.0 // indirect
130+
golang.org/x/text v0.23.0 // indirect
131131
golang.org/x/tools v0.26.0 // indirect
132132
gomodules.xyz/jsonpatch/v2 v2.4.0 // indirect
133133
google.golang.org/genproto/googleapis/rpc v0.0.0-20240826202546-f6391c0de4c7 // indirect

go-controller/go.sum

Lines changed: 14 additions & 14 deletions
Original file line numberDiff line numberDiff line change
@@ -841,8 +841,8 @@ golang.org/x/crypto v0.0.0-20210220033148-5ea612d1eb83/go.mod h1:jdWPYTVW3xRLrWP
841841
golang.org/x/crypto v0.0.0-20210322153248-0c34fe9e7dc2/go.mod h1:T9bdIzuCu7OtxOm1hfPfRQxPLYneinmdGuTeoZ9dtd4=
842842
golang.org/x/crypto v0.0.0-20210421170649-83a5a9bb288b/go.mod h1:T9bdIzuCu7OtxOm1hfPfRQxPLYneinmdGuTeoZ9dtd4=
843843
golang.org/x/crypto v0.0.0-20220722155217-630584e8d5aa/go.mod h1:IxCIyHEi3zRg3s0A5j5BB6A9Jmi73HwBIUl50j+osU4=
844-
golang.org/x/crypto v0.28.0 h1:GBDwsMXVQi34v5CCYUm2jkJvu4cbtru2U4TN2PSyQnw=
845-
golang.org/x/crypto v0.28.0/go.mod h1:rmgy+3RHxRZMyY0jjAJShp2zgEdOqj2AO7U0pYmeQ7U=
844+
golang.org/x/crypto v0.36.0 h1:AnAEvhDddvBdpY+uR+MyHmuZzzNqXSe/GvuDeob5L34=
845+
golang.org/x/crypto v0.36.0/go.mod h1:Y4J0ReaxCR1IMaabaSMugxJES1EpwhBHhv2bDHklZvc=
846846
golang.org/x/exp v0.0.0-20190121172915-509febef88a4/go.mod h1:CJ0aWSM057203Lf6IL+f9T1iT9GByDxfZKAQTCR3kQA=
847847
golang.org/x/exp v0.0.0-20190306152737-a1d7652674e8/go.mod h1:CJ0aWSM057203Lf6IL+f9T1iT9GByDxfZKAQTCR3kQA=
848848
golang.org/x/exp v0.0.0-20190510132918-efd6b22b2522/go.mod h1:ZjyILWgesfNpC6sMxTJOJm9Kp84zZh5NQWvqDGG3Qr8=
@@ -934,8 +934,8 @@ golang.org/x/net v0.0.0-20211015210444-4f30a5c0130f/go.mod h1:9nx3DQGgdP8bBQD5qx
934934
golang.org/x/net v0.0.0-20211112202133-69e39bad7dc2/go.mod h1:9nx3DQGgdP8bBQD5qxJ1jj9UTztislL4KSBs9R2vV5Y=
935935
golang.org/x/net v0.0.0-20211209124913-491a49abca63/go.mod h1:9nx3DQGgdP8bBQD5qxJ1jj9UTztislL4KSBs9R2vV5Y=
936936
golang.org/x/net v0.0.0-20220127200216-cd36cc0744dd/go.mod h1:CfG3xpIq0wQ8r1q4Su4UZFWDARRcnwPjda9FqA0JpMk=
937-
golang.org/x/net v0.30.0 h1:AcW1SDZMkb8IpzCdQUaIq2sP4sZ4zw+55h6ynffypl4=
938-
golang.org/x/net v0.30.0/go.mod h1:2wGyMJ5iFasEhkwi13ChkO/t1ECNC4X4eBKkVFyYFlU=
937+
golang.org/x/net v0.38.0 h1:vRMAPTMaeGqVhG5QyLJHqNDwecKTomGeqbnfZyKlBI8=
938+
golang.org/x/net v0.38.0/go.mod h1:ivrbrMbzFq5J41QOQh0siUuly180yBYtLp+CKbEaFx8=
939939
golang.org/x/oauth2 v0.0.0-20180821212333-d2e6202438be/go.mod h1:N/0e6XlmueqKjAGxoOufVs8QHGRruUQn6yWY3a++T0U=
940940
golang.org/x/oauth2 v0.0.0-20190226205417-e64efc72b421/go.mod h1:gOpvHmFTYa4IltrdGE7lF6nIHvwfUNPOp7c8zoXwtLw=
941941
golang.org/x/oauth2 v0.0.0-20190604053449-0f29369cfe45/go.mod h1:gOpvHmFTYa4IltrdGE7lF6nIHvwfUNPOp7c8zoXwtLw=
@@ -958,8 +958,8 @@ golang.org/x/sync v0.0.0-20200625203802-6e8e738ad208/go.mod h1:RxMgew5VJxzue5/jJ
958958
golang.org/x/sync v0.0.0-20201020160332-67f06af15bc9/go.mod h1:RxMgew5VJxzue5/jJTE5uejpjVlOe/izrB70Jof72aM=
959959
golang.org/x/sync v0.0.0-20201207232520-09787c993a3a/go.mod h1:RxMgew5VJxzue5/jJTE5uejpjVlOe/izrB70Jof72aM=
960960
golang.org/x/sync v0.0.0-20210220032951-036812b2e83c/go.mod h1:RxMgew5VJxzue5/jJTE5uejpjVlOe/izrB70Jof72aM=
961-
golang.org/x/sync v0.8.0 h1:3NFvSEYkUoMifnESzZl15y791HH1qU2xm6eCJU5ZPXQ=
962-
golang.org/x/sync v0.8.0/go.mod h1:Czt+wKu1gCyEFDUtn0jG5QVvpJ6rzVqr5aXyt9drQfk=
961+
golang.org/x/sync v0.12.0 h1:MHc5BpPuC30uJk597Ri8TV3CNZcTLu6B6z4lJy+g6Jw=
962+
golang.org/x/sync v0.12.0/go.mod h1:1dzgHSNfp02xaA81J2MS99Qcpr2w7fw1gpm99rleRqA=
963963
golang.org/x/sys v0.0.0-20180830151530-49385e6e1522/go.mod h1:STP8DvDyc/dI5b8T5hshtkjS+E42TnysNCUPdjciGhY=
964964
golang.org/x/sys v0.0.0-20180905080454-ebe1bf3edb33/go.mod h1:STP8DvDyc/dI5b8T5hshtkjS+E42TnysNCUPdjciGhY=
965965
golang.org/x/sys v0.0.0-20180909124046-d0be0721c37e/go.mod h1:STP8DvDyc/dI5b8T5hshtkjS+E42TnysNCUPdjciGhY=
@@ -1047,14 +1047,14 @@ golang.org/x/sys v0.0.0-20220715151400-c0bba94af5f8/go.mod h1:oPkhp1MJrh7nUepCBc
10471047
golang.org/x/sys v0.2.0/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg=
10481048
golang.org/x/sys v0.10.0/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg=
10491049
golang.org/x/sys v0.13.0/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg=
1050-
golang.org/x/sys v0.26.0 h1:KHjCJyddX0LoSTb3J+vWpupP9p0oznkqVk/IfjymZbo=
1051-
golang.org/x/sys v0.26.0/go.mod h1:/VUhepiaJMQUp4+oa/7Zr1D23ma6VTLIYjOOTFZPUcA=
1050+
golang.org/x/sys v0.31.0 h1:ioabZlmFYtWhL+TRYpcnNlLwhyxaM9kWTDEmfnprqik=
1051+
golang.org/x/sys v0.31.0/go.mod h1:BJP2sWEmIv4KK5OTEluFJCKSidICx8ciO85XgH3Ak8k=
10521052
golang.org/x/term v0.0.0-20201117132131-f5c789dd3221/go.mod h1:Nr5EML6q2oocZ2LXRh80K7BxOlk5/8JxuGnuhpl+muw=
10531053
golang.org/x/term v0.0.0-20201126162022-7de9c90e9dd1/go.mod h1:bj7SfCRtBDWHUb9snDiAeCFNEtKQo2Wmx5Cou7ajbmo=
10541054
golang.org/x/term v0.0.0-20210220032956-6a3ed077a48d/go.mod h1:bj7SfCRtBDWHUb9snDiAeCFNEtKQo2Wmx5Cou7ajbmo=
10551055
golang.org/x/term v0.0.0-20210927222741-03fcf44c2211/go.mod h1:jbD1KX2456YbFQfuXm/mYQcufACuNUgVhRMnK/tPxf8=
1056-
golang.org/x/term v0.25.0 h1:WtHI/ltw4NvSUig5KARz9h521QvRC8RmF/cuYqifU24=
1057-
golang.org/x/term v0.25.0/go.mod h1:RPyXicDX+6vLxogjjRxjgD2TKtmAO6NZBsBRfrOLu7M=
1056+
golang.org/x/term v0.30.0 h1:PQ39fJZ+mfadBm0y5WlL4vlM7Sx1Hgf13sMIY2+QS9Y=
1057+
golang.org/x/term v0.30.0/go.mod h1:NYYFdzHoI5wRh/h5tDMdMqCqPJZEuNqVR5xJLd/n67g=
10581058
golang.org/x/text v0.0.0-20170915032832-14c0d48ead0c/go.mod h1:NqM8EUOU14njkJ3fqMW+pc6Ldnwhi/IjpwHt7yyuwOQ=
10591059
golang.org/x/text v0.3.0/go.mod h1:NqM8EUOU14njkJ3fqMW+pc6Ldnwhi/IjpwHt7yyuwOQ=
10601060
golang.org/x/text v0.3.1-0.20180807135948-17ff2d5776d2/go.mod h1:NqM8EUOU14njkJ3fqMW+pc6Ldnwhi/IjpwHt7yyuwOQ=
@@ -1064,8 +1064,8 @@ golang.org/x/text v0.3.4/go.mod h1:5Zoc/QRtKVWzQhOtBMvqHzDpF6irO9z98xDceosuGiQ=
10641064
golang.org/x/text v0.3.5/go.mod h1:5Zoc/QRtKVWzQhOtBMvqHzDpF6irO9z98xDceosuGiQ=
10651065
golang.org/x/text v0.3.6/go.mod h1:5Zoc/QRtKVWzQhOtBMvqHzDpF6irO9z98xDceosuGiQ=
10661066
golang.org/x/text v0.3.7/go.mod h1:u+2+/6zg+i71rQMx5EYifcz6MCKuco9NR6JIITiCfzQ=
1067-
golang.org/x/text v0.19.0 h1:kTxAhCbGbxhK0IwgSKiMO5awPoDQ0RpfiVYBfK860YM=
1068-
golang.org/x/text v0.19.0/go.mod h1:BuEKDfySbSR4drPmRPG/7iBdf8hvFMuRexcpahXilzY=
1067+
golang.org/x/text v0.23.0 h1:D71I7dUrlY+VX0gQShAThNGHFxZ13dGLBHQLVl1mJlY=
1068+
golang.org/x/text v0.23.0/go.mod h1:/BLNzu4aZCJ1+kcD0DNRotWKage4q2rGVAg4o22unh4=
10691069
golang.org/x/time v0.0.0-20180412165947-fbb02b2291d2/go.mod h1:tRJNPiyCQ0inRvYxbN9jk5I+vvW/OXSQhTDSoE431IQ=
10701070
golang.org/x/time v0.0.0-20181108054448-85acf8d2951c/go.mod h1:tRJNPiyCQ0inRvYxbN9jk5I+vvW/OXSQhTDSoE431IQ=
10711071
golang.org/x/time v0.0.0-20190308202827-9d24e82272b4/go.mod h1:tRJNPiyCQ0inRvYxbN9jk5I+vvW/OXSQhTDSoE431IQ=
@@ -1368,8 +1368,8 @@ k8s.io/kube-openapi v0.0.0-20211115234752-e816edb12b65/go.mod h1:sX9MT8g7NVZM5lV
13681368
k8s.io/kube-openapi v0.0.0-20220124234850-424119656bbf/go.mod h1:sX9MT8g7NVZM5lVL/j8QyCCJe8YSMW30QvGZWaCIDIk=
13691369
k8s.io/kube-openapi v0.0.0-20241105132330-32ad38e42d3f h1:GA7//TjRY9yWGy1poLzYYJJ4JRdzg3+O6e8I+e+8T5Y=
13701370
k8s.io/kube-openapi v0.0.0-20241105132330-32ad38e42d3f/go.mod h1:R/HEjbvWI0qdfb8viZUeVZm0X6IZnxAydC7YU42CMw4=
1371-
k8s.io/kubernetes v1.32.3 h1:2A58BlNME8NwsMawmnM6InYo3Jf35Nw5G79q46kXwoA=
1372-
k8s.io/kubernetes v1.32.3/go.mod h1:GvhiBeolvSRzBpFlgM0z/Bbu3Oxs9w3P6XfEgYaMi8k=
1371+
k8s.io/kubernetes v1.32.6 h1:tp1gRjOqZjaoFBek5PN6eSmODdS1QRrH5UKiFP8ZByg=
1372+
k8s.io/kubernetes v1.32.6/go.mod h1:REY0Gok66BTTrbGyZaFMNKO9JhxvgBDW9B7aksWRFoY=
13731373
k8s.io/utils v0.0.0-20201110183641-67b214c5f920/go.mod h1:jPW/WVKK9YHAvNhRxK0md/EJ228hCsBRufyofKtW8HA=
13741374
k8s.io/utils v0.0.0-20210802155522-efc7438f0176/go.mod h1:jPW/WVKK9YHAvNhRxK0md/EJ228hCsBRufyofKtW8HA=
13751375
k8s.io/utils v0.0.0-20211116205334-6203023598ed/go.mod h1:jPW/WVKK9YHAvNhRxK0md/EJ228hCsBRufyofKtW8HA=

go-controller/pkg/config/cni.go

Lines changed: 4 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -120,10 +120,6 @@ func parseNetConfSingle(bytes []byte) (*ovncnitypes.NetConf, error) {
120120
}
121121

122122
func parseNetConfList(confList *libcni.NetworkConfigList) (*ovncnitypes.NetConf, error) {
123-
if len(confList.Plugins) > 1 {
124-
return nil, ErrorChainingNotSupported
125-
}
126-
127123
netconf := &ovncnitypes.NetConf{MTU: Default.MTU}
128124
if err := json.Unmarshal(confList.Plugins[0].Bytes, netconf); err != nil {
129125
return nil, err
@@ -134,6 +130,10 @@ func parseNetConfList(confList *libcni.NetworkConfigList) (*ovncnitypes.NetConf,
134130
return nil, ErrorAttachDefNotOvnManaged
135131
}
136132

133+
if len(confList.Plugins) > 1 {
134+
return nil, ErrorChainingNotSupported
135+
}
136+
137137
netconf.Name = confList.Name
138138
netconf.CNIVersion = confList.CNIVersion
139139

0 commit comments

Comments
 (0)