Skip to content

🐛 Replace generic-external-provider with language-specific providers#557

Merged
mguetta1 merged 4 commits into
konveyor:mainfrom
mguetta1:update-provider-images
Apr 30, 2026
Merged

🐛 Replace generic-external-provider with language-specific providers#557
mguetta1 merged 4 commits into
konveyor:mainfrom
mguetta1:update-provider-images

Conversation

@mguetta1
Copy link
Copy Markdown
Contributor

@mguetta1 mguetta1 commented Apr 29, 2026

Summary

  • The generic-external-provider was replaced with individual language-specific providers (python-external-provider, nodejs-external-provider) in analyzer-lsp PR ✨ Refactor generic provider into individual providers analyzer-lsp#1142 (merged April 17, 2026)
  • This change updates the operator to use the new provider images:
    • RELATED_IMAGE_PROVIDER_PYTHONpython-external-provider
    • RELATED_IMAGE_PROVIDER_NODEJSnodejs-external-provider
  • The old RELATED_IMAGE_PROVIDER_GENERIC env var is removed as the generic-external-provider image no longer exists

Test plan

  • Verify make bundle generates correct CSV with new provider images
  • Deploy operator and verify python/nodejs extensions use correct provider images
  • Run konveyor/ci nightly tests to confirm fix

Fixes intermittent CI failures in konveyor/ci nightly runs where task pods would fail with 1/4 containers in Error state due to the missing/stale generic-external-provider image.

🤖 Generated with Claude Code

Summary by CodeRabbit

  • New Features

    • Added support for language-specific external providers (Go, Python, NodeJS) replacing the generic provider configuration
    • Go provider now available with configured resource limits
  • Configuration Updates

    • Updated provider image references across deployment manifests and Helm charts
    • Refined Python provider selector to target only Python language workloads

The generic-external-provider was replaced with individual language-specific
providers (python-external-provider, nodejs-external-provider) in analyzer-lsp
PR #1142 (merged April 17, 2026).

This change updates the operator to use the new provider images:
- RELATED_IMAGE_PROVIDER_PYTHON -> python-external-provider
- RELATED_IMAGE_PROVIDER_NODEJS -> nodejs-external-provider

The old RELATED_IMAGE_PROVIDER_GENERIC env var is removed as the
generic-external-provider image no longer exists.

Fixes intermittent CI failures in konveyor/ci nightly runs where task pods
would fail with 1/4 containers in Error state due to the missing/stale
generic-external-provider image.

