Skip to content

CNF-22194 Core: ensure one copy of MachineConfigs in Core RDS - #825

Open
kchennag wants to merge 4 commits into
openshift-kni:mainfrom
kchennag:core-install-extra-manifests
Open

CNF-22194 Core: ensure one copy of MachineConfigs in Core RDS#825
kchennag wants to merge 4 commits into
openshift-kni:mainfrom
kchennag:core-install-extra-manifests

Conversation

@kchennag

@kchennag kchennag commented Jun 22, 2026

Copy link
Copy Markdown
Contributor

Core of CNF-22194.

  • Move reference MachineConfigs to telco-core/install/extra-manifests/ and remove duplicates from configuration/reference-crs/
  • Add install/kustomization.yaml ConfigMap example for ClusterInstance extraManifestsRefs
  • Add compare.sh --check-extra-manifests to make check (install vs kube-compare alignment)
  • Keep MCP copies under reference-crs/custom-manifests/ for PolicyGenerator path constraints

@openshift-ci
openshift-ci Bot requested review from lack and yanirq June 22, 2026 18:35
@openshift-ci

openshift-ci Bot commented Jun 22, 2026

Copy link
Copy Markdown

[APPROVALNOTIFIER] This PR is NOT APPROVED

This pull-request has been approved by: kchennag
Once this PR has been reviewed and has the lgtm label, please assign irinamihai for approval. For more information see the Code Review Process.

The full list of commands accepted by this bot can be found here.

Details Needs approval from an approver in each of these files:

Approvers can indicate their approval by writing /approve in a comment
Approvers can cancel approval by writing /approve cancel in a comment

@openshift-ci openshift-ci Bot added the needs-ok-to-test Indicates a PR that requires an org member to verify it is safe to test. label Jun 22, 2026
@openshift-ci

openshift-ci Bot commented Jun 22, 2026

Copy link
Copy Markdown

Hi @kchennag. Thanks for your PR.

I'm waiting for a openshift-kni member to verify that this patch is reasonable to test. If it is, they should reply with /ok-to-test on its own line. Until that is done, I will not automatically test new commits in this PR, but the usual testing commands by org members will still work.

Tip

We noticed you've done this a few times! Consider joining the org to skip this step and gain /lgtm and other bot rights. We recommend asking approvers on your previous PRs to sponsor you.

Once the patch is verified, the new status will be reflected by the ok-to-test label.

I understand the commands that are listed here.

Details

Instructions 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.

@coderabbitai

coderabbitai Bot commented Jun 22, 2026

Copy link
Copy Markdown

Review Change Stack

Warning

Review limit reached

@kchennag, you've reached your PR review limit, so we couldn't start this review.

Next review available in: 12 minutes

Enable usage-based reviews in Billing to review now. Otherwise, wait until the next included review is available.

How can I continue?

After more reviews become available, a review can be triggered using the @coderabbitai review command as a PR comment. Alternatively, push new commits to this PR.

To avoid repeated limits, reduce automatic review volume by pausing incremental auto-reviews earlier, using label-based review opt-in, excluding WIP or generated PR titles, or requesting reviews manually when the PR is ready. If your team needs uninterrupted high-volume reviews, an organization admin can enable usage-based reviews.

How do review limits work?

CodeRabbit enforces per-developer PR review limits for each organization. Most developers receive the normal plan review availability.

For paid Pro and Pro+ PR reviews, CodeRabbit uses adaptive limits for sustained high-volume activity. When a developer's recent PR review activity reaches the 95th percentile or higher among CodeRabbit users, additional reviews become available more gradually as earlier reviews age out of the rolling window.

Please refer docs for additional details.

Review details
⚙️ Run configuration

Configuration used: Organization UI

Review profile: CHILL

Plan: Enterprise

Run ID: 69c8ee80-193b-4903-ba92-2affb84a072f

📥 Commits

Reviewing files that changed from the base of the PR and between 915932c and 468c267.

📒 Files selected for processing (1)
  • telco-core/install/extra-manifests/mcp-worker-1.yaml
📝 Walkthrough

Walkthrough

MachineConfig and MachineConfigPool manifests are moved into install-time extra manifests, packaged through Kustomize, validated by a new compare.sh mode, and removed from relevant reference comparison sets. Documentation and MCP synchronization copies are updated.

Changes

MachineConfig relocation and validation

