From 580a6820dc9b20667c3daca272432c9c233e327b Mon Sep 17 00:00:00 2001 From: ci-robot Date: Mon, 11 May 2026 04:22:06 +0000 Subject: [PATCH 1/7] update last_rebase.sh --- scripts/auto-rebase/last_rebase.sh | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/scripts/auto-rebase/last_rebase.sh b/scripts/auto-rebase/last_rebase.sh index 463a7ea24f..32a5e231e1 100755 --- a/scripts/auto-rebase/last_rebase.sh +++ b/scripts/auto-rebase/last_rebase.sh @@ -1,2 +1,2 @@ #!/bin/bash -x -./scripts/auto-rebase/rebase.sh to "registry.ci.openshift.org/ocp/release:4.22.0-0.nightly-2026-05-05-131253" "registry.ci.openshift.org/ocp-arm64/release-arm64:4.22.0-0.nightly-arm64-2026-05-07-131722" +./scripts/auto-rebase/rebase.sh to "registry.ci.openshift.org/ocp/release:4.22.0-0.nightly-2026-05-10-025105" "registry.ci.openshift.org/ocp-arm64/release-arm64:4.22.0-0.nightly-arm64-2026-05-11-031617" From 29492a243996abf8088d017ff9f4d216271f457f Mon Sep 17 00:00:00 2001 From: ci-robot Date: Mon, 11 May 2026 04:22:06 +0000 Subject: [PATCH 2/7] update changelog --- scripts/auto-rebase/changelog.txt | 28 ++++++++++++++++++++++++++++ scripts/auto-rebase/commits.txt | 14 +++++++------- 2 files changed, 35 insertions(+), 7 deletions(-) diff --git a/scripts/auto-rebase/changelog.txt b/scripts/auto-rebase/changelog.txt index e69de29bb2..606eba559c 100644 --- a/scripts/auto-rebase/changelog.txt +++ b/scripts/auto-rebase/changelog.txt @@ -0,0 +1,28 @@ +- cluster-ingress-operator embedded-component 6cf59c532a28e46ced7e18c5aa4b04283fea8f61 to 52c2b0465ecf1dcdcd57c010b9b15ac28f62a2ba + - 80cc5ec 2026-05-05T22:34:34Z Allow host network connections to the ingress canary + - b1ed6a6 2026-05-05T14:28:30Z waitForDeploymentEnvVar: Remove client parameter + - ceee137 2026-05-05T14:28:30Z TestUnsupportedConfigOverride: Ignore featuregate + - a19ef82 2026-05-05T14:28:30Z Add waitForDeploymentFunc test helper func + - 2f68c38 2026-05-05T14:28:30Z waitForDeploymentEnvVar: Fix godoc + +- kubernetes embedded-component da4553e9f23c91c792094a1ddbba933784becce4 to 80f28ac33ac111532fb8ba59b2e569085ee871b0 + - d9dec3899 2026-04-28T17:11:27Z UPSTREAM: 138244: devicemanager: constrain topology hints to device NUMA nodes + +- machine-config-operator embedded-component 487334b7ed9bdd7c55e9eeb3a90027e5e1f927a2 to b7a8bf128b2775ea19c8191efa774f0660b2be70 + - 5a2dee70 2026-05-06T19:33:08Z daemon: skip bootupd when shim is safe + - 87366809 2026-05-05T13:38:58Z crio: enable default_runtime metric + - 185c923e 2026-05-05T13:38:58Z prom rules: add alert for nodes using runc + - 948f3c83 2026-05-04T08:05:21Z OCPBUGS-84406: Fix CVE-2026-34986 + +- operator-framework-olm embedded-component e627823c743797da91b4ae8a318d2420a511b752 to de6260e53055e10e216ec668d692a35554ab0585 + - f6cf1456 2026-05-06T10:40:17-04:00 Update github.com/go-jose/go-jose/v4 to v4.1.4 + +- service-ca-operator embedded-component 7b3033bba87d7b40684b66f8f44a3525433d1ac7 to 9fff46a576033685f66fbb1121eb0a2f134a29be + - a3e8484 2026-05-04T14:13:16Z test: network policy tests + +- kubernetes image-amd64 da4553e9f23c91c792094a1ddbba933784becce4 to 80f28ac33ac111532fb8ba59b2e569085ee871b0 + - d9dec3899 2026-04-28T17:11:27Z UPSTREAM: 138244: devicemanager: constrain topology hints to device NUMA nodes + +- service-ca-operator image-amd64 7b3033bba87d7b40684b66f8f44a3525433d1ac7 to 9fff46a576033685f66fbb1121eb0a2f134a29be + - a3e8484 2026-05-04T14:13:16Z test: network policy tests + diff --git a/scripts/auto-rebase/commits.txt b/scripts/auto-rebase/commits.txt index 0e36c9a5f7..232b11e386 100644 --- a/scripts/auto-rebase/commits.txt +++ b/scripts/auto-rebase/commits.txt @@ -1,7 +1,7 @@ https://github.com/openshift/api embedded-component e9fad7d4cba1537b8af99b972370e76370de72e9 https://github.com/openshift/cluster-csi-snapshot-controller-operator embedded-component 108f37f0e378accc322cbeb68136ec500ec35b94 https://github.com/openshift/cluster-dns-operator embedded-component 3d2141182243cde1ec6417bd005c76d29aa88a01 -https://github.com/openshift/cluster-ingress-operator embedded-component 6cf59c532a28e46ced7e18c5aa4b04283fea8f61 +https://github.com/openshift/cluster-ingress-operator embedded-component 52c2b0465ecf1dcdcd57c010b9b15ac28f62a2ba https://github.com/openshift/cluster-kube-apiserver-operator embedded-component d03062f8d205f1923362c008c86f9bcdd35f931c https://github.com/openshift/cluster-kube-controller-manager-operator embedded-component 95150ed5dbf11370b4a06e6959c77efa13768561 https://github.com/openshift/cluster-kube-scheduler-operator embedded-component 51ea59abd057d0cef56b29b8a74efc28411d5427 @@ -10,21 +10,21 @@ https://github.com/openshift/cluster-openshift-controller-manager-operator embed https://github.com/openshift/cluster-policy-controller embedded-component 44985a1306411101c84dd5081598fc928b432321 https://github.com/openshift/csi-external-snapshotter embedded-component d1bc3ffaa9759c13a06c2ec61c541342e71bd109 https://github.com/openshift/etcd embedded-component d8d67b8ce849f816d6d23c904098336632e2348f -https://github.com/openshift/kubernetes embedded-component da4553e9f23c91c792094a1ddbba933784becce4 +https://github.com/openshift/kubernetes embedded-component 80f28ac33ac111532fb8ba59b2e569085ee871b0 https://github.com/openshift/kubernetes-kube-storage-version-migrator embedded-component 72835e43c7754356645e41031f3a99926b4d42e6 -https://github.com/openshift/machine-config-operator embedded-component 487334b7ed9bdd7c55e9eeb3a90027e5e1f927a2 +https://github.com/openshift/machine-config-operator embedded-component b7a8bf128b2775ea19c8191efa774f0660b2be70 https://github.com/openshift/openshift-controller-manager embedded-component 26d20feae8892f648f5b06ed3f5492fe6ffb4532 -https://github.com/openshift/operator-framework-olm embedded-component e627823c743797da91b4ae8a318d2420a511b752 +https://github.com/openshift/operator-framework-olm embedded-component de6260e53055e10e216ec668d692a35554ab0585 https://github.com/openshift/route-controller-manager embedded-component 624742d93f3a7885cf7f70985f1e23ff60da580d -https://github.com/openshift/service-ca-operator embedded-component 7b3033bba87d7b40684b66f8f44a3525433d1ac7 +https://github.com/openshift/service-ca-operator embedded-component 9fff46a576033685f66fbb1121eb0a2f134a29be https://github.com/openshift/oc image-amd64 66dee73f66c4f048c333c6a77d76871872027896 https://github.com/openshift/coredns image-amd64 0dded2d232dab43c107b1dab9d0d9fdfd8259622 https://github.com/openshift/csi-external-snapshotter image-amd64 d1bc3ffaa9759c13a06c2ec61c541342e71bd109 https://github.com/openshift/router image-amd64 896390778ebe15f57f87e6ca78f11c96e64c2652 https://github.com/openshift/kube-rbac-proxy image-amd64 d12e274605248f6c59373240a7eae7a7a357dcb3 https://github.com/openshift/ovn-kubernetes image-amd64 72db5e8d8ec23d4108183a8c67b45cdfdb8057ba -https://github.com/openshift/kubernetes image-amd64 da4553e9f23c91c792094a1ddbba933784becce4 -https://github.com/openshift/service-ca-operator image-amd64 7b3033bba87d7b40684b66f8f44a3525433d1ac7 +https://github.com/openshift/kubernetes image-amd64 80f28ac33ac111532fb8ba59b2e569085ee871b0 +https://github.com/openshift/service-ca-operator image-amd64 9fff46a576033685f66fbb1121eb0a2f134a29be https://github.com/openshift/oc image-arm64 66dee73f66c4f048c333c6a77d76871872027896 https://github.com/openshift/coredns image-arm64 0dded2d232dab43c107b1dab9d0d9fdfd8259622 https://github.com/openshift/csi-external-snapshotter image-arm64 d1bc3ffaa9759c13a06c2ec61c541342e71bd109 From 6bc4cc5b73127a5e01050cbf9f43b5c201aa4a18 Mon Sep 17 00:00:00 2001 From: ci-robot Date: Mon, 11 May 2026 04:23:25 +0000 Subject: [PATCH 3/7] update microshift/deps --- .../cm/devicemanager/topology_hints.go | 43 +- .../cm/devicemanager/topology_hints_test.go | 373 +++++++++++++++++- 2 files changed, 401 insertions(+), 15 deletions(-) diff --git a/deps/github.com/openshift/kubernetes/pkg/kubelet/cm/devicemanager/topology_hints.go b/deps/github.com/openshift/kubernetes/pkg/kubelet/cm/devicemanager/topology_hints.go index 8846122a3d..267aedf877 100644 --- a/deps/github.com/openshift/kubernetes/pkg/kubelet/cm/devicemanager/topology_hints.go +++ b/deps/github.com/openshift/kubernetes/pkg/kubelet/cm/devicemanager/topology_hints.go @@ -152,12 +152,27 @@ func (m *ManagerImpl) getAvailableDevices(resource string) sets.Set[string] { } func (m *ManagerImpl) generateDeviceTopologyHints(resource string, available sets.Set[string], reusable sets.Set[string], request int) []topologymanager.TopologyHint { - // Initialize minAffinitySize to include all NUMA Nodes - minAffinitySize := len(m.numaNodes) + // Narrow the bitmask iteration to NUMA nodes that actually host + // devices for this resource. On platforms where the OS exposes many + // NUMA nodes that carry no devices (e.g. NVIDIA GB200 with 36 NUMA + // nodes, most hosting only GPU HBM), iterating all machine NUMA + // nodes would enumerate O(2^n) subsets. Restricting to device- + // bearing nodes reduces n to the number of nodes that matter. + // Because device-less nodes never contribute to devicesInMask, + // excluding them does not change minAffinitySize or Preferred + // flag computation. + numaNodes := m.deviceNUMANodes(resource) + if len(numaNodes) == 0 { + numaNodes = m.numaNodes + } + + // Initialize minAffinitySize to the number of NUMA nodes under + // consideration; it will be narrowed as satisfying masks are found. + minAffinitySize := len(numaNodes) // Iterate through all combinations of NUMA Nodes and build hints from them. hints := []topologymanager.TopologyHint{} - bitmask.IterateBitMasks(m.numaNodes, func(mask bitmask.BitMask) { + bitmask.IterateBitMasks(numaNodes, func(mask bitmask.BitMask) { // First, update minAffinitySize for the current request size. devicesInMask := 0 for _, device := range m.allDevices[resource] { @@ -218,6 +233,28 @@ func (m *ManagerImpl) generateDeviceTopologyHints(resource string, available set return hints } +// deviceNUMANodes returns the sorted list of NUMA node IDs that host at least +// one device for the given resource. The returned set is guaranteed to be a +// subset of m.numaNodes: any NUMA IDs reported by device plugins that are not +// known to cadvisor are logged and dropped. +// The caller must hold m.mutex. +func (m *ManagerImpl) deviceNUMANodes(resource string) []int { + nodesWithDevices := sets.New[int]() + for _, device := range m.allDevices[resource] { + nodesWithDevices.Insert(m.getNUMANodeIds(device.Topology)...) + } + + knownNodes := sets.New[int](m.numaNodes...) + unknown := nodesWithDevices.Difference(knownNodes) + if unknown.Len() > 0 { + klog.TODO().Info("Ignoring NUMA node IDs reported by device plugin that are unknown to cadvisor", + "resource", resource, "unknownNodes", sets.List(unknown), "knownNodes", m.numaNodes) + nodesWithDevices = nodesWithDevices.Intersection(knownNodes) + } + + return sets.List(nodesWithDevices) +} + func (m *ManagerImpl) getNUMANodeIds(topology *pluginapi.TopologyInfo) []int { if topology == nil { return nil diff --git a/deps/github.com/openshift/kubernetes/pkg/kubelet/cm/devicemanager/topology_hints_test.go b/deps/github.com/openshift/kubernetes/pkg/kubelet/cm/devicemanager/topology_hints_test.go index 53ea645a3a..17e7751c0c 100644 --- a/deps/github.com/openshift/kubernetes/pkg/kubelet/cm/devicemanager/topology_hints_test.go +++ b/deps/github.com/openshift/kubernetes/pkg/kubelet/cm/devicemanager/topology_hints_test.go @@ -976,6 +976,367 @@ func TestGetPodTopologyHints(t *testing.T) { } } +func TestDeviceNUMANodes(t *testing.T) { + resource := "testdevice" + deviceOnNode := func(id string, node int) *pluginapi.Device { + return &pluginapi.Device{ + ID: id, + Topology: &pluginapi.TopologyInfo{Nodes: []*pluginapi.NUMANode{{ID: int64(node)}}}, + } + } + + t.Run("collects NUMA nodes from all devices", func(t *testing.T) { + m := ManagerImpl{ + allDevices: NewResourceDeviceInstances(), + numaNodes: []int{0, 3, 5, 7}, + } + m.allDevices[resource] = DeviceInstances{ + "a": deviceOnNode("a", 3), + "b": deviceOnNode("b", 5), + } + + nodes := m.deviceNUMANodes(resource) + expected := []int{3, 5} + if !reflect.DeepEqual(nodes, expected) { + t.Fatalf("expected nodes %v, got %v", expected, nodes) + } + }) + + t.Run("device without topology is ignored", func(t *testing.T) { + m := ManagerImpl{ + allDevices: NewResourceDeviceInstances(), + numaNodes: []int{0, 4}, + } + m.allDevices[resource] = DeviceInstances{ + "a": deviceOnNode("a", 4), + "b": {ID: "b", Topology: nil}, + } + + nodes := m.deviceNUMANodes(resource) + expected := []int{4} + if !reflect.DeepEqual(nodes, expected) { + t.Fatalf("expected nodes %v, got %v", expected, nodes) + } + }) + + t.Run("returns empty when no device has topology", func(t *testing.T) { + m := ManagerImpl{ + allDevices: NewResourceDeviceInstances(), + } + m.allDevices[resource] = DeviceInstances{ + "a": {ID: "a", Topology: nil}, + "b": {ID: "b", Topology: nil}, + } + + nodes := m.deviceNUMANodes(resource) + if len(nodes) != 0 { + t.Fatalf("expected empty nodes, got %v", nodes) + } + }) + + t.Run("unknown NUMA IDs from device plugin are dropped", func(t *testing.T) { + m := ManagerImpl{ + allDevices: NewResourceDeviceInstances(), + numaNodes: []int{0, 1}, + } + m.allDevices[resource] = DeviceInstances{ + "a": deviceOnNode("a", 0), + "b": deviceOnNode("b", 99), + } + + nodes := m.deviceNUMANodes(resource) + expected := []int{0} + if !reflect.DeepEqual(nodes, expected) { + t.Fatalf("expected nodes %v (node 99 should be dropped), got %v", expected, nodes) + } + }) +} + +func TestGenerateDeviceTopologyHintsFiltersNUMANodes(t *testing.T) { + resource := "gpu" + + t.Run("two node machine, device on one node", func(t *testing.T) { + m := ManagerImpl{ + allDevices: NewResourceDeviceInstances(), + numaNodes: []int{0, 1}, + } + m.allDevices[resource] = DeviceInstances{ + "a": { + ID: "a", + Topology: &pluginapi.TopologyInfo{Nodes: []*pluginapi.NUMANode{{ID: 0}}}, + }, + } + + hints := m.generateDeviceTopologyHints(resource, sets.New[string]("a"), nil, 1) + + maskNode0, _ := bitmask.NewBitMask(0) + expected := []topologymanager.TopologyHint{ + {NUMANodeAffinity: maskNode0, Preferred: true}, + } + + if !reflect.DeepEqual(hints, expected) { + t.Fatalf("expected hints %v, got %v", expected, hints) + } + }) + + t.Run("large NUMA machine with devices on small subset", func(t *testing.T) { + allNUMA := make([]int, 34) + for i := range allNUMA { + allNUMA[i] = i + } + + m := ManagerImpl{ + allDevices: NewResourceDeviceInstances(), + numaNodes: allNUMA, + } + m.allDevices[resource] = DeviceInstances{ + "gpu0": { + ID: "gpu0", + Topology: &pluginapi.TopologyInfo{Nodes: []*pluginapi.NUMANode{{ID: 0}}}, + }, + "gpu1": { + ID: "gpu1", + Topology: &pluginapi.TopologyInfo{Nodes: []*pluginapi.NUMANode{{ID: 1}}}, + }, + } + + hints := m.generateDeviceTopologyHints(resource, sets.New[string]("gpu0", "gpu1"), nil, 1) + sort.SliceStable(hints, func(i, j int) bool { return hints[i].LessThan(hints[j]) }) + + maskNode0, _ := bitmask.NewBitMask(0) + maskNode1, _ := bitmask.NewBitMask(1) + maskBoth, _ := bitmask.NewBitMask(0, 1) + expected := []topologymanager.TopologyHint{ + {NUMANodeAffinity: maskNode0, Preferred: true}, + {NUMANodeAffinity: maskNode1, Preferred: true}, + {NUMANodeAffinity: maskBoth, Preferred: false}, + } + sort.SliceStable(expected, func(i, j int) bool { return expected[i].LessThan(expected[j]) }) + + if !reflect.DeepEqual(hints, expected) { + t.Fatalf("expected hints %v, got %v", expected, hints) + } + }) + + t.Run("devices span all NUMA nodes", func(t *testing.T) { + m := ManagerImpl{ + allDevices: NewResourceDeviceInstances(), + numaNodes: []int{0, 1}, + } + m.allDevices[resource] = DeviceInstances{ + "a": { + ID: "a", + Topology: &pluginapi.TopologyInfo{Nodes: []*pluginapi.NUMANode{{ID: 0}}}, + }, + "b": { + ID: "b", + Topology: &pluginapi.TopologyInfo{Nodes: []*pluginapi.NUMANode{{ID: 1}}}, + }, + } + + hints := m.generateDeviceTopologyHints(resource, sets.New[string]("a", "b"), nil, 1) + + fullMask, _ := bitmask.NewBitMask(0, 1) + fullMaskCount := 0 + for _, h := range hints { + if h.NUMANodeAffinity.IsEqual(fullMask) { + fullMaskCount++ + } + } + if fullMaskCount != 1 { + t.Fatalf("expected exactly one full-machine mask, got %d in hints: %v", fullMaskCount, hints) + } + }) + + t.Run("reusable device on filtered node", func(t *testing.T) { + m := ManagerImpl{ + allDevices: NewResourceDeviceInstances(), + numaNodes: []int{0, 1, 2, 3}, + } + m.allDevices[resource] = DeviceInstances{ + "a": { + ID: "a", + Topology: &pluginapi.TopologyInfo{Nodes: []*pluginapi.NUMANode{{ID: 0}}}, + }, + } + + hints := m.generateDeviceTopologyHints(resource, nil, sets.New[string]("a"), 1) + + expected := []topologymanager.TopologyHint{ + {NUMANodeAffinity: makeSocketMask(0), Preferred: true}, + } + if !reflect.DeepEqual(hints, expected) { + t.Fatalf("expected hints %v, got %v", expected, hints) + } + }) + + t.Run("reusable and available on different nodes", func(t *testing.T) { + m := ManagerImpl{ + allDevices: NewResourceDeviceInstances(), + numaNodes: []int{0, 1, 2, 3}, + } + m.allDevices[resource] = DeviceInstances{ + "a": { + ID: "a", + Topology: &pluginapi.TopologyInfo{Nodes: []*pluginapi.NUMANode{{ID: 0}}}, + }, + "b": { + ID: "b", + Topology: &pluginapi.TopologyInfo{Nodes: []*pluginapi.NUMANode{{ID: 1}}}, + }, + } + + hints := m.generateDeviceTopologyHints(resource, sets.New[string]("b"), sets.New[string]("a"), 2) + + expected := []topologymanager.TopologyHint{ + {NUMANodeAffinity: makeSocketMask(0, 1), Preferred: true}, + } + if !reflect.DeepEqual(hints, expected) { + t.Fatalf("expected hints %v, got %v", expected, hints) + } + }) +} + +// TestFilteredDeviceHintsMergeWithOtherProviders exercises policy.Merge with +// the device hints produced by our changed code, without needing to wire up +// real CPU/memory managers. +func TestFilteredDeviceHintsMergeWithOtherProviders(t *testing.T) { + t.Run("device on node 0", func(t *testing.T) { + numaNodes := []int{0, 1} + numaInfo := &topologymanager.NUMAInfo{ + Nodes: numaNodes, + NUMADistances: topologymanager.NUMADistances{}, + } + + m := ManagerImpl{ + allDevices: NewResourceDeviceInstances(), + numaNodes: numaNodes, + } + m.allDevices["gpu"] = DeviceInstances{ + "gpu0": { + ID: "gpu0", + Topology: &pluginapi.TopologyInfo{Nodes: []*pluginapi.NUMANode{{ID: 0}}}, + }, + } + + deviceHints := m.generateDeviceTopologyHints("gpu", sets.New[string]("gpu0"), nil, 1) + + providersHints := []map[string][]topologymanager.TopologyHint{ + {"gpu": deviceHints}, + {"cpu": { + {NUMANodeAffinity: makeSocketMask(0), Preferred: true}, + {NUMANodeAffinity: makeSocketMask(0, 1), Preferred: false}, + }}, + {"memory": { + {NUMANodeAffinity: makeSocketMask(0), Preferred: true}, + {NUMANodeAffinity: makeSocketMask(0, 1), Preferred: false}, + }}, + } + + assertMergePreferred(t, numaInfo, providersHints, makeSocketMask(0)) + }) + + t.Run("device on non-zero node only", func(t *testing.T) { + numaNodes := []int{0, 1} + numaInfo := &topologymanager.NUMAInfo{ + Nodes: numaNodes, + NUMADistances: topologymanager.NUMADistances{}, + } + + m := ManagerImpl{ + allDevices: NewResourceDeviceInstances(), + numaNodes: numaNodes, + } + m.allDevices["gpu"] = DeviceInstances{ + "gpu0": { + ID: "gpu0", + Topology: &pluginapi.TopologyInfo{Nodes: []*pluginapi.NUMANode{{ID: 1}}}, + }, + } + + deviceHints := m.generateDeviceTopologyHints("gpu", sets.New[string]("gpu0"), nil, 1) + + providersHints := []map[string][]topologymanager.TopologyHint{ + {"gpu": deviceHints}, + {"cpu": { + {NUMANodeAffinity: makeSocketMask(1), Preferred: true}, + {NUMANodeAffinity: makeSocketMask(0, 1), Preferred: false}, + }}, + {"memory": { + {NUMANodeAffinity: makeSocketMask(1), Preferred: true}, + {NUMANodeAffinity: makeSocketMask(0, 1), Preferred: false}, + }}, + } + + assertMergePreferred(t, numaInfo, providersHints, makeSocketMask(1)) + }) + + t.Run("high NUMA node IDs without node 0", func(t *testing.T) { + numaNodes := []int{3, 7} + numaInfo := &topologymanager.NUMAInfo{ + Nodes: numaNodes, + NUMADistances: topologymanager.NUMADistances{}, + } + + m := ManagerImpl{ + allDevices: NewResourceDeviceInstances(), + numaNodes: numaNodes, + } + m.allDevices["gpu"] = DeviceInstances{ + "gpu0": { + ID: "gpu0", + Topology: &pluginapi.TopologyInfo{Nodes: []*pluginapi.NUMANode{{ID: 7}}}, + }, + } + + deviceHints := m.generateDeviceTopologyHints("gpu", sets.New[string]("gpu0"), nil, 1) + + providersHints := []map[string][]topologymanager.TopologyHint{ + {"gpu": deviceHints}, + {"cpu": { + {NUMANodeAffinity: makeSocketMask(7), Preferred: true}, + {NUMANodeAffinity: makeSocketMask(3, 7), Preferred: false}, + }}, + {"memory": { + {NUMANodeAffinity: makeSocketMask(7), Preferred: true}, + {NUMANodeAffinity: makeSocketMask(3, 7), Preferred: false}, + }}, + } + + assertMergePreferred(t, numaInfo, providersHints, makeSocketMask(7)) + }) +} + +func assertMergePreferred(t *testing.T, numaInfo *topologymanager.NUMAInfo, providersHints []map[string][]topologymanager.TopologyHint, expectedMask bitmask.BitMask) { + t.Helper() + tCtx := ktesting.Init(t) + for _, policyName := range []string{"best-effort", "restricted"} { + t.Run(policyName, func(t *testing.T) { + var policy topologymanager.Policy + switch policyName { + case "best-effort": + policy = topologymanager.NewBestEffortPolicy(numaInfo, topologymanager.PolicyOptions{}) + case "restricted": + policy = topologymanager.NewRestrictedPolicy(numaInfo, topologymanager.PolicyOptions{}) + } + + bestHint, admit := policy.Merge(tCtx.Logger(), providersHints) + if !admit { + t.Fatalf("expected pod to be admitted under %s policy", policyName) + } + if bestHint.NUMANodeAffinity == nil { + t.Fatalf("expected non-nil NUMANodeAffinity") + } + if !bestHint.NUMANodeAffinity.IsEqual(expectedMask) { + t.Fatalf("expected best hint %v, got %v", expectedMask, bestHint.NUMANodeAffinity) + } + if !bestHint.Preferred { + t.Fatalf("expected best hint to be preferred") + } + }) + } +} + type topologyHintTestCase struct { description string pod *v1.Pod @@ -1048,10 +1409,6 @@ func getCommonTestCases() []topologyHintTestCase { NUMANodeAffinity: makeSocketMask(1), Preferred: true, }, - { - NUMANodeAffinity: makeSocketMask(0, 1), - Preferred: false, - }, }, }, }, @@ -1269,10 +1626,6 @@ func getCommonTestCases() []topologyHintTestCase { NUMANodeAffinity: makeSocketMask(0), Preferred: true, }, - { - NUMANodeAffinity: makeSocketMask(0, 1), - Preferred: false, - }, }, }, }, @@ -1345,10 +1698,6 @@ func getCommonTestCases() []topologyHintTestCase { NUMANodeAffinity: makeSocketMask(0), Preferred: true, }, - { - NUMANodeAffinity: makeSocketMask(0, 1), - Preferred: false, - }, }, }, }, From 0f482d1ca3c2967f356ce4cca383772730f99d1f Mon Sep 17 00:00:00 2001 From: ci-robot Date: Mon, 11 May 2026 04:23:43 +0000 Subject: [PATCH 4/7] update microshift/vendor --- .../cm/devicemanager/topology_hints.go | 43 +++++++++++++++++-- 1 file changed, 40 insertions(+), 3 deletions(-) diff --git a/vendor/k8s.io/kubernetes/pkg/kubelet/cm/devicemanager/topology_hints.go b/vendor/k8s.io/kubernetes/pkg/kubelet/cm/devicemanager/topology_hints.go index 8846122a3d..267aedf877 100644 --- a/vendor/k8s.io/kubernetes/pkg/kubelet/cm/devicemanager/topology_hints.go +++ b/vendor/k8s.io/kubernetes/pkg/kubelet/cm/devicemanager/topology_hints.go @@ -152,12 +152,27 @@ func (m *ManagerImpl) getAvailableDevices(resource string) sets.Set[string] { } func (m *ManagerImpl) generateDeviceTopologyHints(resource string, available sets.Set[string], reusable sets.Set[string], request int) []topologymanager.TopologyHint { - // Initialize minAffinitySize to include all NUMA Nodes - minAffinitySize := len(m.numaNodes) + // Narrow the bitmask iteration to NUMA nodes that actually host + // devices for this resource. On platforms where the OS exposes many + // NUMA nodes that carry no devices (e.g. NVIDIA GB200 with 36 NUMA + // nodes, most hosting only GPU HBM), iterating all machine NUMA + // nodes would enumerate O(2^n) subsets. Restricting to device- + // bearing nodes reduces n to the number of nodes that matter. + // Because device-less nodes never contribute to devicesInMask, + // excluding them does not change minAffinitySize or Preferred + // flag computation. + numaNodes := m.deviceNUMANodes(resource) + if len(numaNodes) == 0 { + numaNodes = m.numaNodes + } + + // Initialize minAffinitySize to the number of NUMA nodes under + // consideration; it will be narrowed as satisfying masks are found. + minAffinitySize := len(numaNodes) // Iterate through all combinations of NUMA Nodes and build hints from them. hints := []topologymanager.TopologyHint{} - bitmask.IterateBitMasks(m.numaNodes, func(mask bitmask.BitMask) { + bitmask.IterateBitMasks(numaNodes, func(mask bitmask.BitMask) { // First, update minAffinitySize for the current request size. devicesInMask := 0 for _, device := range m.allDevices[resource] { @@ -218,6 +233,28 @@ func (m *ManagerImpl) generateDeviceTopologyHints(resource string, available set return hints } +// deviceNUMANodes returns the sorted list of NUMA node IDs that host at least +// one device for the given resource. The returned set is guaranteed to be a +// subset of m.numaNodes: any NUMA IDs reported by device plugins that are not +// known to cadvisor are logged and dropped. +// The caller must hold m.mutex. +func (m *ManagerImpl) deviceNUMANodes(resource string) []int { + nodesWithDevices := sets.New[int]() + for _, device := range m.allDevices[resource] { + nodesWithDevices.Insert(m.getNUMANodeIds(device.Topology)...) + } + + knownNodes := sets.New[int](m.numaNodes...) + unknown := nodesWithDevices.Difference(knownNodes) + if unknown.Len() > 0 { + klog.TODO().Info("Ignoring NUMA node IDs reported by device plugin that are unknown to cadvisor", + "resource", resource, "unknownNodes", sets.List(unknown), "knownNodes", m.numaNodes) + nodesWithDevices = nodesWithDevices.Intersection(knownNodes) + } + + return sets.List(nodesWithDevices) +} + func (m *ManagerImpl) getNUMANodeIds(topology *pluginapi.TopologyInfo) []int { if topology == nil { return nil From 782bd81e2760a3d7280979294d5c95a6628c2bb7 Mon Sep 17 00:00:00 2001 From: ci-robot Date: Mon, 11 May 2026 04:23:50 +0000 Subject: [PATCH 5/7] update component images --- packaging/crio.conf.d/10-microshift_amd64.conf | 2 +- packaging/crio.conf.d/10-microshift_arm64.conf | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/packaging/crio.conf.d/10-microshift_amd64.conf b/packaging/crio.conf.d/10-microshift_amd64.conf index 2781930a45..abb515a7b2 100644 --- a/packaging/crio.conf.d/10-microshift_amd64.conf +++ b/packaging/crio.conf.d/10-microshift_amd64.conf @@ -2,6 +2,6 @@ # for community builds on top of OKD, this setting has no effect [crio.image] global_auth_file="/etc/crio/openshift-pull-secret" -pause_image = "quay.io/openshift-release-dev/ocp-v4.0-art-dev@sha256:af6be392c7cc9c779786db0f1e5a3bd1acbfbef900b49ee6dc091f8e493a6f1d" +pause_image = "quay.io/openshift-release-dev/ocp-v4.0-art-dev@sha256:34a6a51c9104d19bfdfeef6087a6d557c0c594a700ab15d57b7539e2380b43ff" pause_image_auth_file = "/etc/crio/openshift-pull-secret" pause_command = "/usr/bin/pod" diff --git a/packaging/crio.conf.d/10-microshift_arm64.conf b/packaging/crio.conf.d/10-microshift_arm64.conf index 3b61cbf40d..efe8e80eec 100644 --- a/packaging/crio.conf.d/10-microshift_arm64.conf +++ b/packaging/crio.conf.d/10-microshift_arm64.conf @@ -2,6 +2,6 @@ # for community builds on top of OKD, this setting has no effect [crio.image] global_auth_file="/etc/crio/openshift-pull-secret" -pause_image = "quay.io/openshift-release-dev/ocp-v4.0-art-dev@sha256:5a46c358d68b075344a1f05a7a456e59befbec3195d76f1dc9ed5b31e16d32f4" +pause_image = "quay.io/openshift-release-dev/ocp-v4.0-art-dev@sha256:ddd8fc893c116c07bd691b60e6640966fde4fc2ac731e7f26337f2e2d5c97048" pause_image_auth_file = "/etc/crio/openshift-pull-secret" pause_command = "/usr/bin/pod" From c17b567315c2d05e68b2ed91f78d2fb2183c7fd9 Mon Sep 17 00:00:00 2001 From: ci-robot Date: Mon, 11 May 2026 04:23:52 +0000 Subject: [PATCH 6/7] update manifests --- .../components/multus/kustomization.aarch64.yaml | 4 ++-- .../components/multus/kustomization.x86_64.yaml | 4 ++-- .../multus/release-multus-aarch64.json | 6 +++--- .../components/multus/release-multus-x86_64.json | 6 +++--- .../kustomization.aarch64.yaml | 10 +++++----- .../kustomization.x86_64.yaml | 10 +++++----- .../release-olm-aarch64.json | 8 ++++---- .../release-olm-x86_64.json | 8 ++++---- assets/release/release-aarch64.json | 16 ++++++++-------- assets/release/release-x86_64.json | 16 ++++++++-------- 10 files changed, 44 insertions(+), 44 deletions(-) diff --git a/assets/components/multus/kustomization.aarch64.yaml b/assets/components/multus/kustomization.aarch64.yaml index da9b8e62ef..2d53ba0bf6 100644 --- a/assets/components/multus/kustomization.aarch64.yaml +++ b/assets/components/multus/kustomization.aarch64.yaml @@ -2,7 +2,7 @@ images: - name: multus-cni-microshift newName: quay.io/openshift-release-dev/ocp-v4.0-art-dev - digest: sha256:6bc294a19561dd1ea678e56b9d8429ae3746b5db78abe6bad967138d66f6f4dc + digest: sha256:a339483761ed2aa820d4181a0395ca3edef83e631cdd4433c8e7ccf1a39c1b8c - name: containernetworking-plugins-microshift newName: quay.io/openshift-release-dev/ocp-v4.0-art-dev - digest: sha256:b7c91ffe8e969cc648d5de792ff3f37aa7e955451458cf923e997875c152901b + digest: sha256:87a3fc20e2672e68587e04209a0a5f17e798f424ba756cdf84fd7449b531760d diff --git a/assets/components/multus/kustomization.x86_64.yaml b/assets/components/multus/kustomization.x86_64.yaml index 2fca35a63d..601eaa4f70 100644 --- a/assets/components/multus/kustomization.x86_64.yaml +++ b/assets/components/multus/kustomization.x86_64.yaml @@ -2,7 +2,7 @@ images: - name: multus-cni-microshift newName: quay.io/openshift-release-dev/ocp-v4.0-art-dev - digest: sha256:276fb37cdad468e03d504e3ea57c1a8e9a1b26d4d8ccbe03ae8d9ac9abccd58e + digest: sha256:0f2800279630bade6f011ec2ff19651b4c206d89c8194d1c71359f02c7c2964a - name: containernetworking-plugins-microshift newName: quay.io/openshift-release-dev/ocp-v4.0-art-dev - digest: sha256:893c1678b874b7ce2fd6ef8df7b3c6da551b8152a8cd1fd982229766aeba4edd + digest: sha256:9962397e6b75b2a932f0b45dcec4d69fafe66d064c61844de1a751fbafa8ea8c diff --git a/assets/components/multus/release-multus-aarch64.json b/assets/components/multus/release-multus-aarch64.json index 2113a6ef48..569b3e026b 100644 --- a/assets/components/multus/release-multus-aarch64.json +++ b/assets/components/multus/release-multus-aarch64.json @@ -1,9 +1,9 @@ { "release": { - "base": "4.22.0-0.nightly-arm64-2026-05-07-131722" + "base": "4.22.0-0.nightly-arm64-2026-05-11-031617" }, "images": { - "multus-cni-microshift": "quay.io/openshift-release-dev/ocp-v4.0-art-dev@sha256:6bc294a19561dd1ea678e56b9d8429ae3746b5db78abe6bad967138d66f6f4dc", - "containernetworking-plugins-microshift": "quay.io/openshift-release-dev/ocp-v4.0-art-dev@sha256:b7c91ffe8e969cc648d5de792ff3f37aa7e955451458cf923e997875c152901b" + "multus-cni-microshift": "quay.io/openshift-release-dev/ocp-v4.0-art-dev@sha256:a339483761ed2aa820d4181a0395ca3edef83e631cdd4433c8e7ccf1a39c1b8c", + "containernetworking-plugins-microshift": "quay.io/openshift-release-dev/ocp-v4.0-art-dev@sha256:87a3fc20e2672e68587e04209a0a5f17e798f424ba756cdf84fd7449b531760d" } } diff --git a/assets/components/multus/release-multus-x86_64.json b/assets/components/multus/release-multus-x86_64.json index 2d318d772e..5b83e92c65 100644 --- a/assets/components/multus/release-multus-x86_64.json +++ b/assets/components/multus/release-multus-x86_64.json @@ -1,9 +1,9 @@ { "release": { - "base": "4.22.0-0.nightly-2026-05-05-131253" + "base": "4.22.0-0.nightly-2026-05-10-025105" }, "images": { - "multus-cni-microshift": "quay.io/openshift-release-dev/ocp-v4.0-art-dev@sha256:276fb37cdad468e03d504e3ea57c1a8e9a1b26d4d8ccbe03ae8d9ac9abccd58e", - "containernetworking-plugins-microshift": "quay.io/openshift-release-dev/ocp-v4.0-art-dev@sha256:893c1678b874b7ce2fd6ef8df7b3c6da551b8152a8cd1fd982229766aeba4edd" + "multus-cni-microshift": "quay.io/openshift-release-dev/ocp-v4.0-art-dev@sha256:0f2800279630bade6f011ec2ff19651b4c206d89c8194d1c71359f02c7c2964a", + "containernetworking-plugins-microshift": "quay.io/openshift-release-dev/ocp-v4.0-art-dev@sha256:9962397e6b75b2a932f0b45dcec4d69fafe66d064c61844de1a751fbafa8ea8c" } } diff --git a/assets/optional/operator-lifecycle-manager/kustomization.aarch64.yaml b/assets/optional/operator-lifecycle-manager/kustomization.aarch64.yaml index 8c6279e102..81279019f6 100644 --- a/assets/optional/operator-lifecycle-manager/kustomization.aarch64.yaml +++ b/assets/optional/operator-lifecycle-manager/kustomization.aarch64.yaml @@ -2,13 +2,13 @@ images: - name: quay.io/operator-framework/olm newName: quay.io/openshift-release-dev/ocp-v4.0-art-dev - digest: sha256:19a8f42e7f4b4bfe3c18e2c70e196f43aa71c7f3fcecd2c1eb0cf11a16b597e3 + digest: sha256:b300f79d3b5391e155c45586f7273061fe72c63cd684b14fc2f45e13af8eb391 - name: quay.io/operator-framework/configmap-operator-registry newName: quay.io/openshift-release-dev/ocp-v4.0-art-dev - digest: sha256:036a7e01a119d56f642a9ad35d9748dc0ba5775a22fd7c787f12a885ce8ad18d + digest: sha256:dfc17d862ab5364327bdea9edd36205e10864617f4a10846660f170bfad65953 - name: quay.io/openshift/origin-kube-rbac-proxy newName: quay.io/openshift-release-dev/ocp-v4.0-art-dev - digest: sha256:4c86178e34a6f7959590bbfd6cca3e56d455ee84efabe7c17c74632a103b0886 + digest: sha256:bad63efb7c149b090e9ce499e037e2720bfea98da65a021ee903f5d8d2107b8d patches: - patch: |- @@ -16,12 +16,12 @@ patches: path: /spec/template/spec/containers/0/env/- value: name: OPERATOR_REGISTRY_IMAGE - value: quay.io/openshift-release-dev/ocp-v4.0-art-dev@sha256:036a7e01a119d56f642a9ad35d9748dc0ba5775a22fd7c787f12a885ce8ad18d + value: quay.io/openshift-release-dev/ocp-v4.0-art-dev@sha256:dfc17d862ab5364327bdea9edd36205e10864617f4a10846660f170bfad65953 - op: add path: /spec/template/spec/containers/0/env/- value: name: OLM_IMAGE - value: quay.io/openshift-release-dev/ocp-v4.0-art-dev@sha256:19a8f42e7f4b4bfe3c18e2c70e196f43aa71c7f3fcecd2c1eb0cf11a16b597e3 + value: quay.io/openshift-release-dev/ocp-v4.0-art-dev@sha256:b300f79d3b5391e155c45586f7273061fe72c63cd684b14fc2f45e13af8eb391 target: kind: Deployment labelSelector: app=catalog-operator diff --git a/assets/optional/operator-lifecycle-manager/kustomization.x86_64.yaml b/assets/optional/operator-lifecycle-manager/kustomization.x86_64.yaml index d1a669009e..bc18696b7e 100644 --- a/assets/optional/operator-lifecycle-manager/kustomization.x86_64.yaml +++ b/assets/optional/operator-lifecycle-manager/kustomization.x86_64.yaml @@ -2,13 +2,13 @@ images: - name: quay.io/operator-framework/olm newName: quay.io/openshift-release-dev/ocp-v4.0-art-dev - digest: sha256:d69c1d9542bab05d89605a7c904797518543651e51db57ba3aa44d509ef7b8be + digest: sha256:d0825f282d6e41379875ac38bfad7293a3cb5c18846a12617fbd735ff462e2d1 - name: quay.io/operator-framework/configmap-operator-registry newName: quay.io/openshift-release-dev/ocp-v4.0-art-dev - digest: sha256:1ef926550985c77ae2570217cb3aa082809964514bb4fb62ff4c85c4fc58cfab + digest: sha256:f8150398a04e21df4c6a1b897e52883809e806f382041b8a00b3591a2c342782 - name: quay.io/openshift/origin-kube-rbac-proxy newName: quay.io/openshift-release-dev/ocp-v4.0-art-dev - digest: sha256:d6bb41c8deaea4f42de481e35c208c264c9292f0113bf303b380756bb80b8ad2 + digest: sha256:fa1787fbd0cc0c3c9659e3355afe6bec44aed4deec8a99e1ce495f62df774b86 patches: - patch: |- @@ -16,12 +16,12 @@ patches: path: /spec/template/spec/containers/0/env/- value: name: OPERATOR_REGISTRY_IMAGE - value: quay.io/openshift-release-dev/ocp-v4.0-art-dev@sha256:1ef926550985c77ae2570217cb3aa082809964514bb4fb62ff4c85c4fc58cfab + value: quay.io/openshift-release-dev/ocp-v4.0-art-dev@sha256:f8150398a04e21df4c6a1b897e52883809e806f382041b8a00b3591a2c342782 - op: add path: /spec/template/spec/containers/0/env/- value: name: OLM_IMAGE - value: quay.io/openshift-release-dev/ocp-v4.0-art-dev@sha256:d69c1d9542bab05d89605a7c904797518543651e51db57ba3aa44d509ef7b8be + value: quay.io/openshift-release-dev/ocp-v4.0-art-dev@sha256:d0825f282d6e41379875ac38bfad7293a3cb5c18846a12617fbd735ff462e2d1 target: kind: Deployment labelSelector: app=catalog-operator diff --git a/assets/optional/operator-lifecycle-manager/release-olm-aarch64.json b/assets/optional/operator-lifecycle-manager/release-olm-aarch64.json index a7e30f7d6f..b35dd4aae6 100644 --- a/assets/optional/operator-lifecycle-manager/release-olm-aarch64.json +++ b/assets/optional/operator-lifecycle-manager/release-olm-aarch64.json @@ -1,10 +1,10 @@ { "release": { - "base": "4.22.0-0.nightly-arm64-2026-05-07-131722" + "base": "4.22.0-0.nightly-arm64-2026-05-11-031617" }, "images": { - "operator-lifecycle-manager": "quay.io/openshift-release-dev/ocp-v4.0-art-dev@sha256:19a8f42e7f4b4bfe3c18e2c70e196f43aa71c7f3fcecd2c1eb0cf11a16b597e3", - "operator-registry": "quay.io/openshift-release-dev/ocp-v4.0-art-dev@sha256:036a7e01a119d56f642a9ad35d9748dc0ba5775a22fd7c787f12a885ce8ad18d", - "kube-rbac-proxy": "quay.io/openshift-release-dev/ocp-v4.0-art-dev@sha256:4c86178e34a6f7959590bbfd6cca3e56d455ee84efabe7c17c74632a103b0886" + "operator-lifecycle-manager": "quay.io/openshift-release-dev/ocp-v4.0-art-dev@sha256:b300f79d3b5391e155c45586f7273061fe72c63cd684b14fc2f45e13af8eb391", + "operator-registry": "quay.io/openshift-release-dev/ocp-v4.0-art-dev@sha256:dfc17d862ab5364327bdea9edd36205e10864617f4a10846660f170bfad65953", + "kube-rbac-proxy": "quay.io/openshift-release-dev/ocp-v4.0-art-dev@sha256:bad63efb7c149b090e9ce499e037e2720bfea98da65a021ee903f5d8d2107b8d" } } diff --git a/assets/optional/operator-lifecycle-manager/release-olm-x86_64.json b/assets/optional/operator-lifecycle-manager/release-olm-x86_64.json index 23ed514aaf..449f68f75d 100644 --- a/assets/optional/operator-lifecycle-manager/release-olm-x86_64.json +++ b/assets/optional/operator-lifecycle-manager/release-olm-x86_64.json @@ -1,10 +1,10 @@ { "release": { - "base": "4.22.0-0.nightly-2026-05-05-131253" + "base": "4.22.0-0.nightly-2026-05-10-025105" }, "images": { - "operator-lifecycle-manager": "quay.io/openshift-release-dev/ocp-v4.0-art-dev@sha256:d69c1d9542bab05d89605a7c904797518543651e51db57ba3aa44d509ef7b8be", - "operator-registry": "quay.io/openshift-release-dev/ocp-v4.0-art-dev@sha256:1ef926550985c77ae2570217cb3aa082809964514bb4fb62ff4c85c4fc58cfab", - "kube-rbac-proxy": "quay.io/openshift-release-dev/ocp-v4.0-art-dev@sha256:d6bb41c8deaea4f42de481e35c208c264c9292f0113bf303b380756bb80b8ad2" + "operator-lifecycle-manager": "quay.io/openshift-release-dev/ocp-v4.0-art-dev@sha256:d0825f282d6e41379875ac38bfad7293a3cb5c18846a12617fbd735ff462e2d1", + "operator-registry": "quay.io/openshift-release-dev/ocp-v4.0-art-dev@sha256:f8150398a04e21df4c6a1b897e52883809e806f382041b8a00b3591a2c342782", + "kube-rbac-proxy": "quay.io/openshift-release-dev/ocp-v4.0-art-dev@sha256:fa1787fbd0cc0c3c9659e3355afe6bec44aed4deec8a99e1ce495f62df774b86" } } diff --git a/assets/release/release-aarch64.json b/assets/release/release-aarch64.json index 8d074871c3..4e231f5943 100644 --- a/assets/release/release-aarch64.json +++ b/assets/release/release-aarch64.json @@ -1,16 +1,16 @@ { "release": { - "base": "4.22.0-0.nightly-arm64-2026-05-07-131722" + "base": "4.22.0-0.nightly-arm64-2026-05-11-031617" }, "images": { - "cli": "quay.io/openshift-release-dev/ocp-v4.0-art-dev@sha256:83de4633d89083f64afda76ccae7ce41d23fb98c208a4dbaee4021ce8f8dd2b0", - "coredns": "quay.io/openshift-release-dev/ocp-v4.0-art-dev@sha256:b62a405839d893afb31ef442f9ae26eab5170f8e9cf4f7fa040fbeb64aca7e37", + "cli": "quay.io/openshift-release-dev/ocp-v4.0-art-dev@sha256:283dabdca83c3bd1143b81351b2531399e985e929255cfbe2c071f46ef69e75b", + "coredns": "quay.io/openshift-release-dev/ocp-v4.0-art-dev@sha256:0a04599a629047e5207302d1abc3cd34e0d53a7317eb2975afc6b47f0d37aa22", "haproxy-router": "quay.io/openshift-release-dev/ocp-v4.0-art-dev@sha256:d95f2a39f9b0a3c93ae81e3b1598fbc1daec60934121d705a74d439663dc1fca", - "kube-rbac-proxy": "quay.io/openshift-release-dev/ocp-v4.0-art-dev@sha256:4c86178e34a6f7959590bbfd6cca3e56d455ee84efabe7c17c74632a103b0886", - "ovn-kubernetes-microshift": "quay.io/openshift-release-dev/ocp-v4.0-art-dev@sha256:66f1f296b0797f8e9dbc0c7db9944d9dcb91223e3ac568be19122a30e0518816", - "pod": "quay.io/openshift-release-dev/ocp-v4.0-art-dev@sha256:5a46c358d68b075344a1f05a7a456e59befbec3195d76f1dc9ed5b31e16d32f4", - "service-ca-operator": "quay.io/openshift-release-dev/ocp-v4.0-art-dev@sha256:c36e7da1702f1bb40fa2f87deb0770b7d298d53d4bb1108617999d693e7c4173", + "kube-rbac-proxy": "quay.io/openshift-release-dev/ocp-v4.0-art-dev@sha256:bad63efb7c149b090e9ce499e037e2720bfea98da65a021ee903f5d8d2107b8d", + "ovn-kubernetes-microshift": "quay.io/openshift-release-dev/ocp-v4.0-art-dev@sha256:9fba8b924f84e0a95572434784acd1a9e93963fdbc5a66b84df52162b4431c23", + "pod": "quay.io/openshift-release-dev/ocp-v4.0-art-dev@sha256:ddd8fc893c116c07bd691b60e6640966fde4fc2ac731e7f26337f2e2d5c97048", + "service-ca-operator": "quay.io/openshift-release-dev/ocp-v4.0-art-dev@sha256:7847b2c52a18ca9a52e95aebbf518795db0793e2365f9eb9a3868d266b6e49a8", "lvms_operator": "registry.redhat.io/lvms4/lvms-rhel9-operator@sha256:3766640b19c336b443619ecdb35f36b479c79ea71b21de97febf024a5eaf6c84", - "csi-snapshot-controller": "quay.io/openshift-release-dev/ocp-v4.0-art-dev@sha256:00cf65fef227c8af1c77c756681ac6cd73bac2df58a279175dac61109138b821" + "csi-snapshot-controller": "quay.io/openshift-release-dev/ocp-v4.0-art-dev@sha256:a9a9ad26a571bf48412b71ea60ddbffbe5d27a9a1e44180348cdc1afe132a0f4" } } diff --git a/assets/release/release-x86_64.json b/assets/release/release-x86_64.json index 9ff6f14cb2..e816b65e80 100644 --- a/assets/release/release-x86_64.json +++ b/assets/release/release-x86_64.json @@ -1,16 +1,16 @@ { "release": { - "base": "4.22.0-0.nightly-2026-05-05-131253" + "base": "4.22.0-0.nightly-2026-05-10-025105" }, "images": { - "cli": "quay.io/openshift-release-dev/ocp-v4.0-art-dev@sha256:233458a2060d80a33ed8c4b5c71f5865c1a1964158bd4cfcfe3685fff66b0f0b", - "coredns": "quay.io/openshift-release-dev/ocp-v4.0-art-dev@sha256:dc5dc59da1ccb71521578043aec4ce2d894339c85319278019d11f6936afde4e", + "cli": "quay.io/openshift-release-dev/ocp-v4.0-art-dev@sha256:3c3c0e9fbd7c4156ad282c81101ec17af719ade532412d7ce4f5eee2217a6d55", + "coredns": "quay.io/openshift-release-dev/ocp-v4.0-art-dev@sha256:46ab0b877beb64255d0840a8c001cdc2473d1aacc955195ac61cfd9266f17f50", "haproxy-router": "quay.io/openshift-release-dev/ocp-v4.0-art-dev@sha256:18e468aec4c7c11c8185384388940d19f0436ecd9ac7aaa26ae86ddbd32f8c8a", - "kube-rbac-proxy": "quay.io/openshift-release-dev/ocp-v4.0-art-dev@sha256:d6bb41c8deaea4f42de481e35c208c264c9292f0113bf303b380756bb80b8ad2", - "ovn-kubernetes-microshift": "quay.io/openshift-release-dev/ocp-v4.0-art-dev@sha256:d4f50b9625e53542fb114b433484ec222f180efca3caa0d64c445e52fbad11ac", - "pod": "quay.io/openshift-release-dev/ocp-v4.0-art-dev@sha256:af6be392c7cc9c779786db0f1e5a3bd1acbfbef900b49ee6dc091f8e493a6f1d", - "service-ca-operator": "quay.io/openshift-release-dev/ocp-v4.0-art-dev@sha256:87746cb5b32d56075d81579155ce32375014f0f727104020e474bbfe8db3bfe9", + "kube-rbac-proxy": "quay.io/openshift-release-dev/ocp-v4.0-art-dev@sha256:fa1787fbd0cc0c3c9659e3355afe6bec44aed4deec8a99e1ce495f62df774b86", + "ovn-kubernetes-microshift": "quay.io/openshift-release-dev/ocp-v4.0-art-dev@sha256:f42dc8ac6c06b8babf4c3fce94e8baeb38c1d9aaa30f1bedca676d35d06f1703", + "pod": "quay.io/openshift-release-dev/ocp-v4.0-art-dev@sha256:34a6a51c9104d19bfdfeef6087a6d557c0c594a700ab15d57b7539e2380b43ff", + "service-ca-operator": "quay.io/openshift-release-dev/ocp-v4.0-art-dev@sha256:cbd194f6fde1826d46b350c6d5c694b68569e80bb759b6b1ef9c4a08a1c08701", "lvms_operator": "registry.redhat.io/lvms4/lvms-rhel9-operator@sha256:58804d8baf922927b66cec9424d431a3bdb341d207024ce40cc8f0123bac03ee", - "csi-snapshot-controller": "quay.io/openshift-release-dev/ocp-v4.0-art-dev@sha256:11d0a10900773e5d3c26a1decf518c021010d64897e1d9f33f281094846d1b15" + "csi-snapshot-controller": "quay.io/openshift-release-dev/ocp-v4.0-art-dev@sha256:b5c076ce05279b9a8cbc00f34e43c4a11f8fc4765e4a27cf47545b5ca86acfe5" } } From c454f4ccaebd79072b54ad6eb64c412a0a1af0bc Mon Sep 17 00:00:00 2001 From: ci-robot Date: Mon, 11 May 2026 04:23:55 +0000 Subject: [PATCH 7/7] update buildfiles --- Makefile.kube_git.var | 2 +- Makefile.version.aarch64.var | 2 +- Makefile.version.x86_64.var | 2 +- 3 files changed, 3 insertions(+), 3 deletions(-) diff --git a/Makefile.kube_git.var b/Makefile.kube_git.var index 1bcc9770ce..ea09ca61fe 100644 --- a/Makefile.kube_git.var +++ b/Makefile.kube_git.var @@ -1,5 +1,5 @@ KUBE_GIT_MAJOR=1 KUBE_GIT_MINOR=35 KUBE_GIT_VERSION=v1.35.4 -KUBE_GIT_COMMIT=da4553e9f23c91c792094a1ddbba933784becce4 +KUBE_GIT_COMMIT=80f28ac33ac111532fb8ba59b2e569085ee871b0 KUBE_GIT_TREE_STATE=clean diff --git a/Makefile.version.aarch64.var b/Makefile.version.aarch64.var index 31bcbf1906..5a84d7bc6b 100644 --- a/Makefile.version.aarch64.var +++ b/Makefile.version.aarch64.var @@ -1 +1 @@ -OCP_VERSION := 4.22.0-0.nightly-arm64-2026-05-07-131722 +OCP_VERSION := 4.22.0-0.nightly-arm64-2026-05-11-031617 diff --git a/Makefile.version.x86_64.var b/Makefile.version.x86_64.var index e8d921c806..b46a8e9d1f 100644 --- a/Makefile.version.x86_64.var +++ b/Makefile.version.x86_64.var @@ -1 +1 @@ -OCP_VERSION := 4.22.0-0.nightly-2026-05-05-131253 +OCP_VERSION := 4.22.0-0.nightly-2026-05-10-025105