🤖 Generated with [Claude Code](https://claude.com/claude-code)

Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
Signed-off-by: Maayan Hadasi <mguetta@redhat.com>
@coderabbitai
Copy link
Copy Markdown

coderabbitai Bot commented Apr 29, 2026

📝 Walkthrough

Walkthrough

The pull request replaces a single generic external provider image configuration with three language-specific provider images: Go, Python, and NodeJS. Changes span GitHub Actions workflows, Kubernetes manifests, Helm charts, and Ansible role configurations to wire the provider-specific image references throughout the infrastructure.

Changes

Cohort / File(s) Summary
GitHub Actions
.github/actions/make-bundle/action.yml, .github/workflows/create-release.yml
Replaces provider_generic input with three new inputs: provider_go, provider_python, provider_nodejs. Composite action now conditionally appends Helm flags for each provider image, with create-release.yml updated to pass provider-specific image references.
Kubernetes Manifests
bundle/manifests/konveyor-operator.clusterserviceversion.yaml
Replaces RELATED_IMAGE_PROVIDER_GENERIC environment variable and related image entry with three language-specific variants (RELATED_IMAGE_PROVIDER_GO, RELATED_IMAGE_PROVIDER_PYTHON, RELATED_IMAGE_PROVIDER_NODEJS). Updates CSV metadata timestamp.
Helm Configuration
helm/templates/deployment.yaml, helm/values.yaml
Deployment template updated to replace single generic provider env var with three language-specific env vars wired to new Helm values. values.yaml replaces provider_generic image entry with three separate provider image configurations (Go, Python, NodeJS).
Ansible Roles
roles/tackle/defaults/main.yml, roles/tackle/templates/customresource-extension.yml.j2
Adds new Go provider configuration block with component naming and resource limits. Python and NodeJS providers updated to reference provider-specific environment variables instead of generic. Template generates new Go Extension resource and narrows Python extension selector to exclude Go language tags.

Estimated code review effort

🎯 3 (Moderate) | ⏱️ ~20 minutes

Poem

🐰 From generic to specific, a provider's new quest,
Go, Python, NodeJS—each one truly blessed,
No more one-size-fits-all, the languages now shine,
With manifests and Helm in perfect align!

🚥 Pre-merge checks | ✅ 5
✅ Passed checks (5 passed)
Check name Status Explanation
Title check ✅ Passed The title accurately describes the main change: replacing the generic external provider with language-specific providers (Go, Python, NodeJS), which aligns with the PR objectives and all modified files.
Docstring Coverage ✅ Passed No functions found in the changed files to evaluate docstring coverage. Skipping docstring coverage 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.
Description Check ✅ Passed Check skipped - CodeRabbit’s high-level summary is enabled.

✏️ Tip: You can configure your own custom pre-merge checks in the settings.

✨ 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 and usage tips.

Copy link
Copy Markdown

@coderabbitai coderabbitai Bot left a comment

Choose a reason for hiding this comment

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

Actionable comments posted: 2

🤖 Prompt for all review comments with AI agents
Verify each finding against the current code and only fix it if needed.

Inline comments:
In `@bundle/manifests/konveyor-operator.clusterserviceversion.yaml`:
- Around line 555-558: The alm-examples entry still references the removed image
quay.io/konveyor/generic-external-provider:latest; update the alm-examples block
to use one of the valid provider images present in the manifest (for example
quay.io/konveyor/python-external-provider:latest or
quay.io/konveyor/nodejs-external-provider:latest) so the example matches the
actual container images; locate the alm-examples YAML section and replace the
generic-external-provider image string with the chosen valid image name(s) and
ensure the corresponding container name (e.g., provider-python or
provider-nodejs) matches.

In `@bundle/metadata/annotations.yaml`:
- Line 9: The bundle's annotations show
operators.operatorframework.io.metrics.builder: operator-sdk-v1.42.0 but the
Makefile defines OPERATOR_SDK_VERSION ?= v1.35.0; to fix, either (A) update the
Makefile's OPERATOR_SDK_VERSION to v1.42.0 so make bundle regenerates matching
artifacts, or (B) regenerate the bundle artifacts with v1.35.0 and revert
operators.operatorframework.io.metrics.builder back to operator-sdk-v1.35.0;
edit the Makefile variable OPERATOR_SDK_VERSION (or re-run bundle generation
with the intended operator-sdk) and commit the matching
bundle/metadata/annotations.yaml to keep versions in sync.
🪄 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: defaults

Review profile: CHILL

Plan: Pro

Run ID: 574a9d9b-5820-4db0-91b7-54c0941dc922

📥 Commits

Reviewing files that changed from the base of the PR and between 1fd9687 and 6e9fcaa.

📒 Files selected for processing (8)
  • .github/actions/make-bundle/action.yml
  • .github/workflows/create-release.yml
  • bundle.Dockerfile
  • bundle/manifests/konveyor-operator.clusterserviceversion.yaml
  • bundle/metadata/annotations.yaml
  • helm/templates/deployment.yaml
  • helm/values.yaml
  • roles/tackle/defaults/main.yml

Comment thread bundle/manifests/konveyor-operator.clusterserviceversion.yaml
Comment thread bundle/metadata/annotations.yaml Outdated
@jmle jmle self-requested a review April 29, 2026 09:25
Copy link
Copy Markdown
Contributor

@jmle jmle left a comment

Choose a reason for hiding this comment

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

I think we still need to add the golang provider right? It's still missing

🤖 Generated with [Claude Code](https://claude.com/claude-code)

Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
Signed-off-by: Maayan Hadasi <mguetta@redhat.com>
@mguetta1 mguetta1 force-pushed the update-provider-images branch from 6e9fcaa to 1dbbcc7 Compare April 29, 2026 09:42
Add the Go provider alongside Python and Node.js providers that were
introduced in analyzer-lsp PR #1142. This includes:
- Add RELATED_IMAGE_PROVIDER_GO environment variable
- Add provider_go configuration in Ansible defaults
- Add Go extension in customresource-extension template
- Fix Python extension selector to only handle Python (not Go)
- Regenerate bundle with SDK v1.35.0

🤖 Generated with [Claude Code](https://claude.com/claude-code)

Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
Signed-off-by: Maayan Hadasi <mguetta@redhat.com>
Copy link
Copy Markdown

@coderabbitai coderabbitai Bot left a comment

Choose a reason for hiding this comment

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

🧹 Nitpick comments (1)
roles/tackle/templates/customresource-extension.yml.j2 (1)

112-112: Remove duplicate selector key in Python extension spec.

spec.selector is set at Line 112 and again at Line 143. Keeping both is brittle (last key wins in many YAML parsers) and can cause silent drift.

Suggested cleanup
@@
-  selector: tag:Language=Python
🤖 Prompt for AI Agents
Verify each finding against the current code and only fix it if needed.

In `@roles/tackle/templates/customresource-extension.yml.j2` at line 112, The YAML
template contains a duplicate selector key—remove the extra "selector:
tag:Language=Python" so there is only one spec.selector in the Python extension
spec; locate the duplicate occurrence of the literal selector line (the one
outside the intended spec block) and delete it, leaving the single correct
spec.selector entry (the other "spec.selector" within the extension resource
such as the Python extension definition) to avoid key shadowing by later YAML
parsers.
🤖 Prompt for all review comments with AI agents
Verify each finding against the current code and only fix it if needed.

Nitpick comments:
In `@roles/tackle/templates/customresource-extension.yml.j2`:
- Line 112: The YAML template contains a duplicate selector key—remove the extra
"selector: tag:Language=Python" so there is only one spec.selector in the Python
extension spec; locate the duplicate occurrence of the literal selector line
(the one outside the intended spec block) and delete it, leaving the single
correct spec.selector entry (the other "spec.selector" within the extension
resource such as the Python extension definition) to avoid key shadowing by
later YAML parsers.

ℹ️ Review info
⚙️ Run configuration

Configuration used: defaults

Review profile: CHILL

Plan: Pro

Run ID: cd36b025-e83e-401e-937c-82a3cdbb0f31

📥 Commits

Reviewing files that changed from the base of the PR and between 6e9fcaa and 1b25237.

📒 Files selected for processing (7)
  • .github/actions/make-bundle/action.yml
  • .github/workflows/create-release.yml
  • bundle/manifests/konveyor-operator.clusterserviceversion.yaml
  • helm/templates/deployment.yaml
  • helm/values.yaml
  • roles/tackle/defaults/main.yml
  • roles/tackle/templates/customresource-extension.yml.j2
🚧 Files skipped from review as they are similar to previous changes (4)
  • helm/templates/deployment.yaml
  • .github/workflows/create-release.yml
  • helm/values.yaml
  • bundle/manifests/konveyor-operator.clusterserviceversion.yaml

Signed-off-by: Maayan Hadasi <mguetta@redhat.com>
@mguetta1 mguetta1 requested a review from jmle April 29, 2026 11:11
@mguetta1 mguetta1 merged commit 8e88d27 into konveyor:main Apr 30, 2026
15 checks passed
@mguetta1 mguetta1 deleted the update-provider-images branch April 30, 2026 11:22
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

2 participants