Layer / File(s) Summary
Canonical install manifests and ConfigMap wiring
telco-core/install/extra-manifests/*, telco-core/install/kustomization.yaml, telco-core/install/example-standard-clusterinstance.yaml
Adds worker MCP manifests, updates SCTP configuration, generates extra-manifests-configmap, and references it from the ClusterInstance.
Reference copies and MCP synchronization
telco-core/configuration/reference-crs/custom-manifests/*, telco-core/configuration/reference-crs-kube-compare/optional/*
Updates MCP behavior and formatting while documenting canonical-copy synchronization.
Comparison metadata and overlay updates
telco-core/configuration/reference-crs-kube-compare/metadata.yaml, compare_ignore, telco-core/configuration/core-overlay.yaml
Removes relocated resources from comparison sets and points MachineConfig sourcing to install extra manifests.
Dedicated extra-manifest validation
telco-core/configuration/compare.sh, telco-core/configuration/Makefile
Adds --check-extra-manifests, validates manifest alignment and constraints, and integrates the check target into make check.
Install workflow documentation
telco-core/install/README.md, telco-core/install/custom-manifests/README.md
Documents ConfigMap generation, installation, manifest locations, and optional custom-manifest references.

Estimated code review effort: 3 (Moderate) | ~25 minutes

Sequence Diagram(s)

sequenceDiagram
  participant Makefile
  participant compare_sh as compare.sh
  participant install_manifests as install/extra-manifests
  participant kube_compare as reference-crs-kube-compare
  participant custom_manifests as reference-crs/custom-manifests
  Makefile->>compare_sh: run --check-extra-manifests
  compare_sh->>install_manifests: read install manifests
  compare_sh->>kube_compare: compare reference manifests
  compare_sh->>custom_manifests: compare MCP copies
  compare_sh-->>Makefile: return validation status
Loading

Suggested reviewers: lack, yanirq

🚥 Pre-merge checks | ✅ 4 | ❌ 1

❌ Failed checks (1 warning)

Check name Status Explanation Resolution
Docstring Coverage ⚠️ Warning Docstring coverage is 33.33% which is insufficient. The required threshold is 80.00%. Write docstrings for the functions missing them to satisfy the coverage threshold.
✅ Passed checks (4 passed)
Check name Status Explanation
Title check ✅ Passed The title matches the PR’s main goal of keeping a single MachineConfig copy in Core RDS.
Description check ✅ Passed The description accurately summarizes the manifest moves, kustomization example, and new compare check.
Linked Issues check ✅ Passed Check skipped because no linked issues were found for this pull request.
Out of Scope Changes check ✅ Passed Check skipped because no linked issues were found for this pull request.
✨ Finishing Touches
🧪 Generate unit tests (beta)
  • Create PR with unit tests

Thanks for using CodeRabbit! It's free for OSS, and your support helps us grow. If you like it, consider giving us a shout-out.

❤️ Share

Comment @coderabbitai help to get the list of available commands.

@coderabbitai coderabbitai Bot left a comment

Copy link
Copy Markdown

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

🧹 Nitpick comments (1)
telco-core/configuration/compare.sh (1)

117-158: 🧹 Nitpick | 🔵 Trivial | ⚡ Quick win

Maintenance contract is implicit in hardcoded pairs array.

The pairs array (lines 122-130) acts as an explicit contract: all MachineConfig files under install/extra-manifests that require validation must be listed here and have corresponding entries in reference-crs-kube-compare/. If a new file is added to install/extra-manifests/, it must be:

  1. Added to reference-crs-kube-compare/
  2. Added to the pairs array

Without this update, the new file won't be diff-validated (though check_no_machineconfig_in_reference_crs will still catch strays in reference-crs). This is reasonable for a controlled migration, but document this maintenance contract in a comment or the README to avoid future confusion.

For now, the validation logic itself is solid: lines 145–151 positively assert version 3.2.0 and data:,sctp, while lines 153–155 negatively assert no 2.2.0 or legacy filesystem fields.

Add comment documenting the pairs array contract
  local -a pairs=(
+   # Contract: All MachineConfig files in install/extra-manifests that require
+   # validation against kube-compare-reference must be listed here.
+   # New files added to install/extra-manifests/ must be added to this list,
+   # reference-crs-kube-compare/, and reference-crs/custom-manifests/ (MCPs only).
    "control-plane-load-kernel-modules.yaml:optional/other/control-plane-load-kernel-modules.yaml"
🤖 Prompt for AI Agents
Verify each finding against current code. Fix only still-valid issues, skip the
rest with a brief reason, keep changes minimal, and validate.

In `@telco-core/configuration/compare.sh` around lines 117 - 158, The hardcoded
pairs array in the compare_install_extra_manifests() function implements an
implicit maintenance contract that is not documented. Add a comment above the
pairs array declaration explaining that this array defines the validation
contract: any new MachineConfig files added to install/extra-manifests/ must be
explicitly added to the pairs array with their corresponding path in
reference-crs-kube-compare/, otherwise they will not be diff-validated by this
comparison function.
🤖 Prompt for all review comments with AI agents
Verify each finding against current code. Fix only still-valid issues, skip the
rest with a brief reason, keep changes minimal, and validate.

Nitpick comments:
In `@telco-core/configuration/compare.sh`:
- Around line 117-158: The hardcoded pairs array in the
compare_install_extra_manifests() function implements an implicit maintenance
contract that is not documented. Add a comment above the pairs array declaration
explaining that this array defines the validation contract: any new
MachineConfig files added to install/extra-manifests/ must be explicitly added
to the pairs array with their corresponding path in reference-crs-kube-compare/,
otherwise they will not be diff-validated by this comparison function.

ℹ️ Review info
⚙️ Run configuration

Configuration used: Organization UI

Review profile: CHILL

Plan: Enterprise

Run ID: efa75f82-4a15-45cd-8a8f-ef965a66aa22

📥 Commits

Reviewing files that changed from the base of the PR and between 8da6552 and 7c2e3d1.

📒 Files selected for processing (28)
  • telco-core/configuration/Makefile
  • telco-core/configuration/compare.sh
  • telco-core/configuration/core-overlay.yaml
  • telco-core/configuration/reference-crs-kube-compare/compare_ignore
  • telco-core/configuration/reference-crs-kube-compare/metadata.yaml
  • telco-core/configuration/reference-crs-kube-compare/optional/networking/multus/tap_cni/mc_rootless_pods_selinux.yaml
  • telco-core/configuration/reference-crs-kube-compare/optional/other/control-plane-load-kernel-modules.yaml
  • telco-core/configuration/reference-crs-kube-compare/optional/other/worker-load-kernel-modules.yaml
  • telco-core/configuration/reference-crs/custom-manifests/README.md
  • telco-core/configuration/reference-crs/custom-manifests/mcp-worker-1.yaml
  • telco-core/configuration/reference-crs/custom-manifests/mcp-worker-2.yaml
  • telco-core/configuration/reference-crs/custom-manifests/mcp-worker-3.yaml
  • telco-core/configuration/reference-crs/optional/networking/multus/tap_cni/mc_rootless_pods_selinux.yaml
  • telco-core/configuration/reference-crs/optional/other/control-plane-load-kernel-modules.yaml
  • telco-core/configuration/reference-crs/optional/other/kdump-master.yaml
  • telco-core/configuration/reference-crs/optional/other/kdump-worker.yaml
  • telco-core/configuration/reference-crs/optional/other/mount_namespace_config_master.yaml
  • telco-core/configuration/reference-crs/optional/other/mount_namespace_config_worker.yaml
  • telco-core/configuration/reference-crs/optional/other/sctp_module_mc.yaml
  • telco-core/configuration/reference-crs/optional/other/worker-load-kernel-modules.yaml
  • telco-core/install/README.md
  • telco-core/install/custom-manifests/README.md
  • telco-core/install/example-standard-clusterinstance.yaml
  • telco-core/install/extra-manifests/mcp-worker-1.yaml
  • telco-core/install/extra-manifests/mcp-worker-2.yaml
  • telco-core/install/extra-manifests/mcp-worker-3.yaml
  • telco-core/install/extra-manifests/sctp_module_mc.yaml
  • telco-core/install/kustomization.yaml
💤 Files with no reviewable changes (9)
  • telco-core/configuration/reference-crs/optional/other/mount_namespace_config_master.yaml
  • telco-core/install/example-standard-clusterinstance.yaml
  • telco-core/configuration/reference-crs/optional/networking/multus/tap_cni/mc_rootless_pods_selinux.yaml
  • telco-core/configuration/reference-crs/optional/other/kdump-master.yaml
  • telco-core/configuration/reference-crs/optional/other/sctp_module_mc.yaml
  • telco-core/configuration/reference-crs/optional/other/kdump-worker.yaml
  • telco-core/configuration/reference-crs/optional/other/worker-load-kernel-modules.yaml
  • telco-core/configuration/reference-crs/optional/other/mount_namespace_config_worker.yaml
  • telco-core/configuration/reference-crs/optional/other/control-plane-load-kernel-modules.yaml

@MarSik

MarSik commented Jun 23, 2026

Copy link
Copy Markdown
Member

/ok-to-test

@openshift-ci openshift-ci Bot added ok-to-test Indicates a non-member PR verified by an org member that is safe to test. and removed needs-ok-to-test Indicates a PR that requires an org member to verify it is safe to test. labels Jun 23, 2026

@coderabbitai coderabbitai Bot left a comment

Copy link
Copy Markdown

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Actionable comments posted: 1

🤖 Prompt for all review comments with AI agents
Verify each finding against current code. Fix only still-valid issues, skip the
rest with a brief reason, keep changes minimal, and validate.

Inline comments:
In `@telco-core/configuration/compare.sh`:
- Around line 142-147: The grep commands on lines checking for 'version: 3.2.0'
and 'path: /etc/modules-load.d/kernel-load.conf' are using regex semantics where
the dot (.) character acts as a wildcard matching any character, which allows
incorrect versions or paths to pass validation. Fix this by either using grep -F
flag for fixed string matching instead of regex, or by escaping the dot
characters in the patterns with backslashes (e.g., 3\.2\.0 and
/etc/modules-load\.d/kernel-load\.conf) to ensure they match literal dots only.
🪄 Autofix (Beta)

Fix all unresolved CodeRabbit comments on this PR:

  • Push a commit to this branch (recommended)
  • Create a new PR with the fixes

ℹ️ Review info
⚙️ Run configuration

Configuration used: Organization UI

Review profile: CHILL

Plan: Enterprise

Run ID: 2bd232a3-8d36-42a1-ace0-41a73699c58a

📥 Commits

Reviewing files that changed from the base of the PR and between 7c2e3d1 and 57c42ae.

📒 Files selected for processing (1)
  • telco-core/configuration/compare.sh

Comment thread telco-core/configuration/compare.sh Outdated
Comment on lines +162 to +163
Reference MachineConfig CRs are validated from telco-core/install/extra-manifests
via compare.sh --check-extra-manifests, not from reference-crs.

Copy link
Copy Markdown
Collaborator

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

At runtime I don't think this works. compare.sh would verify the repository contents, but kube-compare needs to include all the lines which are deleted in order to verify that these CRs exist and are correct on a deployed cluster.

Copy link
Copy Markdown
Contributor Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Hi @imiller0, i understand your concern about removing the MachineConfig CRs from metadata.yaml.
if kube-compare needs those entries to validate the deployed cluster state, should we keep them in metadata.yaml and instead just add the compare.sh --check-extra-manifests check as an additional repo-level validation?
happy to revert those metadata.yaml removals if that's the right approach

Comment on lines +14 to +15
paused: false
maxUnavailable: 1
paused: true
maxUnavailable: 100%

Copy link
Copy Markdown
Collaborator

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Is there a reason that these are being changed? In general we don't want the user to keep the MCP paused for long durations of time

@coderabbitai coderabbitai Bot left a comment

Copy link
Copy Markdown

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Caution

Some comments are outside the diff and can’t be posted inline due to platform limitations.

⚠️ Outside diff range comments (1)
telco-core/configuration/compare.sh (1)

142-150: 🗄️ Data Integrity & Integration | 🟠 Major | 🏗️ Heavy lift

Validate the complete templated MachineConfig, not just two sentinel strings.

After these checks, continue skips diff -u, so changes to any other field can pass validation. Render the kube-compare template with the expected values and compare normalized YAML, or validate the complete expected object.

🤖 Prompt for AI Agents
Verify each finding against current code. Fix only still-valid issues, skip the
rest with a brief reason, keep changes minimal, and validate.

In `@telco-core/configuration/compare.sh` around lines 142 - 150, Update the
validation loop around the install/${inst} checks so it verifies the complete
rendered kube-compare MachineConfig rather than only the ignition version and
kernel-load.conf sentinel strings. Render the template with the expected values
and compare normalized YAML, or otherwise validate the full expected object,
before continuing; retain failure reporting through fail.
🤖 Prompt for all review comments with AI agents
Verify each finding against current code. Fix only still-valid issues, skip the
rest with a brief reason, keep changes minimal, and validate.

Outside diff comments:
In `@telco-core/configuration/compare.sh`:
- Around line 142-150: Update the validation loop around the install/${inst}
checks so it verifies the complete rendered kube-compare MachineConfig rather
than only the ignition version and kernel-load.conf sentinel strings. Render the
template with the expected values and compare normalized YAML, or otherwise
validate the full expected object, before continuing; retain failure reporting
through fail.

ℹ️ Review info
⚙️ Run configuration

Configuration used: Organization UI

Review profile: CHILL

Plan: Enterprise

Run ID: 5371b935-8aab-4fdd-8d07-2dc70809c46f

📥 Commits

Reviewing files that changed from the base of the PR and between 57c42ae and 915932c.

📒 Files selected for processing (1)
  • telco-core/configuration/compare.sh

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

ok-to-test Indicates a non-member PR verified by an org member that is safe to test.

Projects

None yet

Development

Successfully merging this pull request may close these issues.

4 participants