do not merge: OCPBUGS-98213 Verification - #6033
Conversation
|
/hold will not merge. |
There was a problem hiding this comment.
Pull request overview
This PR is a verification-oriented change to help confirm HyperShift router behavior (router pod should not be deployed until routes can be rendered into the router ConfigMap). It does this by (1) forcing a single focused E2E scenario and (2) adding mgmt-agent watchers to emit Kubernetes event timelines (router ConfigMap lifecycle).
Changes:
- Focuses the “Private KeyVault” cluster-create E2E and pins it to an explicitly resolved OCP 4.23 candidate install version, plus an out-of-band CPO image override tag.
- Adds a
ConfigMapWatcherinmgmt-agentto logrouterConfigMap create/update/delete events (via a field-selector-scoped informer). - Wires the new watcher into mgmt-agent startup under leader election and adds basic unit tests.
Reviewed changes
Copilot reviewed 4 out of 4 changed files in this pull request and generated 4 comments.
| File | Description |
|---|---|
| test/e2e/cluster_create_private_kv.go | Focused E2E test + explicit version resolution + experimental tag to override CPO image |
| mgmt-agent/pkg/controller/cmwatcher.go | New informer-backed ConfigMap watcher that logs router ConfigMap events |
| mgmt-agent/pkg/controller/cmwatcher_test.go | Unit tests for the new watcher/logging helper |
| mgmt-agent/cmd/options.go | Wires ConfigMap watcher/informers into mgmt-agent lifecycle under leader election |
2138cb4 to
5971d81
Compare
531682d to
8baf66f
Compare
|
KQL queries to show that there is a single revision of router pod replicasets during installation. Can use these for cluster installs if we know the hostedcluster namespace. let hcNamespace="";
cluster('https://hcp-dev-us-2.eastus2.kusto.windows.net').database('ServiceLogs').kubeAudit
| where timestamp between (datetime(2026-07-13T15:43:01Z) .. datetime(2026-07-14T16:06:00Z))
| where resourceId has 'ci01-j8862720-mgmt-1'
| where stage == 'ResponseComplete'
| where tostring(objectRef.namespace) == 'ocm-arohcpci01-2rhbkb9hj5tgfjeb1avcm9ncp7upjvb1-e1j5q9p7g7s1v2z'
| where objectRef.resource in("deployments", "replicasets")
| project timestamp=requestReceivedTimestamp,
verb,
resource = tostring(objectRef.resource),
name = tostring(objectRef.name),
userName = tostring(user.username),
responseCode = toint(responseStatus.code)
| order by timestamp asc
cluster('https://hcp-dev-us-2.eastus2.kusto.windows.net').database('ServiceLogs').kubernetesEvents
| where timestamp between (datetime(2026-07-13T15:43:01Z) .. datetime(2026-07-13T16:06:00Z))
| where cluster in ('ci01-j8862720-svc', 'ci01-j8862720-mgmt-1')
| where eventNamespace == hcNamespace
| where objectKind == 'Deployment' and reason == 'ScalingReplicaSet'
| extend firstSeen = coalesce(firstSeen, todatetime(log.event_time))
| project firstSeen, objectName, message
| order by firstSeen asc |
8baf66f to
786bef5
Compare
786bef5 to
399a89a
Compare
|
[APPROVALNOTIFIER] This PR is APPROVED This pull-request has been approved by: bennerv The full list of commands accepted by this bot can be found here. The pull request process is described here DetailsNeeds approval from an approver in each of these files:
Approvers can indicate their approval by writing |
1dfbac6 to
50c4645
Compare
50c4645 to
00c64e7
Compare
|
/test e2e-parallel |
|
main HyperShift operator updates good on the below scenarios. Only a single replicaset is seen during the lifetime of the cluster.
let swiftClusterPublicKv="cpo-override-2512-nswttw";
let swiftClusterPrivateKv="private-keyvault-2l2gqg";
let _startTime = datetime(2026-07-14T20:24:07.0000000Z);
let _endTime = datetime(2026-07-14T23:27:29.0000000Z);
let cid = (database('ServiceLogs').table('clustersServiceLogs')
| where timestamp between (_startTime .. _endTime)
| where resource_id has swiftClusterPrivateKv
| where strlen( cid) > 0
| distinct cid);
let hcNamespace=(database('HostedControlPlaneLogs').table('containerLogs')
| where timestamp between (_startTime .. _endTime)
| where namespace_name has_any (cid)
| distinct namespace_name);
database('ServiceLogs').kubernetesEvents
| where eventNamespace has_any (hcNamespace)
and objectName contains 'router'
| extend firstSeen = coalesce(firstSeen, todatetime(log.event_time)), lastSeen = coalesce(lastSeen, todatetime(log.event_time))
| summarize arg_max(count, firstSeen, lastSeen) by objectKind, objectName, reason, message
| project objectKind, objectName, reason, message, firstSeen, lastSeen, count
| order by firstSeen asc |
|
Hi, If you plan on merging the 2 new CPO tests they will need MI Container labels added (labels.MIContainers(n) where n is the number of MI Containers), a rebase will pull in the new verify checks for the MI container labels. |
00c64e7 to
21ccb31
Compare
21ccb31 to
fa7eacf
Compare
|
/test e2e-parallel should test 4.22 release now based on openshift/hypershift#9212 |
Built from openshift/hypershift cherry-pick-OCPBUGS-98213-to-release-4.22 at commit 829f43241b (openshift/hypershift#9212). Image: arohcpocpdev.azurecr.io/control-plane-operator@sha256:2a9a553057e74e9263829ad636213cad63f9d8ae91a104e0a3d593a0164ce294 Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
b80818b to
c84eb71
Compare
|
/test e2e-parallel |
|
Ben Vesel (@bennerv): The following tests failed, say
Full PR test history. Your PR dashboard. DetailsInstructions for interacting with me using PR comments are available here. If you have questions or suggestions related to my behavior, please file an issue against the kubernetes-sigs/prow repository. I understand the commands that are listed here. |
|
/close Todd will do validation on the HyperShift PRs. This isn't needed but he can cherry-pick out the changes as needed to validate in his own PR if he wants. |
Revert to the CPO image bennerv built and validated on PR Azure#6033. The locally-built image from the cherry-pick branch had version mismatch issues with the 4.22 release payload. Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
What
Help verify router pod doesn't get deployed until all route are able to be rendered in the router configmap.
Why
Testing