[oadp-1.6] [OADP-8716] Pin MCE to stable-2.8 only below OCP 4.19, matching HCP target env - #2412
Conversation
|
Important Review skippedAuto reviews are disabled on base/target branches other than the default branch. Please check the settings in the CodeRabbit UI or the ⚙️ Run configurationConfiguration used: Repository: openshift/coderabbit/.coderabbit.yaml Review profile: CHILL Plan: Enterprise Run ID: You can disable this status message by setting the Use the checkbox below for a quick retry:
Comment |
periodic-ci-openshift-oadp-operator-oadp-1.6-4.18-e2e-test-hcp-aws-periodic
was failing in the HCP suite's BeforeAll ("deployments.apps \"operator\"
not found" after a 600s timeout): MCE v2.11.5's backplane-operator
reconciler hard-rejects the MultiClusterEngine CR with a hardcoded
minimum-OpenShift-version check ("OCP version ... did not meet minimum
version requirement of 4.19.0"), confirmed via must-gather from a
failed run. This fires before any managed component -- including the
HyperShift operator Deployment -- is created, while MCE's own operator
Deployment/CSV report Ready/Succeeded normally. Traced to
stolostron/backplane-operator#3784.
Confirmed with the MCE team this is intentional, not a bug: MCE 2.11
(ACM 2.16) doesn't officially support OCP 4.18, only via an unsupported
support-exception path. More importantly, our actual GovCloud HCP
target environment doesn't run MCE 2.11 at all -- it's currently
ACM 2.13 / MCE 2.8, moving to ACM ~2.15 later (ROSAENG-58373). The MCE
Subscription had no Channel set, so it floated onto whatever the 4.18
catalog's default channel resolved to, rather than the version we
actually need to validate against.
Pin the MCE Subscription to Channel: "stable-2.8" explicitly, matching
the real target. Also extend DumpHypershiftDiagnostics to capture MCE
operator pod logs (filtered to a small keyword allowlist) plus
MultiClusterEngine CR conditions/components and namespace pod/event
listings -- none of this was previously captured by CI artifacts, and
would have made this much faster to diagnose.
Fixes: OADP-8716
See also: OADP-7564, ROSAENG-58373
Signed-off-by: Tiger Kaovilai <tkaovila@redhat.com>
HCP e2e tests don't only run on OCP 4.18 -- ci-operator/config in openshift/release has TEST_HCP set for oadp-1.6 on 4.18, 4.22, 4.23, and 5.0 as well, all running the same test binary. A hardcoded Channel: "stable-2.8" pin would have fixed 4.18 while breaking the others: stable-2.8's head bundle declares olm.maxOpenShiftVersion: 4.19, an OLM-enforced cap (unlike the min-version issue this PR is about, which is invisible to OLM) that would make the Subscription fail outright on 4.20+. Add SelectMCEChannel (tests/e2e/lib/hcp/mce.go), which reads the cluster's ClusterVersion and only pins to stable-2.8 below OCP 4.19 -- matching the real ACM 2.13/MCE 2.8 GovCloud HCP target on 4.18 -- while leaving the channel unset (floating on MCE's default) at 4.19 and above, where MCE 2.11 installs fine and the other HCP periodics already run. Signed-off-by: Tiger Kaovilai <tkaovila@redhat.com>
Addresses CodeRabbit findings on the diagnostics helper:
- DumpHypershiftDiagnostics now derives a 30s-bounded context instead of
using the caller's unbounded context.Background() directly. It's
called from a Ginkgo failure-message callback, which must return
promptly -- an unbounded Get/List or pod-log-stream call here could
otherwise hang that callback (and the whole suite) past any outer CI
timeout.
- lib.GetPodContainerLogs ignores any context and streams via its own
internal context.Background(), so it can't be bounded by passing a
context through. getPodLogsWithTimeout wraps that call in a goroutine
raced against the derived context's deadline instead, scoped to this
one call site rather than changing the shared helper's signature
(used unchanged by three other, unrelated call sites).
- unstructured.NestedSlice's conversion error (when status.conditions
or status.components isn't a []interface{}) was previously discarded;
now logged.
- Raw Kubernetes errors logged via %v are replaced with
sanitizeErrorForLog, which reduces an error to its structured status
reason (e.g. "NotFound") rather than the full error text, which for a
transport-level error can embed the API server's URL.
- Pod log lines (already keyword-filtered by filterLogLines) are now
additionally passed through redactDiagnosticLine, which strips
embedded URLs and bounds line length.
Signed-off-by: Tiger Kaovilai <tkaovila@redhat.com>
fed5ba4 to
7f38a33
Compare
|
[APPROVALNOTIFIER] This PR is APPROVED This pull-request has been approved by: kaovilai, openshift-cherrypick-robot, shubham-pampattiwar, sseago 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 |
|
/retest Note Responses generated with Claude |
|
@openshift-cherrypick-robot: all tests passed! 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. |
This is an automated cherry-pick of #2406
/assign kaovilai