Skip to content

RHOAIENG-50060: Create accelerator-specific LLMInferenceServiceConfig templates with distinguishing labels#1130

Open
KillianGolds wants to merge 4 commits intoopendatahub-io:masterfrom
KillianGolds:feat/accelerator-llmisvcconfigs-master
Open

RHOAIENG-50060: Create accelerator-specific LLMInferenceServiceConfig templates with distinguishing labels#1130
KillianGolds wants to merge 4 commits intoopendatahub-io:masterfrom
KillianGolds:feat/accelerator-llmisvcconfigs-master

Conversation

@KillianGolds
Copy link

@KillianGolds KillianGolds commented Feb 25, 2026

What this PR does / why we need it:

Adds accelerator-specific LLMInferenceServiceConfig resources for NVIDIA CUDA, AMD ROCm, and IBM Spyre (s390x, x86, ppc64le) under config/overlays/odh/accelerators/, and modifies the base LLMInferenceServiceConfig template to support Spyre without requiring command/args overrides in the accelerator configs.

Changes:

  • Base template (config/llmisvcconfig/config-llm-template.yaml): wraps the vLLM launch in a bash command that conditionally sources /etc/profile.d/ibm-aiu-setup.sh if present (no-op on non-Spyre nodes). Uses $@ forwarding so all args - model name, port, and any user-specified flags — pass through correctly.
  • 5 accelerator configs under config/overlays/odh/accelerators/: NVIDIA CUDA and AMD ROCm override image only; IBM Spyre configs (s390x, x86, ppc64le) override image and set arch-specific env vars required for Spyre startup.
  • No args overrides in any accelerator config - if an accelerator config overrides args, user-specified args on their LLMInferenceService would be silently discarded. This aligns with the fix landing via feat(llmisvc): move vLLM args to command field kserve/kserve#5049.
  • Image injection via kustomize replacements sourcing from params.env through the kserve-parameters ConfigMap.
  • All accelerator configs carry the label opendatahub.io/config-type: accelerator for dashboard filtering.

Which issue(s) this PR fixes:
Fixes # RHOAIENG-50060

Feature/Issue validation/testing:

  • kustomize build config/overlays/odh/ - 5 accelerator LLMInferenceServiceConfig resources rendered with correct images substituted from params.env and opendatahub.io/config-type: accelerator label applied
  • Unit tests: TestMergeSpecs (27 sub-tests), TestReplaceVariables (10 sub-tests) - all pass
  • Integration tests: TestLLMInferenceServiceController (92 specs via envtest) - all pass
  • End-to-end on CUDA node: bash wrapper is a no-op (ibm-aiu-setup.sh absent, vLLM starts as before)
  • End-to-end on Spyre node: ibm-aiu-setup.sh sourced correctly, vLLM starts successfully

Special notes for your reviewer:

The base template change (bash wrapper + conditional ibm-aiu-setup.sh sourcing) will interact with the upcoming PR syncing kserve#5049 which is landing in #1123 - that PR will also modify the base template command. The change here is structurally compatible: both add a bash wrapper with $@ forwarding. Merge conflict resolution will be straightforward - integrate the conditional source line into that version.

IBM Power team has confirmed availability to test on P (ppc64le) and Z (s390x) as per comments on RHOAIENG-50350, will be coordinating for full e2e testing.

Checklist:

  • Have you added unit/e2e tests that prove your fix is effective or that this feature works?
  • Has code been commented, particularly in hard-to-understand areas?
  • Have you made corresponding changes to the documentation?
  • Have you linked the JIRA issue(s) to this PR?

Release note:

Add accelerator-specific LLMInferenceServiceConfigs for NVIDIA CUDA, AMD ROCm, and IBM Spyre (s390x, x86, ppc64le) in the ODH overlay. All accelerator configs are labeled with `opendatahub.io/config-type: accelerator` for dashboard filtering. The base template is updated to conditionally source the IBM AIU setup script, enabling Spyre support without requiring args overrides in accelerator configs.

Summary by CodeRabbit

  • New Features

    • Added support for AMD ROCm and NVIDIA CUDA GPU accelerators for LLM inference.
    • Added IBM Spyre acceleration for x86, s390x, and ppc64le.
    • Added accelerator-specific deployment templates and a unified overlay to simplify selecting accelerator images.
    • Added parameters to manage accelerator container images centrally.
  • Chores

    • Updated service startup to load an optional environment setup before launching the model server while preserving passed arguments.
    • Bumped KEDA dependency version.

… and Spyre

- Add conditional ibm-aiu-setup.sh sourcing to base template (wrapped in
  bash command with  forwarding; no-op on non-Spyre nodes)
- Add 5 accelerator LLMInferenceServiceConfigs under config/overlays/odh/accelerators/:
  - NVIDIA CUDA (image only)
  - AMD ROCm (image only)
  - IBM Spyre s390x, x86, ppc64le (image + arch-specific env)
- All accelerator configs carry label opendatahub.io/config-type: accelerator
- Inject accelerator images from params.env via kustomize replacements
- No args overrides in accelerator configs -- preserves user arg customization
  per RHOAIENG-49005 / kserve#5049

Signed-off-by: Killian Golds <kgolds@redhat.com>
@openshift-ci-robot
Copy link

openshift-ci-robot commented Feb 25, 2026

@KillianGolds: This pull request references RHOAIENG-50060 which is a valid jira issue.

Warning: The referenced jira issue has an invalid target version for the target branch this PR targets: expected the task to target either version "4.22." or "openshift-4.22.", but it targets "rhoai-3.4" instead.

Details

In response to this:

What this PR does / why we need it:

Adds accelerator-specific LLMInferenceServiceConfig resources for NVIDIA CUDA, AMD ROCm, and IBM Spyre (s390x, x86, ppc64le) under config/overlays/odh/accelerators/, and modifies the base LLMInferenceServiceConfig template to support Spyre without requiring command/args overrides in the accelerator configs.

Changes:

  • Base template (config/llmisvcconfig/config-llm-template.yaml): wraps the vLLM launch in a bash command that conditionally sources /etc/profile.d/ibm-aiu-setup.sh if present (no-op on non-Spyre nodes). Uses $@ forwarding so all args - model name, port, and any user-specified flags — pass through correctly.
  • 5 accelerator configs under config/overlays/odh/accelerators/: NVIDIA CUDA and AMD ROCm override image only; IBM Spyre configs (s390x, x86, ppc64le) override image and set arch-specific env vars required for Spyre startup.
  • No args overrides in any accelerator config - if an accelerator config overrides args, user-specified args on their LLMInferenceService would be silently discarded. This aligns with the fix landing via feat(llmisvc): move vLLM args to command field kserve/kserve#5049.
  • Image injection via kustomize replacements sourcing from params.env through the kserve-parameters ConfigMap.
  • All accelerator configs carry the label opendatahub.io/config-type: accelerator for dashboard filtering.

Which issue(s) this PR fixes:
Fixes # RHOAIENG-50060

Feature/Issue validation/testing:

  • kustomize build config/overlays/odh/ - 5 accelerator LLMInferenceServiceConfig resources rendered with correct images substituted from params.env and opendatahub.io/config-type: accelerator label applied
  • Unit tests: TestMergeSpecs (27 sub-tests), TestReplaceVariables (10 sub-tests) - all pass
  • Integration tests: TestLLMInferenceServiceController (92 specs via envtest) - all pass
  • End-to-end on CUDA node: bash wrapper is a no-op (ibm-aiu-setup.sh absent, vLLM starts as before)
  • End-to-end on Spyre node: ibm-aiu-setup.sh sourced correctly, vLLM starts successfully

Special notes for your reviewer:

The base template change (bash wrapper + conditional ibm-aiu-setup.sh sourcing) will interact with the upcoming PR syncing kserve#5049 which is landing in #1123 - that PR will also modify the base template command. The change here is structurally compatible: both add a bash wrapper with $@ forwarding. Merge conflict resolution will be straightforward - integrate the conditional source line into that version.

IBM Power team has confirmed availability to test on P (ppc64le) and Z (s390x) as per comments on RHOAIENG-50350, will be coordinating for full e2e testing.

Checklist:

  • Have you added unit/e2e tests that prove your fix is effective or that this feature works?
  • Has code been commented, particularly in hard-to-understand areas?
  • Have you made corresponding changes to the documentation?
  • Have you linked the JIRA issue(s) to this PR?

Release note:

Add accelerator-specific LLMInferenceServiceConfigs for NVIDIA CUDA, AMD ROCm, and IBM Spyre (s390x, x86, ppc64le) in the ODH overlay. All accelerator configs are labeled with `opendatahub.io/config-type: accelerator` for dashboard filtering. The base template is updated to conditionally source the IBM AIU setup script, enabling Spyre support without requiring args overrides in accelerator configs.

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 openshift-eng/jira-lifecycle-plugin repository.

@openshift-ci
Copy link

openshift-ci bot commented Feb 25, 2026

[APPROVALNOTIFIER] This PR is NOT APPROVED

This pull-request has been approved by: KillianGolds
Once this PR has been reviewed and has the lgtm label, please assign israel-hdez 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

@coderabbitai
Copy link

coderabbitai bot commented Feb 25, 2026

📝 Walkthrough

Walkthrough

Adds accelerator-specific KServe LLMInferenceServiceConfig templates and kustomize wiring (NVIDIA, AMD ROCm, IBM Spyre variants). Replaces direct vllm container start with a /bin/bash -c wrapper that conditionally sources /etc/profile.d/ibm-aiu-setup.sh before exec'ing vllm serve /mnt/models, preserving argument passthrough.

Changes

Cohort / File(s) Summary
Base LLM templates & installers
config/llmisvcconfig/config-llm-template.yaml, hack/setup/quick-install/kserve-knative-mode-full-install-with-manifests.sh, hack/setup/quick-install/kserve-standard-mode-full-install-with-manifests.sh, hack/setup/quick-install/llmisvc-full-install-with-manifests.sh
Replaced direct vllm serve /mnt/models entrypoint with a /bin/bash -c wrapper that sets -e, conditionally sources /etc/profile.d/ibm-aiu-setup.sh (if present), then exec vllm serve /mnt/models "$@" (wrapper includes -- delimiter).
Accelerator templates (new)
config/overlays/odh/accelerators/nvidia-cuda-config-llm-template.yaml, config/overlays/odh/accelerators/amd-rocm-config-llm-template.yaml, config/overlays/odh/accelerators/ibm-spyre-s390x-config-llm-template.yaml, config/overlays/odh/accelerators/ibm-spyre-x86-config-llm-template.yaml, config/overlays/odh/accelerators/ibm-spyre-ppc64le-config-llm-template.yaml
Added new LLMInferenceServiceConfig templates for accelerator variants (metadata/annotations + spec.template with main container placeholders). IBM Spyre variants include specific env var settings.
Accelerators overlay & params
config/overlays/odh/accelerators/kustomization.yaml, config/overlays/odh/kustomization.yaml, config/overlays/odh/params.env
Added accelerators/ resource to overlay, Kustomize replacements mapping kserve-parameters entries to spec.template.containers[name=main].image for each template, and added three image parameters to params.env (kserve-llm-d-nvidia-cuda, kserve-llm-d-amd-rocm, kserve-llm-d-ibm-spyre).
KEDA version bumps
hack/setup/quick-install/*dependency-install*.sh, hack/setup/quick-install/*full-install*.sh, kserve-deps.env
Bumped KEDA_VERSION from 2.17.2 to 2.17.3 across install/dependency scripts and env file.

Sequence Diagram(s)

sequenceDiagram
    actor Kubelet
    participant ContainerShell as "/bin/bash -c (wrapper)"
    participant Profile as "/etc/profile.d/ibm-aiu-setup.sh (optional)"
    participant vLLM as "vllm serve /mnt/models"

    Kubelet->>ContainerShell: start container (entrypoint -> bash -c)
    ContainerShell->>ContainerShell: set -e
    ContainerShell->>Profile: test -f /etc/profile.d/ibm-aiu-setup.sh
    alt profile exists
        ContainerShell->>Profile: source /etc/profile.d/ibm-aiu-setup.sh
    end
    ContainerShell->>vLLM: exec vllm serve /mnt/models "$@"
    vLLM-->>Kubelet: serve requests (listening on port)
Loading

Estimated code review effort

🎯 3 (Moderate) | ⏱️ ~20 minutes

🚥 Pre-merge checks | ✅ 2 | ❌ 1

❌ Failed checks (1 warning)

Check name Status Explanation Resolution
Docstring Coverage ⚠️ Warning Docstring coverage is 0.00% which is insufficient. The required threshold is 80.00%. Write docstrings for the functions missing them to satisfy the coverage threshold.
✅ Passed checks (2 passed)
Check name Status Explanation
Description Check ✅ Passed Check skipped - CodeRabbit’s high-level summary is enabled.
Title check ✅ Passed The title directly describes the main PR objective: creating accelerator-specific LLMInferenceServiceConfig templates with distinguishing labels, which aligns with the primary changes across 9 modified/new files.

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

✨ Finishing Touches
  • 📝 Generate docstrings (stacked PR)
  • 📝 Generate docstrings (commit on current branch)
🧪 Generate unit tests (beta)
  • Create PR with unit tests
  • Post copyable unit tests in a comment

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.

@openshift-ci-robot
Copy link

openshift-ci-robot commented Feb 25, 2026

@KillianGolds: This pull request references RHOAIENG-50060 which is a valid jira issue.

Warning: The referenced jira issue has an invalid target version for the target branch this PR targets: expected the task to target either version "4.22." or "openshift-4.22.", but it targets "rhoai-3.4" instead.

Details

In response to this:

What this PR does / why we need it:

Adds accelerator-specific LLMInferenceServiceConfig resources for NVIDIA CUDA, AMD ROCm, and IBM Spyre (s390x, x86, ppc64le) under config/overlays/odh/accelerators/, and modifies the base LLMInferenceServiceConfig template to support Spyre without requiring command/args overrides in the accelerator configs.

Changes:

  • Base template (config/llmisvcconfig/config-llm-template.yaml): wraps the vLLM launch in a bash command that conditionally sources /etc/profile.d/ibm-aiu-setup.sh if present (no-op on non-Spyre nodes). Uses $@ forwarding so all args - model name, port, and any user-specified flags — pass through correctly.
  • 5 accelerator configs under config/overlays/odh/accelerators/: NVIDIA CUDA and AMD ROCm override image only; IBM Spyre configs (s390x, x86, ppc64le) override image and set arch-specific env vars required for Spyre startup.
  • No args overrides in any accelerator config - if an accelerator config overrides args, user-specified args on their LLMInferenceService would be silently discarded. This aligns with the fix landing via feat(llmisvc): move vLLM args to command field kserve/kserve#5049.
  • Image injection via kustomize replacements sourcing from params.env through the kserve-parameters ConfigMap.
  • All accelerator configs carry the label opendatahub.io/config-type: accelerator for dashboard filtering.

Which issue(s) this PR fixes:
Fixes # RHOAIENG-50060

Feature/Issue validation/testing:

  • kustomize build config/overlays/odh/ - 5 accelerator LLMInferenceServiceConfig resources rendered with correct images substituted from params.env and opendatahub.io/config-type: accelerator label applied
  • Unit tests: TestMergeSpecs (27 sub-tests), TestReplaceVariables (10 sub-tests) - all pass
  • Integration tests: TestLLMInferenceServiceController (92 specs via envtest) - all pass
  • End-to-end on CUDA node: bash wrapper is a no-op (ibm-aiu-setup.sh absent, vLLM starts as before)
  • End-to-end on Spyre node: ibm-aiu-setup.sh sourced correctly, vLLM starts successfully

Special notes for your reviewer:

The base template change (bash wrapper + conditional ibm-aiu-setup.sh sourcing) will interact with the upcoming PR syncing kserve#5049 which is landing in #1123 - that PR will also modify the base template command. The change here is structurally compatible: both add a bash wrapper with $@ forwarding. Merge conflict resolution will be straightforward - integrate the conditional source line into that version.

IBM Power team has confirmed availability to test on P (ppc64le) and Z (s390x) as per comments on RHOAIENG-50350, will be coordinating for full e2e testing.

Checklist:

  • Have you added unit/e2e tests that prove your fix is effective or that this feature works?
  • Has code been commented, particularly in hard-to-understand areas?
  • Have you made corresponding changes to the documentation?
  • Have you linked the JIRA issue(s) to this PR?

Release note:

Add accelerator-specific LLMInferenceServiceConfigs for NVIDIA CUDA, AMD ROCm, and IBM Spyre (s390x, x86, ppc64le) in the ODH overlay. All accelerator configs are labeled with `opendatahub.io/config-type: accelerator` for dashboard filtering. The base template is updated to conditionally source the IBM AIU setup script, enabling Spyre support without requiring args overrides in accelerator configs.

Summary by CodeRabbit

New Features

  • Added support for AMD ROCm and NVIDIA CUDA GPU accelerators for LLM inference services.
  • Added support for IBM Spyre acceleration across multiple processor architectures (x86, s390x, ppc64le).
  • Updated LLM inference service configurations to enhance hardware compatibility and deployment options.

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 openshift-eng/jira-lifecycle-plugin repository.

Copy link

@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: 3

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

Inline comments:
In `@config/llmisvcconfig/config-llm-template.yaml`:
- Around line 17-19: The silent `source` call may fail and still allow `exec
vllm serve /mnt/models "$@"` to run; update the shell snippet so `vllm` only
executes when sourcing succeeds (for example, enable strict failure with `set
-e` at the top of the snippet or chain the commands so the `source
/etc/profile.d/ibm-aiu-setup.sh` must return zero before `exec vllm` runs, or
add an explicit `|| { echo "IBM AIU setup failed"; exit 1; }` after the source).
Ensure the change targets the lines containing `/etc/profile.d/ibm-aiu-setup.sh`
and `exec vllm serve /mnt/models "$@"` so a broken IBM environment aborts
startup instead of launching vLLM.

In `@config/overlays/odh/accelerators/ibm-spyre-ppc64le-config-llm-template.yaml`:
- Around line 1-15: The ppc64le LLMInferenceServiceConfig template (kind
LLMInferenceServiceConfig, spec.template.containers[name: main]) currently only
sets HF_HOME while s390x/x86 variants set Spyre-specific env vars (FLEX_DEVICE,
TOKENIZERS_PARALLELISM, DTLOG_LEVEL, TORCH_SENDNN_LOG, VLLM_SPYRE_USE_CB,
VLLM_SPYRE_REQUIRE_PRECOMPILED_DECODERS, TORCH_SENDNN_CACHE_ENABLE, etc.);
update this template to either include the same Spyre-specific environment
variables with appropriate ppc64le values or add a clear inline comment/TODO in
the template explaining that the reduced env set is intentional or awaiting IBM
Power team input so the omission is not merged silently (modify
spec.template.containers -> name: main to add the comment/TODO or the env
entries).

In `@config/overlays/odh/kustomization.yaml`:
- Around line 81-100: The kustomization currently replaces image for three
LLMInferenceServiceConfig resources from a single ConfigMap key (ConfigMap name
kserve-parameters, fieldpath data.kserve-llm-d-ibm-spyre), but the three targets
(LLMInferenceServiceConfig names kserve-config-llm-template-ibm-spyre-s390x,
kserve-config-llm-template-ibm-spyre-x86,
kserve-config-llm-template-ibm-spyre-ppc64le) require distinct
architecture-specific images; update params.env to define three separate keys
(kserve-llm-d-ibm-spyre-s390x, kserve-llm-d-ibm-spyre-x86,
kserve-llm-d-ibm-spyre-ppc64le) and modify this kustomization replacement block
so each target uses the corresponding ConfigMap key instead of the single
data.kserve-llm-d-ibm-spyre entry to ensure the correct arch-specific image is
injected for each LLMInferenceServiceConfig.

ℹ️ Review info

Configuration used: Organization UI

Review profile: CHILL

Plan: Pro

Cache: Disabled due to data retention organization setting

Knowledge base: Disabled due to data retention organization setting

📥 Commits

Reviewing files that changed from the base of the PR and between e65a3c8 and bf13d3b.

📒 Files selected for processing (9)
  • config/llmisvcconfig/config-llm-template.yaml
  • config/overlays/odh/accelerators/amd-rocm-config-llm-template.yaml
  • config/overlays/odh/accelerators/ibm-spyre-ppc64le-config-llm-template.yaml
  • config/overlays/odh/accelerators/ibm-spyre-s390x-config-llm-template.yaml
  • config/overlays/odh/accelerators/ibm-spyre-x86-config-llm-template.yaml
  • config/overlays/odh/accelerators/kustomization.yaml
  • config/overlays/odh/accelerators/nvidia-cuda-config-llm-template.yaml
  • config/overlays/odh/kustomization.yaml
  • config/overlays/odh/params.env

Comment on lines +1 to +15
apiVersion: serving.kserve.io/v1alpha2
kind: LLMInferenceServiceConfig
metadata:
name: kserve-config-llm-template-ibm-spyre-ppc64le
annotations:
openshift.io/display-name: vLLM IBM Spyre ppc64le LLMInferenceServiceConfig
description: vLLM IBM Spyre ppc64le LLMInferenceServiceConfig for LLMInferenceService.
spec:
template:
containers:
- name: main
image: placeholder
env:
- name: HF_HOME
value: /tmp/hf_home
Copy link

Choose a reason for hiding this comment

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

⚠️ Potential issue | 🟡 Minor

🧩 Analysis chain

🏁 Script executed:

#!/bin/bash
# Find all IBM Spyre LLM template config files
fd ".*spyre.*config.*template.*yaml" --type f

Repository: opendatahub-io/kserve

Length of output: 286


🏁 Script executed:

#!/bin/bash
# Read each variant file to compare env var configurations
echo "=== ppc64le ===" && cat config/overlays/odh/accelerators/ibm-spyre-ppc64le-config-llm-template.yaml
echo -e "\n=== s390x ===" && cat config/overlays/odh/accelerators/ibm-spyre-s390x-config-llm-template.yaml
echo -e "\n=== x86 ===" && cat config/overlays/odh/accelerators/ibm-spyre-x86-config-llm-template.yaml

Repository: opendatahub-io/kserve

Length of output: 2543


🏁 Script executed:

#!/bin/bash
# Check for any TODO/FIXME/comments about ppc64le config or IBM Power
rg -i "ppc64le|ibm.*power" --type yaml -B 2 -A 2 config/overlays/odh/accelerators/
rg -i "TODO|FIXME" config/overlays/odh/accelerators/ibm-spyre-ppc64le-config-llm-template.yaml

Repository: opendatahub-io/kserve

Length of output: 1259


🏁 Script executed:

#!/bin/bash
# Check for README or documentation about accelerators configs
fd "README|ACCELERATOR" --type f config/overlays/odh/accelerators/
# Also search for any documentation directory
fd "doc|docs" --type d config/overlays/odh/accelerators/
# Check if there are any comments or docs at top-level about accelerators
rg -i "accelerator|spyre" README.md --type markdown -A 5 -B 5 2>/dev/null || echo "No match in README"

Repository: opendatahub-io/kserve

Length of output: 83


ppc64le template lacks Spyre-specific env vars defined in s390x and x86 variants—confirm if intentional or document as incomplete.

The s390x variant defines 8 environment variables (FLEX_DEVICE, TOKENIZERS_PARALLELISM, DTLOG_LEVEL, TORCH_SENDNN_LOG, VLLM_SPYRE_USE_CB, VLLM_SPYRE_REQUIRE_PRECOMPILED_DECODERS, TORCH_SENDNN_CACHE_ENABLE) and x86 defines 10; ppc64le only has HF_HOME. If this sparse configuration is intentional for ppc64le hardware, add a comment explaining why these knobs are not needed. If it is a placeholder pending IBM Power team input, add a # TODO: annotation to prevent the gap from being silently merged as final.

🤖 Prompt for AI Agents
Verify each finding against the current code and only fix it if needed.

In `@config/overlays/odh/accelerators/ibm-spyre-ppc64le-config-llm-template.yaml`
around lines 1 - 15, The ppc64le LLMInferenceServiceConfig template (kind
LLMInferenceServiceConfig, spec.template.containers[name: main]) currently only
sets HF_HOME while s390x/x86 variants set Spyre-specific env vars (FLEX_DEVICE,
TOKENIZERS_PARALLELISM, DTLOG_LEVEL, TORCH_SENDNN_LOG, VLLM_SPYRE_USE_CB,
VLLM_SPYRE_REQUIRE_PRECOMPILED_DECODERS, TORCH_SENDNN_CACHE_ENABLE, etc.);
update this template to either include the same Spyre-specific environment
variables with appropriate ppc64le values or add a clear inline comment/TODO in
the template explaining that the reduced env set is intentional or awaiting IBM
Power team input so the omission is not merged silently (modify
spec.template.containers -> name: main to add the comment/TODO or the env
entries).

Comment on lines +81 to +100
- source:
kind: ConfigMap
name: kserve-parameters
fieldpath: data.kserve-llm-d-ibm-spyre
targets:
- select:
kind: LLMInferenceServiceConfig
name: kserve-config-llm-template-ibm-spyre-s390x
fieldPaths:
- spec.template.containers.[name=main].image
- select:
kind: LLMInferenceServiceConfig
name: kserve-config-llm-template-ibm-spyre-x86
fieldPaths:
- spec.template.containers.[name=main].image
- select:
kind: LLMInferenceServiceConfig
name: kserve-config-llm-template-ibm-spyre-ppc64le
fieldPaths:
- spec.template.containers.[name=main].image
Copy link

Choose a reason for hiding this comment

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

⚠️ Potential issue | 🔴 Critical

🧩 Analysis chain

🏁 Script executed:

fd -g 'params.env' --exec grep -n 'kserve-llm-d-ibm-spyre\|kserve-llm-d-nvidia-cuda\|kserve-llm-d-amd-rocm' {}

Repository: opendatahub-io/kserve

Length of output: 483


🏁 Script executed:

# First, verify the file structure and see the context around lines 81-100
fd -g 'kustomization.yaml' | grep odh | head -5

Repository: opendatahub-io/kserve

Length of output: 199


🏁 Script executed:

# Search for any README or documentation about image architecture support
fd -g 'README*' -o -g '*.md' | xargs grep -l 'spyre\|s390x\|ppc64le' 2>/dev/null | head -10

Repository: opendatahub-io/kserve

Length of output: 181


🏁 Script executed:

# Look for any other references to architecture-specific images or configs
rg 's390x|ppc64le' -t yaml -t md | head -20

Repository: opendatahub-io/kserve

Length of output: 1338


🏁 Script executed:

cat -n config/overlays/odh/kustomization.yaml | sed -n '75,105p'

Repository: opendatahub-io/kserve

Length of output: 1137


🏁 Script executed:

# Check if there's an x86 variant
fd -g '*ibm-spyre*' -o -g '*x86*' config/overlays/odh/accelerators/

Repository: opendatahub-io/kserve

Length of output: 181


🏁 Script executed:

# Also check what's in the accelerators directory
ls -la config/overlays/odh/accelerators/ | grep ibm

Repository: opendatahub-io/kserve

Length of output: 334


🏁 Script executed:

cat config/overlays/odh/accelerators/ibm-spyre-s390x-config-llm-template.yaml

Repository: opendatahub-io/kserve

Length of output: 974


🏁 Script executed:

cat config/overlays/odh/accelerators/ibm-spyre-x86-config-llm-template.yaml

Repository: opendatahub-io/kserve

Length of output: 1118


Verify that a single Spyre image is correct for all three architectures.

All three Spyre variants (s390x, x86, ppc64le) pull their container image from the same data.kserve-llm-d-ibm-spyre key, but their LLMInferenceServiceConfig resources define completely different environment variables per architecture. For example, s390x sets FLEX_DEVICE=VF, VLLM_SPYRE_USE_CB=1, and VLLM_SPYRE_REQUIRE_PRECOMPILED_DECODERS=1, while x86 sets FLEX_COMPUTE=SENTIENT, FLEX_DEVICE=PF, and VLLM_SPYRE_REQUIRE_PRECOMPILED_DECODERS=0. These architectures (s390x is IBM mainframe, x86 is Intel/AMD) require different CPU instruction sets and cannot share a single binary image. The params.env file defines only one Spyre image key with a specific digest (vllm-spyre-rhel9@sha256:...), which is a single-architecture image, not a multi-arch manifest list. This will cause deployment failures on s390x and ppc64le systems. Define separate image keys for each architecture (kserve-llm-d-ibm-spyre-s390x, kserve-llm-d-ibm-spyre-x86, kserve-llm-d-ibm-spyre-ppc64le) in params.env and update the kustomization.yaml replacement sources accordingly.

🤖 Prompt for AI Agents
Verify each finding against the current code and only fix it if needed.

In `@config/overlays/odh/kustomization.yaml` around lines 81 - 100, The
kustomization currently replaces image for three LLMInferenceServiceConfig
resources from a single ConfigMap key (ConfigMap name kserve-parameters,
fieldpath data.kserve-llm-d-ibm-spyre), but the three targets
(LLMInferenceServiceConfig names kserve-config-llm-template-ibm-spyre-s390x,
kserve-config-llm-template-ibm-spyre-x86,
kserve-config-llm-template-ibm-spyre-ppc64le) require distinct
architecture-specific images; update params.env to define three separate keys
(kserve-llm-d-ibm-spyre-s390x, kserve-llm-d-ibm-spyre-x86,
kserve-llm-d-ibm-spyre-ppc64le) and modify this kustomization replacement block
so each target uses the corresponding ConfigMap key instead of the single
data.kserve-llm-d-ibm-spyre entry to ensure the correct arch-specific image is
injected for each LLMInferenceServiceConfig.

…ange

make precommit regenerates quick-install scripts which embed kustomize
build output -- updated to reflect the new bash command wrapper in
config/llmisvcconfig/config-llm-template.yaml.

Signed-off-by: Killian Golds <kgolds@redhat.com>
@openshift-ci-robot
Copy link

openshift-ci-robot commented Feb 25, 2026

@KillianGolds: This pull request references RHOAIENG-50060 which is a valid jira issue.

Warning: The referenced jira issue has an invalid target version for the target branch this PR targets: expected the task to target either version "4.22." or "openshift-4.22.", but it targets "rhoai-3.4" instead.

Details

In response to this:

What this PR does / why we need it:

Adds accelerator-specific LLMInferenceServiceConfig resources for NVIDIA CUDA, AMD ROCm, and IBM Spyre (s390x, x86, ppc64le) under config/overlays/odh/accelerators/, and modifies the base LLMInferenceServiceConfig template to support Spyre without requiring command/args overrides in the accelerator configs.

Changes:

  • Base template (config/llmisvcconfig/config-llm-template.yaml): wraps the vLLM launch in a bash command that conditionally sources /etc/profile.d/ibm-aiu-setup.sh if present (no-op on non-Spyre nodes). Uses $@ forwarding so all args - model name, port, and any user-specified flags — pass through correctly.
  • 5 accelerator configs under config/overlays/odh/accelerators/: NVIDIA CUDA and AMD ROCm override image only; IBM Spyre configs (s390x, x86, ppc64le) override image and set arch-specific env vars required for Spyre startup.
  • No args overrides in any accelerator config - if an accelerator config overrides args, user-specified args on their LLMInferenceService would be silently discarded. This aligns with the fix landing via feat(llmisvc): move vLLM args to command field kserve/kserve#5049.
  • Image injection via kustomize replacements sourcing from params.env through the kserve-parameters ConfigMap.
  • All accelerator configs carry the label opendatahub.io/config-type: accelerator for dashboard filtering.

Which issue(s) this PR fixes:
Fixes # RHOAIENG-50060

Feature/Issue validation/testing:

  • kustomize build config/overlays/odh/ - 5 accelerator LLMInferenceServiceConfig resources rendered with correct images substituted from params.env and opendatahub.io/config-type: accelerator label applied
  • Unit tests: TestMergeSpecs (27 sub-tests), TestReplaceVariables (10 sub-tests) - all pass
  • Integration tests: TestLLMInferenceServiceController (92 specs via envtest) - all pass
  • End-to-end on CUDA node: bash wrapper is a no-op (ibm-aiu-setup.sh absent, vLLM starts as before)
  • End-to-end on Spyre node: ibm-aiu-setup.sh sourced correctly, vLLM starts successfully

Special notes for your reviewer:

The base template change (bash wrapper + conditional ibm-aiu-setup.sh sourcing) will interact with the upcoming PR syncing kserve#5049 which is landing in #1123 - that PR will also modify the base template command. The change here is structurally compatible: both add a bash wrapper with $@ forwarding. Merge conflict resolution will be straightforward - integrate the conditional source line into that version.

IBM Power team has confirmed availability to test on P (ppc64le) and Z (s390x) as per comments on RHOAIENG-50350, will be coordinating for full e2e testing.

Checklist:

  • Have you added unit/e2e tests that prove your fix is effective or that this feature works?
  • Has code been commented, particularly in hard-to-understand areas?
  • Have you made corresponding changes to the documentation?
  • Have you linked the JIRA issue(s) to this PR?

Release note:

Add accelerator-specific LLMInferenceServiceConfigs for NVIDIA CUDA, AMD ROCm, and IBM Spyre (s390x, x86, ppc64le) in the ODH overlay. All accelerator configs are labeled with `opendatahub.io/config-type: accelerator` for dashboard filtering. The base template is updated to conditionally source the IBM AIU setup script, enabling Spyre support without requiring args overrides in accelerator configs.

Summary by CodeRabbit

  • New Features
  • Added support for AMD ROCm and NVIDIA CUDA GPU accelerators for LLM inference.
  • Added IBM Spyre acceleration support for x86, s390x, and ppc64le architectures.
  • Added accelerator-specific deployment templates and a unified overlay to simplify selecting accelerator images.
  • Added parameter entries to manage accelerator container images centrally.

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 openshift-eng/jira-lifecycle-plugin repository.

Copy link

@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: 3

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

Inline comments:
In `@hack/setup/quick-install/kserve-knative-mode-full-install-with-manifests.sh`:
- Around line 120263-120265: The current two-line pattern "[ -f
/etc/profile.d/ibm-aiu-setup.sh ] && source /etc/profile.d/ibm-aiu-setup.sh"
followed by "exec vllm serve /mnt/models \"$@\"" can silently continue if
sourcing fails; change it to an explicit check that exits on source failure
(e.g., if the file exists then attempt to source it and if sourcing returns
non-zero, log an error and exit with non-zero) before running exec vllm serve;
apply the same guarded-sourcing pattern to the other quick-install scripts
(kserve-standard-mode-full-install-with-manifests.sh,
llmisvc-full-install-with-manifests.sh) and the base template
(config/llmisvcconfig/config-llm-template.yaml) so that failing to source
/etc/profile.d/ibm-aiu-setup.sh prevents starting vllm in a misconfigured
environment.

In
`@hack/setup/quick-install/kserve-standard-mode-full-install-with-manifests.sh`:
- Around line 120532-120533: Ensure the script fails fast if sourcing
/etc/profile.d/ibm-aiu-setup.sh fails: after attempting to source that file,
check the return status and if non-zero print an error and exit with non-zero
status instead of proceeding to the exec vllm serve /mnt/models "$@". In
practice, replace the bare "[ -f /etc/profile.d/ibm-aiu-setup.sh ] && source
/etc/profile.d/ibm-aiu-setup.sh" with an explicit conditional that sources the
file and on failure logs a clear message and exits (or use "source
/etc/profile.d/ibm-aiu-setup.sh || { echo 'failed to source ...' >&2; exit 1;
}") so exec vllm only runs when the IBM AIU environment was successfully loaded.

In `@hack/setup/quick-install/llmisvc-full-install-with-manifests.sh`:
- Around line 85774-85780: The current startup command uses "[ -f
/etc/profile.d/ibm-aiu-setup.sh ] && source /etc/profile.d/ibm-aiu-setup.sh"
which will silently continue if the file exists but sourcing fails; change this
to an explicit if-check that only skips when the file is absent and otherwise
attempts to source and, on any sourcing error, prints a clear error to stderr
and exits non‑zero before reaching "exec vllm serve /mnt/models \"$@\""; ensure
the new logic preserves the skip-on-absent behavior but fail-fast on source
errors so Spyre nodes don't start vllm in an unconfigured environment.

ℹ️ Review info

Configuration used: Organization UI

Review profile: CHILL

Plan: Pro

Cache: Disabled due to data retention organization setting

Knowledge base: Disabled due to data retention organization setting

📥 Commits

Reviewing files that changed from the base of the PR and between bf13d3b and ef9fe27.

📒 Files selected for processing (3)
  • hack/setup/quick-install/kserve-knative-mode-full-install-with-manifests.sh
  • hack/setup/quick-install/kserve-standard-mode-full-install-with-manifests.sh
  • hack/setup/quick-install/llmisvc-full-install-with-manifests.sh

Comment on lines 120263 to 120265
- |
[ -f /etc/profile.d/ibm-aiu-setup.sh ] && source /etc/profile.d/ibm-aiu-setup.sh
exec vllm serve /mnt/models "$@"
Copy link

Choose a reason for hiding this comment

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

⚠️ Potential issue | 🟠 Major

Silent source failure leaves Spyre nodes in a misconfigured state.

The two script lines are independent statements — if ibm-aiu-setup.sh exists but errors during sourcing, the && suppresses the failure and exec vllm serve still runs on the next line without the IBM AIU environment configured. On Spyre nodes, this would silently start vllm in a broken state. Prefer an explicit if/|| guard:

🛡️ Proposed fix
-      - |
-        [ -f /etc/profile.d/ibm-aiu-setup.sh ] && source /etc/profile.d/ibm-aiu-setup.sh
-        exec vllm serve /mnt/models "$@"
+      - |
+        if [ -f /etc/profile.d/ibm-aiu-setup.sh ]; then
+          source /etc/profile.d/ibm-aiu-setup.sh || exit 1
+        fi
+        exec vllm serve /mnt/models "$@"

This fix ensures that if the AIU setup script is present but fails, the container exits immediately instead of running vllm in an undefined environment. The same pattern should be applied to the other quick-install scripts (kserve-standard-mode-full-install-with-manifests.sh, llmisvc-full-install-with-manifests.sh) and the base template config/llmisvcconfig/config-llm-template.yaml from which these are generated.

📝 Committable suggestion

‼️ IMPORTANT
Carefully review the code before committing. Ensure that it accurately replaces the highlighted code, contains no missing lines, and has no issues with indentation. Thoroughly test & benchmark the code to ensure it meets the requirements.

Suggested change
- |
[ -f /etc/profile.d/ibm-aiu-setup.sh ] && source /etc/profile.d/ibm-aiu-setup.sh
exec vllm serve /mnt/models "$@"
- |
if [ -f /etc/profile.d/ibm-aiu-setup.sh ]; then
source /etc/profile.d/ibm-aiu-setup.sh || exit 1
fi
exec vllm serve /mnt/models "$@"
🤖 Prompt for AI Agents
Verify each finding against the current code and only fix it if needed.

In `@hack/setup/quick-install/kserve-knative-mode-full-install-with-manifests.sh`
around lines 120263 - 120265, The current two-line pattern "[ -f
/etc/profile.d/ibm-aiu-setup.sh ] && source /etc/profile.d/ibm-aiu-setup.sh"
followed by "exec vllm serve /mnt/models \"$@\"" can silently continue if
sourcing fails; change it to an explicit check that exits on source failure
(e.g., if the file exists then attempt to source it and if sourcing returns
non-zero, log an error and exit with non-zero) before running exec vllm serve;
apply the same guarded-sourcing pattern to the other quick-install scripts
(kserve-standard-mode-full-install-with-manifests.sh,
llmisvc-full-install-with-manifests.sh) and the base template
(config/llmisvcconfig/config-llm-template.yaml) so that failing to source
/etc/profile.d/ibm-aiu-setup.sh prevents starting vllm in a misconfigured
environment.

Comment on lines 85774 to 85780
command:
- vllm
- serve
- /mnt/models
- /bin/bash
- -c
- |
[ -f /etc/profile.d/ibm-aiu-setup.sh ] && source /etc/profile.d/ibm-aiu-setup.sh
exec vllm serve /mnt/models "$@"
- --
Copy link

Choose a reason for hiding this comment

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

⚠️ Potential issue | 🟡 Minor

Source failure is silently ignored — consider fail-fast behavior for IBM AIU environments

If /etc/profile.d/ibm-aiu-setup.sh exists but fails to source (e.g., due to a syntax error or a failed export inside the script), the && short-circuit ends and execution falls through to exec vllm serve without the required IBM AIU environment — silently. On non-Spyre nodes this is fine (file absent → skip), but on Spyre nodes a broken setup script would cause vllm to launch in an unconfigured environment, likely producing hard-to-diagnose runtime failures rather than an immediate startup error.

If the intent is fail-open (best-effort setup, always start vllm), the current logic is correct. If Spyre nodes require the setup to succeed, consider:

🛡️ Proposed fail-fast variant
- [ -f /etc/profile.d/ibm-aiu-setup.sh ] && source /etc/profile.d/ibm-aiu-setup.sh
+ if [ -f /etc/profile.d/ibm-aiu-setup.sh ]; then
+   source /etc/profile.d/ibm-aiu-setup.sh || { echo "ERROR: failed to source ibm-aiu-setup.sh" >&2; exit 1; }
+ fi
🤖 Prompt for AI Agents
Verify each finding against the current code and only fix it if needed.

In `@hack/setup/quick-install/llmisvc-full-install-with-manifests.sh` around lines
85774 - 85780, The current startup command uses "[ -f
/etc/profile.d/ibm-aiu-setup.sh ] && source /etc/profile.d/ibm-aiu-setup.sh"
which will silently continue if the file exists but sourcing fails; change this
to an explicit if-check that only skips when the file is absent and otherwise
attempts to source and, on any sourcing error, prints a clear error to stderr
and exits non‑zero before reaching "exec vllm serve /mnt/models \"$@\""; ensure
the new logic preserves the skip-on-absent behavior but fail-fast on source
errors so Spyre nodes don't start vllm in an unconfigured environment.

- Base template: use set -e + if block for ibm-aiu-setup.sh sourcing so
  a broken IBM environment aborts startup instead of silently launching
  vLLM with a failed setup
- ppc64le Spyre config: add missing arch-specific env vars (FLEX_COMPUTE,
  FLEX_DEVICE, warmup params, etc.) aligned with odh-model-controller
  reference template
- Regenerate install scripts

Signed-off-by: Killian Golds <kgolds@redhat.com>
@openshift-ci-robot
Copy link

openshift-ci-robot commented Feb 25, 2026

@KillianGolds: This pull request references RHOAIENG-50060 which is a valid jira issue.

Warning: The referenced jira issue has an invalid target version for the target branch this PR targets: expected the task to target either version "4.22." or "openshift-4.22.", but it targets "rhoai-3.4" instead.

Details

In response to this:

What this PR does / why we need it:

Adds accelerator-specific LLMInferenceServiceConfig resources for NVIDIA CUDA, AMD ROCm, and IBM Spyre (s390x, x86, ppc64le) under config/overlays/odh/accelerators/, and modifies the base LLMInferenceServiceConfig template to support Spyre without requiring command/args overrides in the accelerator configs.

Changes:

  • Base template (config/llmisvcconfig/config-llm-template.yaml): wraps the vLLM launch in a bash command that conditionally sources /etc/profile.d/ibm-aiu-setup.sh if present (no-op on non-Spyre nodes). Uses $@ forwarding so all args - model name, port, and any user-specified flags — pass through correctly.
  • 5 accelerator configs under config/overlays/odh/accelerators/: NVIDIA CUDA and AMD ROCm override image only; IBM Spyre configs (s390x, x86, ppc64le) override image and set arch-specific env vars required for Spyre startup.
  • No args overrides in any accelerator config - if an accelerator config overrides args, user-specified args on their LLMInferenceService would be silently discarded. This aligns with the fix landing via feat(llmisvc): move vLLM args to command field kserve/kserve#5049.
  • Image injection via kustomize replacements sourcing from params.env through the kserve-parameters ConfigMap.
  • All accelerator configs carry the label opendatahub.io/config-type: accelerator for dashboard filtering.

Which issue(s) this PR fixes:
Fixes # RHOAIENG-50060

Feature/Issue validation/testing:

  • kustomize build config/overlays/odh/ - 5 accelerator LLMInferenceServiceConfig resources rendered with correct images substituted from params.env and opendatahub.io/config-type: accelerator label applied
  • Unit tests: TestMergeSpecs (27 sub-tests), TestReplaceVariables (10 sub-tests) - all pass
  • Integration tests: TestLLMInferenceServiceController (92 specs via envtest) - all pass
  • End-to-end on CUDA node: bash wrapper is a no-op (ibm-aiu-setup.sh absent, vLLM starts as before)
  • End-to-end on Spyre node: ibm-aiu-setup.sh sourced correctly, vLLM starts successfully

Special notes for your reviewer:

The base template change (bash wrapper + conditional ibm-aiu-setup.sh sourcing) will interact with the upcoming PR syncing kserve#5049 which is landing in #1123 - that PR will also modify the base template command. The change here is structurally compatible: both add a bash wrapper with $@ forwarding. Merge conflict resolution will be straightforward - integrate the conditional source line into that version.

IBM Power team has confirmed availability to test on P (ppc64le) and Z (s390x) as per comments on RHOAIENG-50350, will be coordinating for full e2e testing.

Checklist:

  • Have you added unit/e2e tests that prove your fix is effective or that this feature works?
  • Has code been commented, particularly in hard-to-understand areas?
  • Have you made corresponding changes to the documentation?
  • Have you linked the JIRA issue(s) to this PR?

Release note:

Add accelerator-specific LLMInferenceServiceConfigs for NVIDIA CUDA, AMD ROCm, and IBM Spyre (s390x, x86, ppc64le) in the ODH overlay. All accelerator configs are labeled with `opendatahub.io/config-type: accelerator` for dashboard filtering. The base template is updated to conditionally source the IBM AIU setup script, enabling Spyre support without requiring args overrides in accelerator configs.

Summary by CodeRabbit

  • New Features

  • Added support for AMD ROCm and NVIDIA CUDA GPU accelerators for LLM inference.

  • Added IBM Spyre acceleration support for x86, s390x, and ppc64le.

  • Added accelerator-specific deployment templates and a unified overlay to simplify selecting accelerator images.

  • Added parameter entries to manage accelerator container images centrally.

  • Chores

  • Updated service startup scripts to load an optional environment setup before launching the model server and preserve passed arguments.

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 openshift-eng/jira-lifecycle-plugin repository.

Copy link

@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)
config/overlays/odh/accelerators/ibm-spyre-ppc64le-config-llm-template.yaml (1)

13-33: Add inline comment explaining architecture-specific env var differences.

The ppc64le config (like x86) intentionally omits VLLM_SPYRE_USE_CB and TORCH_SENDNN_CACHE_ENABLE, which are present in s390x. This reflects different acceleration strategies: ppc64le/x86 use warmup batching (VLLM_SPYRE_WARMUP_*) while s390x uses continuous batching (VLLM_SPYRE_USE_CB). Adding a brief inline comment (e.g., # ppc64le uses warmup batching instead of continuous batching) would clarify this architectural choice and prevent future confusion about the gap.

🤖 Prompt for AI Agents
Verify each finding against the current code and only fix it if needed.

In `@config/overlays/odh/accelerators/ibm-spyre-ppc64le-config-llm-template.yaml`
around lines 13 - 33, Add a one-line inline YAML comment near the env block
(e.g., above the VLLM_SPYRE_WARMUP_* entries) explaining that ppc64le/x86
intentionally omit VLLM_SPYRE_USE_CB and TORCH_SENDNN_CACHE_ENABLE (present in
s390x) because these architectures use warmup batching
(VLLM_SPYRE_WARMUP_BATCH_SIZES, VLLM_SPYRE_WARMUP_PROMPT_LENS,
VLLM_SPYRE_WARMUP_NEW_TOKENS) rather than continuous batching; reference the
variable names VLLM_SPYRE_USE_CB, TORCH_SENDNN_CACHE_ENABLE and the
VLLM_SPYRE_WARMUP_* series in the comment for clarity.
🤖 Prompt for all review comments with AI agents
Verify each finding against the current code and only fix it if needed.

Nitpick comments:
In `@config/overlays/odh/accelerators/ibm-spyre-ppc64le-config-llm-template.yaml`:
- Around line 13-33: Add a one-line inline YAML comment near the env block
(e.g., above the VLLM_SPYRE_WARMUP_* entries) explaining that ppc64le/x86
intentionally omit VLLM_SPYRE_USE_CB and TORCH_SENDNN_CACHE_ENABLE (present in
s390x) because these architectures use warmup batching
(VLLM_SPYRE_WARMUP_BATCH_SIZES, VLLM_SPYRE_WARMUP_PROMPT_LENS,
VLLM_SPYRE_WARMUP_NEW_TOKENS) rather than continuous batching; reference the
variable names VLLM_SPYRE_USE_CB, TORCH_SENDNN_CACHE_ENABLE and the
VLLM_SPYRE_WARMUP_* series in the comment for clarity.

ℹ️ Review info

Configuration used: Organization UI

Review profile: CHILL

Plan: Pro

Cache: Disabled due to data retention organization setting

Knowledge base: Disabled due to data retention organization setting

📥 Commits

Reviewing files that changed from the base of the PR and between ef9fe27 and c84a07d.

📒 Files selected for processing (5)
  • config/llmisvcconfig/config-llm-template.yaml
  • config/overlays/odh/accelerators/ibm-spyre-ppc64le-config-llm-template.yaml
  • hack/setup/quick-install/kserve-knative-mode-full-install-with-manifests.sh
  • hack/setup/quick-install/kserve-standard-mode-full-install-with-manifests.sh
  • hack/setup/quick-install/llmisvc-full-install-with-manifests.sh

Regenerated via 📦 Extracting versions from go.mod...

✅ Updated kserve-deps.env

  ISTIO_VERSION=1.27.1
  KEDA_VERSION=2.17.3
  GATEWAY_API_VERSION=v1.3.1-0.20251106052652-079e4774d76b
  GIE_VERSION=v1.2.0
  LWS_VERSION=v0.7.0
  OPENTELEMETRY_OPERATOR_VERSION=0.74.3
Generated /Users/killiangolds/Desktop/Dev-Environment/kserve-fork/kserve-images.sh
go vet ./pkg/... ./cmd/... && cd qpext && go vet ./...
go mod tidy
cd qpext && go mod tidy
/Users/killiangolds/Desktop/Dev-Environment/kserve-fork/bin/.venv/bin/black --config python/pyproject.toml ./python ./docs
/Users/killiangolds/Desktop/Dev-Environment/kserve-fork/bin/.venv/bin/flake8 --config=.flake8 .
hack/update-codegen.sh
Codegen version v0.34.2
Generating defaulter code for 3 targets
Generating conversion code for 2 targets
Generating client code for 3 targets
Generating lister code for 3 targets
Generating informer code for 3 targets
hack/update-openapigen.sh
You are not in the target directory: /Users/killiangolds/go/src/github.com/kserve/kserve
Creating a symbolic link for the target directory ...
Changing to the target directory: /Users/killiangolds/go/src/github.com/kserve/kserve
Returning to the original directory: /Users/killiangolds/Desktop/Dev-Environment/kserve-fork
hack/python-sdk/client-gen.sh
Downloading the swagger-codegen JAR package ...
Generating Python SDK for KServe ...
[main] INFO  o.o.codegen.DefaultGenerator - Generating with dryRun=false
[main] INFO  o.o.codegen.DefaultGenerator - OpenAPI Generator: python (client)
[main] INFO  o.o.codegen.DefaultGenerator - Generator 'python' is considered stable.
[main] INFO  o.o.c.languages.PythonClientCodegen - Environment variable PYTHON_POST_PROCESS_FILE not defined so the Python code may not be properly formatted. To define it, try 'export PYTHON_POST_PROCESS_FILE="/usr/local/bin/yapf -i"' (Linux/Mac)
[main] INFO  o.o.c.languages.PythonClientCodegen - NOTE: To enable file post-processing, 'enablePostProcessFile' must be set to `true` (--enable-post-process-file for CLI).
[main] WARN  o.o.codegen.utils.URLPathUtils - 'host' (OAS 2.0) or 'servers' (OAS 3.0) not defined in the spec. Default to [http://localhost] for server URL [http://localhost/]
[main] WARN  o.o.codegen.utils.URLPathUtils - 'host' (OAS 2.0) or 'servers' (OAS 3.0) not defined in the spec. Default to [http://localhost] for server URL [http://localhost/]
[main] WARN  o.o.codegen.utils.ModelUtils - #/components/schemas/v1.EnvVar is not defined
[main] WARN  o.o.codegen.utils.ModelUtils - #/components/schemas/v1.EnvVar is not defined
[main] WARN  o.o.codegen.utils.ModelUtils - #/components/schemas/v1.EnvVar is not defined
[main] WARN  o.o.codegen.utils.ModelUtils - #/components/schemas/v1.EnvVar is not defined
[main] WARN  o.o.codegen.utils.ModelUtils - #/components/schemas/v1.EnvVar is not defined
[main] WARN  o.o.codegen.utils.ModelUtils - #/components/schemas/v1.EnvVar is not defined
[main] WARN  o.o.codegen.utils.ModelUtils - #/components/schemas/v1.EnvVar is not defined
[main] WARN  o.o.codegen.utils.ModelUtils - #/components/schemas/v1.EnvVar is not defined
[main] WARN  o.o.codegen.utils.ModelUtils - #/components/schemas/v1.ObjectMeta is not defined
[main] WARN  o.o.codegen.utils.ModelUtils - #/components/schemas/v1.ObjectMeta is not defined
[main] WARN  o.o.codegen.utils.ModelUtils - #/components/schemas/v1.ObjectMeta is not defined
[main] WARN  o.o.codegen.utils.ModelUtils - #/components/schemas/v1.ObjectMeta is not defined
[main] WARN  o.o.codegen.utils.ModelUtils - #/components/schemas/v1.ObjectMeta is not defined
[main] WARN  o.o.codegen.utils.ModelUtils - #/components/schemas/v1.ObjectMeta is not defined
[main] WARN  o.o.codegen.utils.ModelUtils - #/components/schemas/v1.ListMeta is not defined
[main] WARN  o.o.codegen.utils.ModelUtils - #/components/schemas/v1.ListMeta is not defined
[main] WARN  o.o.codegen.utils.ModelUtils - #/components/schemas/v1.ListMeta is not defined
[main] WARN  o.o.codegen.utils.ModelUtils - #/components/schemas/v1.ListMeta is not defined
[main] WARN  o.o.codegen.utils.ModelUtils - #/components/schemas/v1.ListMeta is not defined
[main] WARN  o.o.codegen.utils.ModelUtils - #/components/schemas/v1.ListMeta is not defined
[main] WARN  o.o.codegen.utils.ModelUtils - #/components/schemas/v1.ObjectMeta is not defined
[main] WARN  o.o.codegen.utils.ModelUtils - #/components/schemas/v1.ObjectMeta is not defined
[main] WARN  o.o.codegen.utils.ModelUtils - #/components/schemas/v1.ObjectMeta is not defined
[main] WARN  o.o.codegen.utils.ModelUtils - #/components/schemas/v1.ObjectMeta is not defined
[main] WARN  o.o.codegen.utils.ModelUtils - #/components/schemas/v1.ObjectMeta is not defined
[main] WARN  o.o.codegen.utils.ModelUtils - #/components/schemas/v1.ObjectMeta is not defined
[main] WARN  o.o.codegen.utils.ModelUtils - #/components/schemas/v1.ListMeta is not defined
[main] WARN  o.o.codegen.utils.ModelUtils - #/components/schemas/v1.ListMeta is not defined
[main] WARN  o.o.codegen.utils.ModelUtils - #/components/schemas/v1.ListMeta is not defined
[main] WARN  o.o.codegen.utils.ModelUtils - #/components/schemas/v1.ListMeta is not defined
[main] WARN  o.o.codegen.utils.ModelUtils - #/components/schemas/v1.ListMeta is not defined
[main] WARN  o.o.codegen.utils.ModelUtils - #/components/schemas/v1.ListMeta is not defined
[main] WARN  o.o.codegen.utils.ModelUtils - #/components/schemas/v1.ObjectMeta is not defined
[main] WARN  o.o.codegen.utils.ModelUtils - #/components/schemas/v1.ObjectMeta is not defined
[main] WARN  o.o.codegen.utils.ModelUtils - #/components/schemas/v1.ObjectMeta is not defined
[main] WARN  o.o.codegen.utils.ModelUtils - #/components/schemas/v1.ObjectMeta is not defined
[main] WARN  o.o.codegen.utils.ModelUtils - #/components/schemas/v1.ObjectMeta is not defined
[main] WARN  o.o.codegen.utils.ModelUtils - #/components/schemas/v1.ObjectMeta is not defined
[main] WARN  o.o.codegen.utils.ModelUtils - #/components/schemas/v1.ListMeta is not defined
[main] WARN  o.o.codegen.utils.ModelUtils - #/components/schemas/v1.ListMeta is not defined
[main] WARN  o.o.codegen.utils.ModelUtils - #/components/schemas/v1.ListMeta is not defined
[main] WARN  o.o.codegen.utils.ModelUtils - #/components/schemas/v1.ListMeta is not defined
[main] WARN  o.o.codegen.utils.ModelUtils - #/components/schemas/v1.ListMeta is not defined
[main] WARN  o.o.codegen.utils.ModelUtils - #/components/schemas/v1.ListMeta is not defined
[main] WARN  o.o.codegen.utils.ModelUtils - #/components/schemas/v1.Affinity is not defined
[main] WARN  o.o.codegen.utils.ModelUtils - #/components/schemas/v1.ResourceRequirements is not defined
[main] WARN  o.o.codegen.utils.ModelUtils - #/components/schemas/v1.Affinity is not defined
[main] WARN  o.o.codegen.utils.ModelUtils - #/components/schemas/v1.Affinity is not defined
[main] WARN  o.o.codegen.utils.ModelUtils - #/components/schemas/v1.Affinity is not defined
[main] WARN  o.o.codegen.utils.ModelUtils - #/components/schemas/v1.Affinity is not defined
[main] WARN  o.o.codegen.utils.ModelUtils - #/components/schemas/v1.Affinity is not defined
[main] WARN  o.o.codegen.utils.ModelUtils - #/components/schemas/v1.ResourceRequirements is not defined
[main] WARN  o.o.codegen.utils.ModelUtils - #/components/schemas/v1.ResourceRequirements is not defined
[main] WARN  o.o.codegen.utils.ModelUtils - #/components/schemas/v1.ResourceRequirements is not defined
[main] WARN  o.o.codegen.utils.ModelUtils - #/components/schemas/v1.ResourceRequirements is not defined
[main] WARN  o.o.codegen.utils.ModelUtils - #/components/schemas/v1.ResourceRequirements is not defined
[main] WARN  o.o.codegen.utils.ModelUtils - #/components/schemas/v1.Toleration is not defined
[main] WARN  o.o.codegen.utils.ModelUtils - #/components/schemas/v1.Toleration is not defined
[main] WARN  o.o.codegen.utils.ModelUtils - #/components/schemas/v1.Toleration is not defined
[main] WARN  o.o.codegen.utils.ModelUtils - #/components/schemas/v1.Toleration is not defined
[main] WARN  o.o.codegen.utils.ModelUtils - #/components/schemas/v1.Toleration is not defined
[main] WARN  o.o.codegen.utils.ModelUtils - #/components/schemas/v1.Toleration is not defined
[main] WARN  o.o.codegen.utils.ModelUtils - #/components/schemas/v1.Toleration is not defined
[main] WARN  o.o.codegen.utils.ModelUtils - #/components/schemas/v1.Toleration is not defined
[main] WARN  o.o.codegen.utils.ModelUtils - #/components/schemas/knative.URL is not defined
[main] WARN  o.o.codegen.utils.ModelUtils - #/components/schemas/knative.Condition is not defined
[main] WARN  o.o.codegen.utils.ModelUtils - #/components/schemas/knative.Condition is not defined
[main] WARN  o.o.codegen.utils.ModelUtils - #/components/schemas/knative.Condition is not defined
[main] WARN  o.o.codegen.utils.ModelUtils - #/components/schemas/knative.Condition is not defined
[main] WARN  o.o.codegen.utils.ModelUtils - #/components/schemas/knative.Condition is not defined
[main] WARN  o.o.codegen.utils.ModelUtils - #/components/schemas/knative.Condition is not defined
[main] WARN  o.o.codegen.utils.ModelUtils - #/components/schemas/knative.Condition is not defined
[main] WARN  o.o.codegen.utils.ModelUtils - #/components/schemas/knative.Condition is not defined
[main] WARN  o.o.codegen.utils.ModelUtils - #/components/schemas/knative.URL is not defined
[main] WARN  o.o.codegen.utils.ModelUtils - #/components/schemas/knative.URL is not defined
[main] WARN  o.o.codegen.utils.ModelUtils - #/components/schemas/knative.URL is not defined
[main] WARN  o.o.codegen.utils.ModelUtils - #/components/schemas/knative.URL is not defined
[main] WARN  o.o.codegen.utils.ModelUtils - #/components/schemas/knative.URL is not defined
[main] WARN  o.o.codegen.utils.ModelUtils - #/components/schemas/v1.ObjectMeta is not defined
[main] WARN  o.o.codegen.utils.ModelUtils - #/components/schemas/v1alpha1.LLMInferenceServiceSpec is not defined
[main] WARN  o.o.codegen.utils.ModelUtils - #/components/schemas/v1alpha1.LLMInferenceServiceStatus is not defined
[main] WARN  o.o.codegen.utils.ModelUtils - #/components/schemas/v1.ObjectMeta is not defined
[main] WARN  o.o.codegen.utils.ModelUtils - #/components/schemas/v1.ObjectMeta is not defined
[main] WARN  o.o.codegen.utils.ModelUtils - #/components/schemas/v1.ObjectMeta is not defined
[main] WARN  o.o.codegen.utils.ModelUtils - #/components/schemas/v1.ObjectMeta is not defined
[main] WARN  o.o.codegen.utils.ModelUtils - #/components/schemas/v1.ObjectMeta is not defined
[main] WARN  o.o.codegen.utils.ModelUtils - #/components/schemas/v1alpha1.LLMInferenceServiceSpec is not defined
[main] WARN  o.o.codegen.utils.ModelUtils - #/components/schemas/v1alpha1.LLMInferenceServiceSpec is not defined
[main] WARN  o.o.codegen.utils.ModelUtils - #/components/schemas/v1alpha1.LLMInferenceServiceSpec is not defined
[main] WARN  o.o.codegen.utils.ModelUtils - #/components/schemas/v1alpha1.LLMInferenceServiceSpec is not defined
[main] WARN  o.o.codegen.utils.ModelUtils - #/components/schemas/v1alpha1.LLMInferenceServiceSpec is not defined
[main] WARN  o.o.codegen.utils.ModelUtils - #/components/schemas/v1alpha1.LLMInferenceServiceStatus is not defined
[main] WARN  o.o.codegen.utils.ModelUtils - #/components/schemas/v1alpha1.LLMInferenceServiceStatus is not defined
[main] WARN  o.o.codegen.utils.ModelUtils - #/components/schemas/v1alpha1.LLMInferenceServiceStatus is not defined
[main] WARN  o.o.codegen.utils.ModelUtils - #/components/schemas/v1alpha1.LLMInferenceServiceStatus is not defined
[main] WARN  o.o.codegen.utils.ModelUtils - #/components/schemas/v1alpha1.LLMInferenceServiceStatus is not defined
[main] WARN  o.o.codegen.utils.ModelUtils - #/components/schemas/v1.ObjectMeta is not defined
[main] WARN  o.o.codegen.utils.ModelUtils - #/components/schemas/v1alpha1.LLMInferenceServiceSpec is not defined
[main] WARN  o.o.codegen.utils.ModelUtils - #/components/schemas/v1.ObjectMeta is not defined
[main] WARN  o.o.codegen.utils.ModelUtils - #/components/schemas/v1.ObjectMeta is not defined
[main] WARN  o.o.codegen.utils.ModelUtils - #/components/schemas/v1.ObjectMeta is not defined
[main] WARN  o.o.codegen.utils.ModelUtils - #/components/schemas/v1.ObjectMeta is not defined
[main] WARN  o.o.codegen.utils.ModelUtils - #/components/schemas/v1.ObjectMeta is not defined
[main] WARN  o.o.codegen.utils.ModelUtils - #/components/schemas/v1alpha1.LLMInferenceServiceSpec is not defined
[main] WARN  o.o.codegen.utils.ModelUtils - #/components/schemas/v1alpha1.LLMInferenceServiceSpec is not defined
[main] WARN  o.o.codegen.utils.ModelUtils - #/components/schemas/v1alpha1.LLMInferenceServiceSpec is not defined
[main] WARN  o.o.codegen.utils.ModelUtils - #/components/schemas/v1alpha1.LLMInferenceServiceSpec is not defined
[main] WARN  o.o.codegen.utils.ModelUtils - #/components/schemas/v1alpha1.LLMInferenceServiceSpec is not defined
[main] WARN  o.o.codegen.utils.ModelUtils - #/components/schemas/v1.ListMeta is not defined
[main] WARN  o.o.codegen.utils.ModelUtils - #/components/schemas/v1.ListMeta is not defined
[main] WARN  o.o.codegen.utils.ModelUtils - #/components/schemas/v1.ListMeta is not defined
[main] WARN  o.o.codegen.utils.ModelUtils - #/components/schemas/v1.ListMeta is not defined
[main] WARN  o.o.codegen.utils.ModelUtils - #/components/schemas/v1.ListMeta is not defined
[main] WARN  o.o.codegen.utils.ModelUtils - #/components/schemas/v1.ListMeta is not defined
[main] WARN  o.o.codegen.utils.ModelUtils - #/components/schemas/v1.ListMeta is not defined
[main] WARN  o.o.codegen.utils.ModelUtils - #/components/schemas/v1.ListMeta is not defined
[main] WARN  o.o.codegen.utils.ModelUtils - #/components/schemas/v1.ListMeta is not defined
[main] WARN  o.o.codegen.utils.ModelUtils - #/components/schemas/v1.ListMeta is not defined
[main] WARN  o.o.codegen.utils.ModelUtils - #/components/schemas/v1.ListMeta is not defined
[main] WARN  o.o.codegen.utils.ModelUtils - #/components/schemas/v1.ListMeta is not defined
[main] WARN  o.o.codegen.utils.ModelUtils - #/components/schemas/v1.ObjectMeta is not defined
[main] WARN  o.o.codegen.utils.ModelUtils - #/components/schemas/v1alpha1.LocalModelCacheStatus is not defined
[main] WARN  o.o.codegen.utils.ModelUtils - #/components/schemas/v1.ObjectMeta is not defined
[main] WARN  o.o.codegen.utils.ModelUtils - #/components/schemas/v1.ObjectMeta is not defined
[main] WARN  o.o.codegen.utils.ModelUtils - #/components/schemas/v1.ObjectMeta is not defined
[main] WARN  o.o.codegen.utils.ModelUtils - #/components/schemas/v1.ObjectMeta is not defined
[main] WARN  o.o.codegen.utils.ModelUtils - #/components/schemas/v1.ObjectMeta is not defined
[main] WARN  o.o.codegen.utils.ModelUtils - #/components/schemas/v1alpha1.LocalModelCacheStatus is not defined
[main] WARN  o.o.codegen.utils.ModelUtils - #/components/schemas/v1alpha1.LocalModelCacheStatus is not defined
[main] WARN  o.o.codegen.utils.ModelUtils - #/components/schemas/v1alpha1.LocalModelCacheStatus is not defined
[main] WARN  o.o.codegen.utils.ModelUtils - #/components/schemas/v1alpha1.LocalModelCacheStatus is not defined
[main] WARN  o.o.codegen.utils.ModelUtils - #/components/schemas/v1alpha1.LocalModelCacheStatus is not defined
[main] WARN  o.o.codegen.utils.ModelUtils - #/components/schemas/v1.ListMeta is not defined
[main] WARN  o.o.codegen.utils.ModelUtils - #/components/schemas/v1.ListMeta is not defined
[main] WARN  o.o.codegen.utils.ModelUtils - #/components/schemas/v1.ListMeta is not defined
[main] WARN  o.o.codegen.utils.ModelUtils - #/components/schemas/v1.ListMeta is not defined
[main] WARN  o.o.codegen.utils.ModelUtils - #/components/schemas/v1.ListMeta is not defined
[main] WARN  o.o.codegen.utils.ModelUtils - #/components/schemas/v1.ListMeta is not defined
[main] WARN  o.o.codegen.utils.ModelUtils - #/components/schemas/resource.Quantity is not defined
[main] WARN  o.o.codegen.utils.ModelUtils - #/components/schemas/resource.Quantity is not defined
[main] WARN  o.o.codegen.utils.ModelUtils - #/components/schemas/resource.Quantity is not defined
[main] WARN  o.o.codegen.utils.ModelUtils - #/components/schemas/resource.Quantity is not defined
[main] WARN  o.o.codegen.utils.ModelUtils - #/components/schemas/resource.Quantity is not defined
[main] WARN  o.o.codegen.utils.ModelUtils - #/components/schemas/resource.Quantity is not defined
[main] WARN  o.o.codegen.utils.ModelUtils - #/components/schemas/v1.ObjectMeta is not defined
[main] WARN  o.o.codegen.utils.ModelUtils - #/components/schemas/v1alpha1.LocalModelNodeStatus is not defined
[main] WARN  o.o.codegen.utils.ModelUtils - #/components/schemas/v1.ObjectMeta is not defined
[main] WARN  o.o.codegen.utils.ModelUtils - #/components/schemas/v1.ObjectMeta is not defined
[main] WARN  o.o.codegen.utils.ModelUtils - #/components/schemas/v1.ObjectMeta is not defined
[main] WARN  o.o.codegen.utils.ModelUtils - #/components/schemas/v1.ObjectMeta is not defined
[main] WARN  o.o.codegen.utils.ModelUtils - #/components/schemas/v1.ObjectMeta is not defined
[main] WARN  o.o.codegen.utils.ModelUtils - #/components/schemas/v1alpha1.LocalModelNodeStatus is not defined
[main] WARN  o.o.codegen.utils.ModelUtils - #/components/schemas/v1alpha1.LocalModelNodeStatus is not defined
[main] WARN  o.o.codegen.utils.ModelUtils - #/components/schemas/v1alpha1.LocalModelNodeStatus is not defined
[main] WARN  o.o.codegen.utils.ModelUtils - #/components/schemas/v1alpha1.LocalModelNodeStatus is not defined
[main] WARN  o.o.codegen.utils.ModelUtils - #/components/schemas/v1alpha1.LocalModelNodeStatus is not defined
[main] WARN  o.o.codegen.utils.ModelUtils - #/components/schemas/v1.ObjectMeta is not defined
[main] WARN  o.o.codegen.utils.ModelUtils - #/components/schemas/v1alpha1.LocalModelNodeGroupStatus is not defined
[main] WARN  o.o.codegen.utils.ModelUtils - #/components/schemas/v1.ObjectMeta is not defined
[main] WARN  o.o.codegen.utils.ModelUtils - #/components/schemas/v1.ObjectMeta is not defined
[main] WARN  o.o.codegen.utils.ModelUtils - #/components/schemas/v1.ObjectMeta is not defined
[main] WARN  o.o.codegen.utils.ModelUtils - #/components/schemas/v1.ObjectMeta is not defined
[main] WARN  o.o.codegen.utils.ModelUtils - #/components/schemas/v1.ObjectMeta is not defined
[main] WARN  o.o.codegen.utils.ModelUtils - #/components/schemas/v1alpha1.LocalModelNodeGroupStatus is not defined
[main] WARN  o.o.codegen.utils.ModelUtils - #/components/schemas/v1alpha1.LocalModelNodeGroupStatus is not defined
[main] WARN  o.o.codegen.utils.ModelUtils - #/components/schemas/v1alpha1.LocalModelNodeGroupStatus is not defined
[main] WARN  o.o.codegen.utils.ModelUtils - #/components/schemas/v1alpha1.LocalModelNodeGroupStatus is not defined
[main] WARN  o.o.codegen.utils.ModelUtils - #/components/schemas/v1alpha1.LocalModelNodeGroupStatus is not defined
[main] WARN  o.o.codegen.utils.ModelUtils - #/components/schemas/v1.ListMeta is not defined
[main] WARN  o.o.codegen.utils.ModelUtils - #/components/schemas/v1.ListMeta is not defined
[main] WARN  o.o.codegen.utils.ModelUtils - #/components/schemas/v1.ListMeta is not defined
[main] WARN  o.o.codegen.utils.ModelUtils - #/components/schemas/v1.ListMeta is not defined
[main] WARN  o.o.codegen.utils.ModelUtils - #/components/schemas/v1.ListMeta is not defined
[main] WARN  o.o.codegen.utils.ModelUtils - #/components/schemas/v1.ListMeta is not defined
[main] WARN  o.o.codegen.utils.ModelUtils - #/components/schemas/v1.PersistentVolumeClaimSpec is not defined
[main] WARN  o.o.codegen.utils.ModelUtils - #/components/schemas/v1.PersistentVolumeSpec is not defined
[main] WARN  o.o.codegen.utils.ModelUtils - #/components/schemas/resource.Quantity is not defined
[main] WARN  o.o.codegen.utils.ModelUtils - #/components/schemas/v1.PersistentVolumeClaimSpec is not defined
[main] WARN  o.o.codegen.utils.ModelUtils - #/components/schemas/v1.PersistentVolumeClaimSpec is not defined
[main] WARN  o.o.codegen.utils.ModelUtils - #/components/schemas/v1.PersistentVolumeClaimSpec is not defined
[main] WARN  o.o.codegen.utils.ModelUtils - #/components/schemas/v1.PersistentVolumeClaimSpec is not defined
[main] WARN  o.o.codegen.utils.ModelUtils - #/components/schemas/v1.PersistentVolumeClaimSpec is not defined
[main] WARN  o.o.codegen.utils.ModelUtils - #/components/schemas/v1.PersistentVolumeSpec is not defined
[main] WARN  o.o.codegen.utils.ModelUtils - #/components/schemas/v1.PersistentVolumeSpec is not defined
[main] WARN  o.o.codegen.utils.ModelUtils - #/components/schemas/v1.PersistentVolumeSpec is not defined
[main] WARN  o.o.codegen.utils.ModelUtils - #/components/schemas/v1.PersistentVolumeSpec is not defined
[main] WARN  o.o.codegen.utils.ModelUtils - #/components/schemas/v1.PersistentVolumeSpec is not defined
[main] WARN  o.o.codegen.utils.ModelUtils - #/components/schemas/resource.Quantity is not defined
[main] WARN  o.o.codegen.utils.ModelUtils - #/components/schemas/resource.Quantity is not defined
[main] WARN  o.o.codegen.utils.ModelUtils - #/components/schemas/resource.Quantity is not defined
[main] WARN  o.o.codegen.utils.ModelUtils - #/components/schemas/resource.Quantity is not defined
[main] WARN  o.o.codegen.utils.ModelUtils - #/components/schemas/resource.Quantity is not defined
[main] WARN  o.o.codegen.utils.ModelUtils - #/components/schemas/v1.ListMeta is not defined
[main] WARN  o.o.codegen.utils.ModelUtils - #/components/schemas/v1.ListMeta is not defined
[main] WARN  o.o.codegen.utils.ModelUtils - #/components/schemas/v1.ListMeta is not defined
[main] WARN  o.o.codegen.utils.ModelUtils - #/components/schemas/v1.ListMeta is not defined
[main] WARN  o.o.codegen.utils.ModelUtils - #/components/schemas/v1.ListMeta is not defined
[main] WARN  o.o.codegen.utils.ModelUtils - #/components/schemas/v1.ListMeta is not defined
[main] WARN  o.o.codegen.utils.ModelUtils - #/components/schemas/v1alpha1.LocalModelInfo is not defined
[main] WARN  o.o.codegen.utils.ModelUtils - #/components/schemas/v1alpha1.LocalModelInfo is not defined
[main] WARN  o.o.codegen.utils.ModelUtils - #/components/schemas/v1alpha1.LocalModelInfo is not defined
[main] WARN  o.o.codegen.utils.ModelUtils - #/components/schemas/v1alpha1.LocalModelInfo is not defined
[main] WARN  o.o.codegen.utils.ModelUtils - #/components/schemas/v1alpha1.LocalModelInfo is not defined
[main] WARN  o.o.codegen.utils.ModelUtils - #/components/schemas/v1alpha1.LocalModelInfo is not defined
[main] WARN  o.o.codegen.utils.ModelUtils - #/components/schemas/v1alpha1.LocalModelInfo is not defined
[main] WARN  o.o.codegen.utils.ModelUtils - #/components/schemas/v1alpha1.LocalModelInfo is not defined
[main] WARN  o.o.codegen.utils.ModelUtils - #/components/schemas/resource.Quantity is not defined
[main] WARN  o.o.codegen.utils.ModelUtils - #/components/schemas/resource.Quantity is not defined
[main] WARN  o.o.codegen.utils.ModelUtils - #/components/schemas/resource.Quantity is not defined
[main] WARN  o.o.codegen.utils.ModelUtils - #/components/schemas/resource.Quantity is not defined
[main] WARN  o.o.codegen.utils.ModelUtils - #/components/schemas/resource.Quantity is not defined
[main] WARN  o.o.codegen.utils.ModelUtils - #/components/schemas/resource.Quantity is not defined
[main] WARN  o.o.codegen.utils.ModelUtils - #/components/schemas/v1.ObjectMeta is not defined
[main] WARN  o.o.codegen.utils.ModelUtils - #/components/schemas/v1.ObjectMeta is not defined
[main] WARN  o.o.codegen.utils.ModelUtils - #/components/schemas/v1.ObjectMeta is not defined
[main] WARN  o.o.codegen.utils.ModelUtils - #/components/schemas/v1.ObjectMeta is not defined
[main] WARN  o.o.codegen.utils.ModelUtils - #/components/schemas/v1.ObjectMeta is not defined
[main] WARN  o.o.codegen.utils.ModelUtils - #/components/schemas/v1.ObjectMeta is not defined
[main] WARN  o.o.codegen.utils.ModelUtils - #/components/schemas/v1.ListMeta is not defined
[main] WARN  o.o.codegen.utils.ModelUtils - #/components/schemas/v1.ListMeta is not defined
[main] WARN  o.o.codegen.utils.ModelUtils - #/components/schemas/v1.ListMeta is not defined
[main] WARN  o.o.codegen.utils.ModelUtils - #/components/schemas/v1.ListMeta is not defined
[main] WARN  o.o.codegen.utils.ModelUtils - #/components/schemas/v1.ListMeta is not defined
[main] WARN  o.o.codegen.utils.ModelUtils - #/components/schemas/v1.ListMeta is not defined
[main] WARN  o.o.codegen.utils.ModelUtils - #/components/schemas/v1.Affinity is not defined
[main] WARN  o.o.codegen.utils.ModelUtils - #/components/schemas/v1.Affinity is not defined
[main] WARN  o.o.codegen.utils.ModelUtils - #/components/schemas/v1.Affinity is not defined
[main] WARN  o.o.codegen.utils.ModelUtils - #/components/schemas/v1.Affinity is not defined
[main] WARN  o.o.codegen.utils.ModelUtils - #/components/schemas/v1.Affinity is not defined
[main] WARN  o.o.codegen.utils.ModelUtils - #/components/schemas/v1.Affinity is not defined
[main] WARN  o.o.codegen.utils.ModelUtils - #/components/schemas/v1.Container is not defined
[main] WARN  o.o.codegen.utils.ModelUtils - #/components/schemas/v1.Container is not defined
[main] WARN  o.o.codegen.utils.ModelUtils - #/components/schemas/v1.Container is not defined
[main] WARN  o.o.codegen.utils.ModelUtils - #/components/schemas/v1.Container is not defined
[main] WARN  o.o.codegen.utils.ModelUtils - #/components/schemas/v1.Container is not defined
[main] WARN  o.o.codegen.utils.ModelUtils - #/components/schemas/v1.Container is not defined
[main] WARN  o.o.codegen.utils.ModelUtils - #/components/schemas/v1.Container is not defined
[main] WARN  o.o.codegen.utils.ModelUtils - #/components/schemas/v1.Container is not defined
[main] WARN  o.o.codegen.utils.ModelUtils - #/components/schemas/v1.LocalObjectReference is not defined
[main] WARN  o.o.codegen.utils.ModelUtils - #/components/schemas/v1.LocalObjectReference is not defined
[main] WARN  o.o.codegen.utils.ModelUtils - #/components/schemas/v1.LocalObjectReference is not defined
[main] WARN  o.o.codegen.utils.ModelUtils - #/components/schemas/v1.LocalObjectReference is not defined
[main] WARN  o.o.codegen.utils.ModelUtils - #/components/schemas/v1.LocalObjectReference is not defined
[main] WARN  o.o.codegen.utils.ModelUtils - #/components/schemas/v1.LocalObjectReference is not defined
[main] WARN  o.o.codegen.utils.ModelUtils - #/components/schemas/v1.LocalObjectReference is not defined
[main] WARN  o.o.codegen.utils.ModelUtils - #/components/schemas/v1.LocalObjectReference is not defined
[main] WARN  o.o.codegen.utils.ModelUtils - #/components/schemas/v1.Toleration is not defined
[main] WARN  o.o.codegen.utils.ModelUtils - #/components/schemas/v1.Toleration is not defined
[main] WARN  o.o.codegen.utils.ModelUtils - #/components/schemas/v1.Toleration is not defined
[main] WARN  o.o.codegen.utils.ModelUtils - #/components/schemas/v1.Toleration is not defined
[main] WARN  o.o.codegen.utils.ModelUtils - #/components/schemas/v1.Toleration is not defined
[main] WARN  o.o.codegen.utils.ModelUtils - #/components/schemas/v1.Toleration is not defined
[main] WARN  o.o.codegen.utils.ModelUtils - #/components/schemas/v1.Toleration is not defined
[main] WARN  o.o.codegen.utils.ModelUtils - #/components/schemas/v1.Toleration is not defined
[main] WARN  o.o.codegen.utils.ModelUtils - #/components/schemas/v1.Volume is not defined
[main] WARN  o.o.codegen.utils.ModelUtils - #/components/schemas/v1.Volume is not defined
[main] WARN  o.o.codegen.utils.ModelUtils - #/components/schemas/v1.Volume is not defined
[main] WARN  o.o.codegen.utils.ModelUtils - #/components/schemas/v1.Volume is not defined
[main] WARN  o.o.codegen.utils.ModelUtils - #/components/schemas/v1.Volume is not defined
[main] WARN  o.o.codegen.utils.ModelUtils - #/components/schemas/v1.Volume is not defined
[main] WARN  o.o.codegen.utils.ModelUtils - #/components/schemas/v1.Volume is not defined
[main] WARN  o.o.codegen.utils.ModelUtils - #/components/schemas/v1.Volume is not defined
[main] WARN  o.o.codegen.utils.ModelUtils - #/components/schemas/v1.Affinity is not defined
[main] WARN  o.o.codegen.utils.ModelUtils - #/components/schemas/v1alpha1.WorkerSpec is not defined
[main] WARN  o.o.codegen.utils.ModelUtils - #/components/schemas/v1.Affinity is not defined
[main] WARN  o.o.codegen.utils.ModelUtils - #/components/schemas/v1.Affinity is not defined
[main] WARN  o.o.codegen.utils.ModelUtils - #/components/schemas/v1.Affinity is not defined
[main] WARN  o.o.codegen.utils.ModelUtils - #/components/schemas/v1.Affinity is not defined
[main] WARN  o.o.codegen.utils.ModelUtils - #/components/schemas/v1.Affinity is not defined
[main] WARN  o.o.codegen.utils.ModelUtils - #/components/schemas/v1.Container is not defined
[main] WARN  o.o.codegen.utils.ModelUtils - #/components/schemas/v1.Container is not defined
[main] WARN  o.o.codegen.utils.ModelUtils - #/components/schemas/v1.Container is not defined
[main] WARN  o.o.codegen.utils.ModelUtils - #/components/schemas/v1.Container is not defined
[main] WARN  o.o.codegen.utils.ModelUtils - #/components/schemas/v1.Container is not defined
[main] WARN  o.o.codegen.utils.ModelUtils - #/components/schemas/v1.Container is not defined
[main] WARN  o.o.codegen.utils.ModelUtils - #/components/schemas/v1.Container is not defined
[main] WARN  o.o.codegen.utils.ModelUtils - #/components/schemas/v1.Container is not defined
[main] WARN  o.o.codegen.utils.ModelUtils - #/components/schemas/v1.LocalObjectReference is not defined
[main] WARN  o.o.codegen.utils.ModelUtils - #/components/schemas/v1.LocalObjectReference is not defined
[main] WARN  o.o.codegen.utils.ModelUtils - #/components/schemas/v1.LocalObjectReference is not defined
[main] WARN  o.o.codegen.utils.ModelUtils - #/components/schemas/v1.LocalObjectReference is not defined
[main] WARN  o.o.codegen.utils.ModelUtils - #/components/schemas/v1.LocalObjectReference is not defined
[main] WARN  o.o.codegen.utils.ModelUtils - #/components/schemas/v1.LocalObjectReference is not defined
[main] WARN  o.o.codegen.utils.ModelUtils - #/components/schemas/v1.LocalObjectReference is not defined
[main] WARN  o.o.codegen.utils.ModelUtils - #/components/schemas/v1.LocalObjectReference is not defined
[main] WARN  o.o.codegen.utils.ModelUtils - #/components/schemas/v1.Toleration is not defined
[main] WARN  o.o.codegen.utils.ModelUtils - #/components/schemas/v1.Toleration is not defined
[main] WARN  o.o.codegen.utils.ModelUtils - #/components/schemas/v1.Toleration is not defined
[main] WARN  o.o.codegen.utils.ModelUtils - #/components/schemas/v1.Toleration is not defined
[main] WARN  o.o.codegen.utils.ModelUtils - #/components/schemas/v1.Toleration is not defined
[main] WARN  o.o.codegen.utils.ModelUtils - #/components/schemas/v1.Toleration is not defined
[main] WARN  o.o.codegen.utils.ModelUtils - #/components/schemas/v1.Toleration is not defined
[main] WARN  o.o.codegen.utils.ModelUtils - #/components/schemas/v1.Toleration is not defined
[main] WARN  o.o.codegen.utils.ModelUtils - #/components/schemas/v1.Volume is not defined
[main] WARN  o.o.codegen.utils.ModelUtils - #/components/schemas/v1.Volume is not defined
[main] WARN  o.o.codegen.utils.ModelUtils - #/components/schemas/v1.Volume is not defined
[main] WARN  o.o.codegen.utils.ModelUtils - #/components/schemas/v1.Volume is not defined
[main] WARN  o.o.codegen.utils.ModelUtils - #/components/schemas/v1.Volume is not defined
[main] WARN  o.o.codegen.utils.ModelUtils - #/components/schemas/v1.Volume is not defined
[main] WARN  o.o.codegen.utils.ModelUtils - #/components/schemas/v1.Volume is not defined
[main] WARN  o.o.codegen.utils.ModelUtils - #/components/schemas/v1.Volume is not defined
[main] WARN  o.o.codegen.utils.ModelUtils - #/components/schemas/v1alpha1.WorkerSpec is not defined
[main] WARN  o.o.codegen.utils.ModelUtils - #/components/schemas/v1alpha1.WorkerSpec is not defined
[main] WARN  o.o.codegen.utils.ModelUtils - #/components/schemas/v1alpha1.WorkerSpec is not defined
[main] WARN  o.o.codegen.utils.ModelUtils - #/components/schemas/v1alpha1.WorkerSpec is not defined
[main] WARN  o.o.codegen.utils.ModelUtils - #/components/schemas/v1alpha1.WorkerSpec is not defined
[main] INFO  o.o.codegen.DefaultGenerator - Model v1alpha1.ServingRuntimeStatus not generated since it's a free-form object
[main] WARN  o.o.codegen.utils.ModelUtils - #/components/schemas/v1.Container is not defined
[main] WARN  o.o.codegen.utils.ModelUtils - #/components/schemas/v1.Container is not defined
[main] WARN  o.o.codegen.utils.ModelUtils - #/components/schemas/v1.Container is not defined
[main] WARN  o.o.codegen.utils.ModelUtils - #/components/schemas/v1.Container is not defined
[main] WARN  o.o.codegen.utils.ModelUtils - #/components/schemas/v1.Container is not defined
[main] WARN  o.o.codegen.utils.ModelUtils - #/components/schemas/v1.Container is not defined
[main] WARN  o.o.codegen.utils.ModelUtils - #/components/schemas/v1.ObjectMeta is not defined
[main] WARN  o.o.codegen.utils.ModelUtils - #/components/schemas/v1alpha1.TrainedModelStatus is not defined
[main] WARN  o.o.codegen.utils.ModelUtils - #/components/schemas/v1.ObjectMeta is not defined
[main] WARN  o.o.codegen.utils.ModelUtils - #/components/schemas/v1.ObjectMeta is not defined
[main] WARN  o.o.codegen.utils.ModelUtils - #/components/schemas/v1.ObjectMeta is not defined
[main] WARN  o.o.codegen.utils.ModelUtils - #/components/schemas/v1.ObjectMeta is not defined
[main] WARN  o.o.codegen.utils.ModelUtils - #/components/schemas/v1.ObjectMeta is not defined
[main] WARN  o.o.codegen.utils.ModelUtils - #/components/schemas/v1alpha1.TrainedModelStatus is not defined
[main] WARN  o.o.codegen.utils.ModelUtils - #/components/schemas/v1alpha1.TrainedModelStatus is not defined
[main] WARN  o.o.codegen.utils.ModelUtils - #/components/schemas/v1alpha1.TrainedModelStatus is not defined
[main] WARN  o.o.codegen.utils.ModelUtils - #/components/schemas/v1alpha1.TrainedModelStatus is not defined
[main] WARN  o.o.codegen.utils.ModelUtils - #/components/schemas/v1alpha1.TrainedModelStatus is not defined
[main] WARN  o.o.codegen.utils.ModelUtils - #/components/schemas/v1.ListMeta is not defined
[main] WARN  o.o.codegen.utils.ModelUtils - #/components/schemas/v1.ListMeta is not defined
[main] WARN  o.o.codegen.utils.ModelUtils - #/components/schemas/v1.ListMeta is not defined
[main] WARN  o.o.codegen.utils.ModelUtils - #/components/schemas/v1.ListMeta is not defined
[main] WARN  o.o.codegen.utils.ModelUtils - #/components/schemas/v1.ListMeta is not defined
[main] WARN  o.o.codegen.utils.ModelUtils - #/components/schemas/v1.ListMeta is not defined
[main] WARN  o.o.codegen.utils.ModelUtils - #/components/schemas/v1.Lifecycle is not defined
[main] WARN  o.o.codegen.utils.ModelUtils - #/components/schemas/v1.Probe is not defined
[main] WARN  o.o.codegen.utils.ModelUtils - #/components/schemas/v1.Probe is not defined
[main] WARN  o.o.codegen.utils.ModelUtils - #/components/schemas/v1.ResourceRequirements is not defined
[main] WARN  o.o.codegen.utils.ModelUtils - #/components/schemas/v1.SecurityContext is not defined
[main] WARN  o.o.codegen.utils.ModelUtils - #/components/schemas/v1.Probe is not defined
[main] WARN  o.o.codegen.utils.ModelUtils - #/components/schemas/v1.EnvVar is not defined
[main] WARN  o.o.codegen.utils.ModelUtils - #/components/schemas/v1.EnvVar is not defined
[main] WARN  o.o.codegen.utils.ModelUtils - #/components/schemas/v1.EnvVar is not defined
[main] WARN  o.o.codegen.utils.ModelUtils - #/components/schemas/v1.EnvVar is not defined
[main] WARN  o.o.codegen.utils.ModelUtils - #/components/schemas/v1.EnvVar is not defined
[main] WARN  o.o.codegen.utils.ModelUtils - #/components/schemas/v1.EnvVar is not defined
[main] WARN  o.o.codegen.utils.ModelUtils - #/components/schemas/v1.EnvVar is not defined
[main] WARN  o.o.codegen.utils.ModelUtils - #/components/schemas/v1.EnvVar is not defined
[main] WARN  o.o.codegen.utils.ModelUtils - #/components/schemas/v1.EnvFromSource is not defined
[main] WARN  o.o.codegen.utils.ModelUtils - #/components/schemas/v1.EnvFromSource is not defined
[main] WARN  o.o.codegen.utils.ModelUtils - #/components/schemas/v1.EnvFromSource is not defined
[main] WARN  o.o.codegen.utils.ModelUtils - #/components/schemas/v1.EnvFromSource is not defined
[main] WARN  o.o.codegen.utils.ModelUtils - #/components/schemas/v1.EnvFromSource is not defined
[main] WARN  o.o.codegen.utils.ModelUtils - #/components/schemas/v1.EnvFromSource is not defined
[main] WARN  o.o.codegen.utils.ModelUtils - #/components/schemas/v1.EnvFromSource is not defined
[main] WARN  o.o.codegen.utils.ModelUtils - #/components/schemas/v1.EnvFromSource is not defined
[main] WARN  o.o.codegen.utils.ModelUtils - #/components/schemas/v1.Lifecycle is not defined
[main] WARN  o.o.codegen.utils.ModelUtils - #/components/schemas/v1.Lifecycle is not defined
[main] WARN  o.o.codegen.utils.ModelUtils - #/components/schemas/v1.Lifecycle is not defined
[main] WARN  o.o.codegen.utils.ModelUtils - #/components/schemas/v1.Lifecycle is not defined
[main] WARN  o.o.codegen.utils.ModelUtils - #/components/schemas/v1.Lifecycle is not defined
[main] WARN  o.o.codegen.utils.ModelUtils - #/components/schemas/v1.Probe is not defined
[main] WARN  o.o.codegen.utils.ModelUtils - #/components/schemas/v1.Probe is not defined
[main] WARN  o.o.codegen.utils.ModelUtils - #/components/schemas/v1.Probe is not defined
[main] WARN  o.o.codegen.utils.ModelUtils - #/components/schemas/v1.Probe is not defined
[main] WARN  o.o.codegen.utils.ModelUtils - #/components/schemas/v1.Probe is not defined
[main] WARN  o.o.codegen.utils.ModelUtils - #/components/schemas/v1.ContainerPort is not defined
[main] WARN  o.o.codegen.utils.ModelUtils - #/components/schemas/v1.ContainerPort is not defined
[main] WARN  o.o.codegen.utils.ModelUtils - #/components/schemas/v1.ContainerPort is not defined
[main] WARN  o.o.codegen.utils.ModelUtils - #/components/schemas/v1.ContainerPort is not defined
[main] WARN  o.o.codegen.utils.ModelUtils - #/components/schemas/v1.ContainerPort is not defined
[main] WARN  o.o.codegen.utils.ModelUtils - #/components/schemas/v1.ContainerPort is not defined
[main] WARN  o.o.codegen.utils.ModelUtils - #/components/schemas/v1.ContainerPort is not defined
[main] WARN  o.o.codegen.utils.ModelUtils - #/components/schemas/v1.ContainerPort is not defined
[main] WARN  o.o.codegen.utils.ModelUtils - #/components/schemas/v1.Probe is not defined
[main] WARN  o.o.codegen.utils.ModelUtils - #/components/schemas/v1.Probe is not defined
[main] WARN  o.o.codegen.utils.ModelUtils - #/components/schemas/v1.Probe is not defined
[main] WARN  o.o.codegen.utils.ModelUtils - #/components/schemas/v1.Probe is not defined
[main] WARN  o.o.codegen.utils.ModelUtils - #/components/schemas/v1.Probe is not defined
[main] WARN  o.o.codegen.utils.ModelUtils - #/components/schemas/v1.ContainerResizePolicy is not defined
[main] WARN  o.o.codegen.utils.ModelUtils - #/components/schemas/v1.ContainerResizePolicy is not defined
[main] WARN  o.o.codegen.utils.ModelUtils - #/components/schemas/v1.ContainerResizePolicy is not defined
[main] WARN  o.o.codegen.utils.ModelUtils - #/components/schemas/v1.ContainerResizePolicy is not defined
[main] WARN  o.o.codegen.utils.ModelUtils - #/components/schemas/v1.ContainerResizePolicy is not defined
[main] WARN  o.o.codegen.utils.ModelUtils - #/components/schemas/v1.ContainerResizePolicy is not defined
[main] WARN  o.o.codegen.utils.ModelUtils - #/components/schemas/v1.ContainerResizePolicy is not defined
[main] WARN  o.o.codegen.utils.ModelUtils - #/components/schemas/v1.ContainerResizePolicy is not defined
[main] WARN  o.o.codegen.utils.ModelUtils - #/components/schemas/v1.ResourceRequirements is not defined
[main] WARN  o.o.codegen.utils.ModelUtils - #/components/schemas/v1.ResourceRequirements is not defined
[main] WARN  o.o.codegen.utils.ModelUtils - #/components/schemas/v1.ResourceRequirements is not defined
[main] WARN  o.o.codegen.utils.ModelUtils - #/components/schemas/v1.ResourceRequirements is not defined
[main] WARN  o.o.codegen.utils.ModelUtils - #/components/schemas/v1.ResourceRequirements is not defined
[main] WARN  o.o.codegen.utils.ModelUtils - #/components/schemas/v1.ContainerRestartRule is not defined
[main] WARN  o.o.codegen.utils.ModelUtils - #/components/schemas/v1.ContainerRestartRule is not defined
[main] WARN  o.o.codegen.utils.ModelUtils - #/components/schemas/v1.ContainerRestartRule is not defined
[main] WARN  o.o.codegen.utils.ModelUtils - #/components/schemas/v1.ContainerRestartRule is not defined
[main] WARN  o.o.codegen.utils.ModelUtils - #/components/schemas/v1.ContainerRestartRule is not defined
[main] WARN  o.o.codegen.utils.ModelUtils - #/components/schemas/v1.ContainerRestartRule is not defined
[main] WARN  o.o.codegen.utils.ModelUtils - #/components/schemas/v1.ContainerRestartRule is not defined
[main] WARN  o.o.codegen.utils.ModelUtils - #/components/schemas/v1.ContainerRestartRule is not defined
[main] WARN  o.o.codegen.utils.ModelUtils - #/components/schemas/v1.SecurityContext is not defined
[main] WARN  o.o.codegen.utils.ModelUtils - #/components/schemas/v1.SecurityContext is not defined
[main] WARN  o.o.codegen.utils.ModelUtils - #/components/schemas/v1.SecurityContext is not defined
[main] WARN  o.o.codegen.utils.ModelUtils - #/components/schemas/v1.SecurityContext is not defined
[main] WARN  o.o.codegen.utils.ModelUtils - #/components/schemas/v1.SecurityContext is not defined
[main] WARN  o.o.codegen.utils.ModelUtils - #/components/schemas/v1.Probe is not defined
[main] WARN  o.o.codegen.utils.ModelUtils - #/components/schemas/v1.Probe is not defined
[main] WARN  o.o.codegen.utils.ModelUtils - #/components/schemas/v1.Probe is not defined
[main] WARN  o.o.codegen.utils.ModelUtils - #/components/schemas/v1.Probe is not defined
[main] WARN  o.o.codegen.utils.ModelUtils - #/components/schemas/v1.Probe is not defined
[main] WARN  o.o.codegen.utils.ModelUtils - #/components/schemas/v1.VolumeDevice is not defined
[main] WARN  o.o.codegen.utils.ModelUtils - #/components/schemas/v1.VolumeDevice is not defined
[main] WARN  o.o.codegen.utils.ModelUtils - #/components/schemas/v1.VolumeDevice is not defined
[main] WARN  o.o.codegen.utils.ModelUtils - #/components/schemas/v1.VolumeDevice is not defined
[main] WARN  o.o.codegen.utils.ModelUtils - #/components/schemas/v1.VolumeDevice is not defined
[main] WARN  o.o.codegen.utils.ModelUtils - #/components/schemas/v1.VolumeDevice is not defined
[main] WARN  o.o.codegen.utils.ModelUtils - #/components/schemas/v1.VolumeDevice is not defined
[main] WARN  o.o.codegen.utils.ModelUtils - #/components/schemas/v1.VolumeDevice is not defined
[main] WARN  o.o.codegen.utils.ModelUtils - #/components/schemas/v1.VolumeMount is not defined
[main] WARN  o.o.codegen.utils.ModelUtils - #/components/schemas/v1.VolumeMount is not defined
[main] WARN  o.o.codegen.utils.ModelUtils - #/components/schemas/v1.VolumeMount is not defined
[main] WARN  o.o.codegen.utils.ModelUtils - #/components/schemas/v1.VolumeMount is not defined
[main] WARN  o.o.codegen.utils.ModelUtils - #/components/schemas/v1.VolumeMount is not defined
[main] WARN  o.o.codegen.utils.ModelUtils - #/components/schemas/v1.VolumeMount is not defined
[main] WARN  o.o.codegen.utils.ModelUtils - #/components/schemas/v1.VolumeMount is not defined
[main] WARN  o.o.codegen.utils.ModelUtils - #/components/schemas/v1.VolumeMount is not defined
[main] WARN  o.o.codegen.utils.ModelUtils - #/components/schemas/k8s.io.api.autoscaling.v2.HorizontalPodAutoscalerBehavior is not defined
[main] WARN  o.o.codegen.utils.ModelUtils - #/components/schemas/k8s.io.api.autoscaling.v2.HorizontalPodAutoscalerBehavior is not defined
[main] WARN  o.o.codegen.utils.ModelUtils - #/components/schemas/k8s.io.api.autoscaling.v2.HorizontalPodAutoscalerBehavior is not defined
[main] WARN  o.o.codegen.utils.ModelUtils - #/components/schemas/k8s.io.api.autoscaling.v2.HorizontalPodAutoscalerBehavior is not defined
[main] WARN  o.o.codegen.utils.ModelUtils - #/components/schemas/k8s.io.api.autoscaling.v2.HorizontalPodAutoscalerBehavior is not defined
[main] WARN  o.o.codegen.utils.ModelUtils - #/components/schemas/k8s.io.api.autoscaling.v2.HorizontalPodAutoscalerBehavior is not defined
[main] WARN  o.o.codegen.utils.ModelUtils - #/components/schemas/k8s.io.api.apps.v1.DeploymentStrategy is not defined
[main] WARN  o.o.codegen.utils.ModelUtils - #/components/schemas/k8s.io.api.apps.v1.DeploymentStrategy is not defined
[main] WARN  o.o.codegen.utils.ModelUtils - #/components/schemas/k8s.io.api.apps.v1.DeploymentStrategy is not defined
[main] WARN  o.o.codegen.utils.ModelUtils - #/components/schemas/k8s.io.api.apps.v1.DeploymentStrategy is not defined
[main] WARN  o.o.codegen.utils.ModelUtils - #/components/schemas/k8s.io.api.apps.v1.DeploymentStrategy is not defined
[main] WARN  o.o.codegen.utils.ModelUtils - #/components/schemas/k8s.io.api.apps.v1.DeploymentStrategy is not defined
[main] WARN  o.o.codegen.utils.ModelUtils - #/components/schemas/knative.Addressable is not defined
[main] WARN  o.o.codegen.utils.ModelUtils - #/components/schemas/knative.URL is not defined
[main] WARN  o.o.codegen.utils.ModelUtils - #/components/schemas/knative.URL is not defined
[main] WARN  o.o.codegen.utils.ModelUtils - #/components/schemas/knative.URL is not defined
[main] WARN  o.o.codegen.utils.ModelUtils - #/components/schemas/knative.Addressable is not defined
[main] WARN  o.o.codegen.utils.ModelUtils - #/components/schemas/knative.Addressable is not defined
[main] WARN  o.o.codegen.utils.ModelUtils - #/components/schemas/knative.Addressable is not defined
[main] WARN  o.o.codegen.utils.ModelUtils - #/components/schemas/knative.Addressable is not defined
[main] WARN  o.o.codegen.utils.ModelUtils - #/components/schemas/knative.Addressable is not defined
[main] WARN  o.o.codegen.utils.ModelUtils - #/components/schemas/knative.URL is not defined
[main] WARN  o.o.codegen.utils.ModelUtils - #/components/schemas/knative.URL is not defined
[main] WARN  o.o.codegen.utils.ModelUtils - #/components/schemas/knative.URL is not defined
[main] WARN  o.o.codegen.utils.ModelUtils - #/components/schemas/knative.URL is not defined
[main] WARN  o.o.codegen.utils.ModelUtils - #/components/schemas/knative.URL is not defined
[main] WARN  o.o.codegen.utils.ModelUtils - #/components/schemas/knative.URL is not defined
[main] WARN  o.o.codegen.utils.ModelUtils - #/components/schemas/knative.URL is not defined
[main] WARN  o.o.codegen.utils.ModelUtils - #/components/schemas/knative.URL is not defined
[main] WARN  o.o.codegen.utils.ModelUtils - #/components/schemas/knative.URL is not defined
[main] WARN  o.o.codegen.utils.ModelUtils - #/components/schemas/knative.URL is not defined
[main] WARN  o.o.codegen.utils.ModelUtils - #/components/schemas/knative.dev.serving.pkg.apis.serving.v1.TrafficTarget is not defined
[main] WARN  o.o.codegen.utils.ModelUtils - #/components/schemas/knative.dev.serving.pkg.apis.serving.v1.TrafficTarget is not defined
[main] WARN  o.o.codegen.utils.ModelUtils - #/components/schemas/knative.dev.serving.pkg.apis.serving.v1.TrafficTarget is not defined
[main] WARN  o.o.codegen.utils.ModelUtils - #/components/schemas/knative.dev.serving.pkg.apis.serving.v1.TrafficTarget is not defined
[main] WARN  o.o.codegen.utils.ModelUtils - #/components/schemas/knative.dev.serving.pkg.apis.serving.v1.TrafficTarget is not defined
[main] WARN  o.o.codegen.utils.ModelUtils - #/components/schemas/knative.dev.serving.pkg.apis.serving.v1.TrafficTarget is not defined
[main] WARN  o.o.codegen.utils.ModelUtils - #/components/schemas/knative.dev.serving.pkg.apis.serving.v1.TrafficTarget is not defined
[main] WARN  o.o.codegen.utils.ModelUtils - #/components/schemas/knative.dev.serving.pkg.apis.serving.v1.TrafficTarget is not defined
[main] WARN  o.o.codegen.utils.ModelUtils - #/components/schemas/knative.URL is not defined
[main] WARN  o.o.codegen.utils.ModelUtils - #/components/schemas/knative.URL is not defined
[main] WARN  o.o.codegen.utils.ModelUtils - #/components/schemas/knative.URL is not defined
[main] WARN  o.o.codegen.utils.ModelUtils - #/components/schemas/knative.URL is not defined
[main] WARN  o.o.codegen.utils.ModelUtils - #/components/schemas/knative.URL is not defined
[main] WARN  o.o.codegen.utils.ModelUtils - #/components/schemas/v1.Affinity is not defined
[main] WARN  o.o.codegen.utils.ModelUtils - #/components/schemas/v1.PodDNSConfig is not defined
[main] WARN  o.o.codegen.utils.ModelUtils - #/components/schemas/v1.PodOS is not defined
[main] WARN  o.o.codegen.utils.ModelUtils - #/components/schemas/v1.ResourceRequirements is not defined
[main] WARN  o.o.codegen.utils.ModelUtils - #/components/schemas/v1.PodSecurityContext is not defined
[main] WARN  o.o.codegen.utils.ModelUtils - #/components/schemas/v1.Affinity is not defined
[main] WARN  o.o.codegen.utils.ModelUtils - #/components/schemas/v1.Affinity is not defined
[main] WARN  o.o.codegen.utils.ModelUtils - #/components/schemas/v1.Affinity is not defined
[main] WARN  o.o.codegen.utils.ModelUtils - #/components/schemas/v1.Affinity is not defined
[main] WARN  o.o.codegen.utils.ModelUtils - #/components/schemas/v1.Affinity is not defined
[main] WARN  o.o.codegen.utils.ModelUtils - #/components/schemas/v1.Container is not defined
[main] WARN  o.o.codegen.utils.ModelUtils - #/components/schemas/v1.Container is not defined
[main] WARN  o.o.codegen.utils.ModelUtils - #/components/schemas/v1.Container is not defined
[main] WARN  o.o.codegen.utils.ModelUtils - #/components/schemas/v1.Container is not defined
[main] WARN  o.o.codegen.utils.ModelUtils - #/components/schemas/v1.Container is not defined
[main] WARN  o.o.codegen.utils.ModelUtils - #/components/schemas/v1.Container is not defined
[main] WARN  o.o.codegen.utils.ModelUtils - #/components/schemas/v1.Container is not defined
[main] WARN  o.o.codegen.utils.ModelUtils - #/components/schemas/v1.Container is not defined
[main] WARN  o.o.codegen.utils.ModelUtils - #/components/schemas/v1.PodDNSConfig is not defined
[main] WARN  o.o.codegen.utils.ModelUtils - #/components/schemas/v1.PodDNSConfig is not defined
[main] WARN  o.o.codegen.utils.ModelUtils - #/components/schemas/v1.PodDNSConfig is not defined
[main] WARN  o.o.codegen.utils.ModelUtils - #/components/schemas/v1.PodDNSConfig is not defined
[main] WARN  o.o.codegen.utils.ModelUtils - #/components/schemas/v1.PodDNSConfig is not defined
[main] WARN  o.o.codegen.utils.ModelUtils - #/components/schemas/v1.EphemeralContainer is not defined
[main] WARN  o.o.codegen.utils.ModelUtils - #/components/schemas/v1.EphemeralContainer is not defined
[main] WARN  o.o.codegen.utils.ModelUtils - #/components/schemas/v1.EphemeralContainer is not defined
[main] WARN  o.o.codegen.utils.ModelUtils - #/components/schemas/v1.EphemeralContainer is not defined
[main] WARN  o.o.codegen.utils.ModelUtils - #/components/schemas/v1.EphemeralContainer is not defined
[main] WARN  o.o.codegen.utils.ModelUtils - #/components/schemas/v1.EphemeralContainer is not defined
[main] WARN  o.o.codegen.utils.ModelUtils - #/components/schemas/v1.EphemeralContainer is not defined
[main] WARN  o.o.codegen.utils.ModelUtils - #/components/schemas/v1.EphemeralContainer is not defined
[main] WARN  o.o.codegen.utils.ModelUtils - #/components/schemas/v1.HostAlias is not defined
[main] WARN  o.o.codegen.utils.ModelUtils - #/components/schemas/v1.HostAlias is not defined
[main] WARN  o.o.codegen.utils.ModelUtils - #/components/schemas/v1.HostAlias is not defined
[main] WARN  o.o.codegen.utils.ModelUtils - #/components/schemas/v1.HostAlias is not defined
[main] WARN  o.o.codegen.utils.ModelUtils - #/components/schemas/v1.HostAlias is not defined
[main] WARN  o.o.codegen.utils.ModelUtils - #/components/schemas/v1.HostAlias is not defined
[main] WARN  o.o.codegen.utils.ModelUtils - #/components/schemas/v1.HostAlias is not defined
[main] WARN  o.o.codegen.utils.ModelUtils - #/components/schemas/v1.HostAlias is not defined
[main] WARN  o.o.codegen.utils.ModelUtils - #/components/schemas/v1.LocalObjectReference is not defined
[main] WARN  o.o.codegen.utils.ModelUtils - #/components/schemas/v1.LocalObjectReference is not defined
[main] WARN  o.o.codegen.utils.ModelUtils - #/components/schemas/v1.LocalObjectReference is not defined
[main] WARN  o.o.codegen.utils.ModelUtils - #/components/schemas/v1.LocalObjectReference is not defined
[main] WARN  o.o.codegen.utils.ModelUtils - #/components/schemas/v1.LocalObjectReference is not defined
[main] WARN  o.o.codegen.utils.ModelUtils - #/components/schemas/v1.LocalObjectReference is not defined
[main] WARN  o.o.codegen.utils.ModelUtils - #/components/schemas/v1.LocalObjectReference is not defined
[main] WARN  o.o.codegen.utils.ModelUtils - #/components/schemas/v1.LocalObjectReference is not defined
[main] WARN  o.o.codegen.utils.ModelUtils - #/components/schemas/v1.Container is not defined
[main] WARN  o.o.codegen.utils.ModelUtils - #/components/schemas/v1.Container is not defined
[main] WARN  o.o.codegen.utils.ModelUtils - #/components/schemas/v1.Container is not defined
[main] WARN  o.o.codegen.utils.ModelUtils - #/components/schemas/v1.Container is not defined
[main] WARN  o.o.codegen.utils.ModelUtils - #/components/schemas/v1.Container is not defined
[main] WARN  o.o.codegen.utils.ModelUtils - #/components/schemas/v1.Container is not defined
[main] WARN  o.o.codegen.utils.ModelUtils - #/components/schemas/v1.Container is not defined
[main] WARN  o.o.codegen.utils.ModelUtils - #/components/schemas/v1.Container is not defined
[main] WARN  o.o.codegen.utils.ModelUtils - #/components/schemas/v1.PodOS is not defined
[main] WARN  o.o.codegen.utils.ModelUtils - #/components/schemas/v1.PodOS is not defined
[main] WARN  o.o.codegen.utils.ModelUtils - #/components/schemas/v1.PodOS is not defined
[main] WARN  o.o.codegen.utils.ModelUtils - #/components/schemas/v1.PodOS is not defined
[main] WARN  o.o.codegen.utils.ModelUtils - #/components/schemas/v1.PodOS is not defined
[main] WARN  o.o.codegen.utils.ModelUtils - #/components/schemas/resource.Quantity is not defined
[main] WARN  o.o.codegen.utils.ModelUtils - #/components/schemas/resource.Quantity is not defined
[main] WARN  o.o.codegen.utils.ModelUtils - #/components/schemas/resource.Quantity is not defined
[main] WARN  o.o.codegen.utils.ModelUtils - #/components/schemas/resource.Quantity is not defined
[main] WARN  o.o.codegen.utils.ModelUtils - #/components/schemas/resource.Quantity is not defined
[main] WARN  o.o.codegen.utils.ModelUtils - #/components/schemas/resource.Quantity is not defined
[main] WARN  o.o.codegen.utils.ModelUtils - #/components/schemas/resource.Quantity is not defined
[main] WARN  o.o.codegen.utils.ModelUtils - #/components/schemas/v1.PodReadinessGate is not defined
[main] WARN  o.o.codegen.utils.ModelUtils - #/components/schemas/v1.PodReadinessGate is not defined
[main] WARN  o.o.codegen.utils.ModelUtils - #/components/schemas/v1.PodReadinessGate is not defined
[main] WARN  o.o.codegen.utils.ModelUtils - #/components/schemas/v1.PodReadinessGate is not defined
[main] WARN  o.o.codegen.utils.ModelUtils - #/components/schemas/v1.PodReadinessGate is not defined
[main] WARN  o.o.codegen.utils.ModelUtils - #/components/schemas/v1.PodReadinessGate is not defined
[main] WARN  o.o.codegen.utils.ModelUtils - #/components/schemas/v1.PodReadinessGate is not defined
[main] WARN  o.o.codegen.utils.ModelUtils - #/components/schemas/v1.PodReadinessGate is not defined
[main] WARN  o.o.codegen.utils.ModelUtils - #/components/schemas/v1.PodResourceClaim is not defined
[main] WARN  o.o.codegen.utils.ModelUtils - #/components/schemas/v1.PodResourceClaim is not defined
[main] WARN  o.o.codegen.utils.ModelUtils - #/components/schemas/v1.PodResourceClaim is not defined
[main] WARN  o.o.codegen.utils.ModelUtils - #/components/schemas/v1.PodResourceClaim is not defined
[main] WARN  o.o.codegen.utils.ModelUtils - #/components/schemas/v1.PodResourceClaim is not defined
[main] WARN  o.o.codegen.utils.ModelUtils - #/components/schemas/v1.PodResourceClaim is not defined
[main] WARN  o.o.codegen.utils.ModelUtils - #/components/schemas/v1.PodResourceClaim is not defined
[main] WARN  o.o.codegen.utils.ModelUtils - #/components/schemas/v1.PodResourceClaim is not defined
[main] WARN  o.o.codegen.utils.ModelUtils - #/components/schemas/v1.ResourceRequirements is not defined
[main] WARN  o.o.codegen.utils.ModelUtils - #/components/schemas/v1.ResourceRequirements is not defined
[main] WARN  o.o.codegen.utils.ModelUtils - #/components/schemas/v1.ResourceRequirements is not defined
[main] WARN  o.o.codegen.utils.ModelUtils - #/components/schemas/v1.ResourceRequirements is not defined
[main] WARN  o.o.codegen.utils.ModelUtils - #/components/schemas/v1.ResourceRequirements is not defined
[main] WARN  o.o.codegen.utils.ModelUtils - #/components/schemas/v1.PodSchedulingGate is not defined
[main] WARN  o.o.codegen.utils.ModelUtils - #/components/schemas/v1.PodSchedulingGate is not defined
[main] WARN  o.o.codegen.utils.ModelUtils - #/components/schemas/v1.PodSchedulingGate is not defined
[main] WARN  o.o.codegen.utils.ModelUtils - #/components/schemas/v1.PodSchedulingGate is not defined
[main] WARN  o.o.codegen.utils.ModelUtils - #/components/schemas/v1.PodSchedulingGate is not defined
[main] WARN  o.o.codegen.utils.ModelUtils - #/components/schemas/v1.PodSchedulingGate is not defined
[main] WARN  o.o.codegen.utils.ModelUtils - #/components/schemas/v1.PodSchedulingGate is not defined
[main] WARN  o.o.codegen.utils.ModelUtils - #/components/schemas/v1.PodSchedulingGate is not defined
[main] WARN  o.o.codegen.utils.ModelUtils - #/components/schemas/v1.PodSecurityContext is not defined
[main] WARN  o.o.codegen.utils.ModelUtils - #/components/schemas/v1.PodSecurityContext is not defined
[main] WARN  o.o.codegen.utils.ModelUtils - #/components/schemas/v1.PodSecurityContext is not defined
[main] WARN  o.o.codegen.utils.ModelUtils - #/components/schemas/v1.PodSecurityContext is not defined
[main] WARN  o.o.codegen.utils.ModelUtils - #/components/schemas/v1.PodSecurityContext is not defined
[main] WARN  o.o.codegen.utils.ModelUtils - #/components/schemas/v1.Toleration is not defined
[main] WARN  o.o.codegen.utils.ModelUtils - #/components/schemas/v1.Toleration is not defined
[main] WARN  o.o.codegen.utils.ModelUtils - #/components/schemas/v1.Toleration is not defined
[main] WARN  o.o.codegen.utils.ModelUtils - #/components/schemas/v1.Toleration is not defined
[main] WARN  o.o.codegen.utils.ModelUtils - #/components/schemas/v1.Toleration is not defined
[main] WARN  o.o.codegen.utils.ModelUtils - #/components/schemas/v1.Toleration is not defined
[main] WARN  o.o.codegen.utils.ModelUtils - #/components/schemas/v1.Toleration is not defined
[main] WARN  o.o.codegen.utils.ModelUtils - #/components/schemas/v1.Toleration is not defined
[main] WARN  o.o.codegen.utils.ModelUtils - #/components/schemas/v1.TopologySpreadConstraint is not defined
[main] WARN  o.o.codegen.utils.ModelUtils - #/components/schemas/v1.TopologySpreadConstraint is not defined
[main] WARN  o.o.codegen.utils.ModelUtils - #/components/schemas/v1.TopologySpreadConstraint is not defined
[main] WARN  o.o.codegen.utils.ModelUtils - #/components/schemas/v1.TopologySpreadConstraint is not defined
[main] WARN  o.o.codegen.utils.ModelUtils - #/components/schemas/v1.TopologySpreadConstraint is not defined
[main] WARN  o.o.codegen.utils.ModelUtils - #/components/schemas/v1.TopologySpreadConstraint is not defined
[main] WARN  o.o.codegen.utils.ModelUtils - #/components/schemas/v1.TopologySpreadConstraint is not defined
[main] WARN  o.o.codegen.utils.ModelUtils - #/components/schemas/v1.TopologySpreadConstraint is not defined
[main] WARN  o.o.codegen.utils.ModelUtils - #/components/schemas/v1.Volume is not defined
[main] WARN  o.o.codegen.utils.ModelUtils - #/components/schemas/v1.Volume is not defined
[main] WARN  o.o.codegen.utils.ModelUtils - #/components/schemas/v1.Volume is not defined
[main] WARN  o.o.codegen.utils.ModelUtils - #/components/schemas/v1.Volume is not defined
[main] WARN  o.o.codegen.utils.ModelUtils - #/components/schemas/v1.Volume is not defined
[main] WARN  o.o.codegen.utils.ModelUtils - #/components/schemas/v1.Volume is not defined
[main] WARN  o.o.codegen.utils.ModelUtils - #/components/schemas/v1.Volume is not defined
[main] WARN  o.o.codegen.utils.ModelUtils - #/components/schemas/v1.Volume is not defined
[main] WARN  o.o.codegen.utils.ModelUtils - #/components/schemas/v1.Affinity is not defined
[main] WARN  o.o.codegen.utils.ModelUtils - #/components/schemas/v1.PodDNSConfig is not defined
[main] WARN  o.o.codegen.utils.ModelUtils - #/components/schemas/v1.PodOS is not defined
[main] WARN  o.o.codegen.utils.ModelUtils - #/components/schemas/v1.ResourceRequirements is not defined
[main] WARN  o.o.codegen.utils.ModelUtils - #/components/schemas/v1.PodSecurityContext is not defined
[main] WARN  o.o.codegen.utils.ModelUtils - #/components/schemas/v1.Affinity is not defined
[main] WARN  o.o.codegen.utils.ModelUtils - #/components/schemas/v1.Affinity is not defined
[main] WARN  o.o.codegen.utils.ModelUtils - #/components/schemas/v1.Affinity is not defined
[main] WARN  o.o.codegen.utils.ModelUtils - #/components/schemas/v1.Affinity is not defined
[main] WARN  o.o.codegen.utils.ModelUtils - #/components/schemas/v1.Affinity is not defined
[main] WARN  o.o.codegen.utils.ModelUtils - #/components/schemas/v1.Container is not defined
[main] WARN  o.o.codegen.utils.ModelUtils - #/components/schemas/v1.Container is not defined
[main] WARN  o.o.codegen.utils.ModelUtils - #/components/schemas/v1.Container is not defined
[main] WARN  o.o.codegen.utils.ModelUtils - #/components/schemas/v1.Container is not defined
[main] WARN  o.o.codegen.utils.ModelUtils - #/components/schemas/v1.Container is not defined
[main] WARN  o.o.codegen.utils.ModelUtils - #/components/schemas/v1.Container is not defined
[main] WARN  o.o.codegen.utils.ModelUtils - #/components/schemas/v1.Container is not defined
[main] WARN  o.o.codegen.utils.ModelUtils - #/components/schemas/v1.Container is not defined
[main] WARN  o.o.codegen.utils.ModelUtils - #/components/schemas/v1.PodDNSConfig is not defined
[main] WARN  o.o.codegen.utils.ModelUtils - #/components/schemas/v1.PodDNSConfig is not defined
[main] WARN  o.o.codegen.utils.ModelUtils - #/components/schemas/v1.PodDNSConfig is not defined
[main] WARN  o.o.codegen.utils.ModelUtils - #/components/schemas/v1.PodDNSConfig is not defined
[main] WARN  o.o.codegen.utils.ModelUtils - #/components/schemas/v1.PodDNSConfig is not defined
[main] WARN  o.o.codegen.utils.ModelUtils - #/components/schemas/v1.EphemeralContainer is not defined
[main] WARN  o.o.codegen.utils.ModelUtils - #/components/schemas/v1.EphemeralContainer is not defined
[main] WARN  o.o.codegen.utils.ModelUtils - #/components/schemas/v1.EphemeralContainer is not defined
[main] WARN  o.o.codegen.utils.ModelUtils - #/components/schemas/v1.EphemeralContainer is not defined
[main] WARN  o.o.codegen.utils.ModelUtils - #/components/schemas/v1.EphemeralContainer is not defined
[main] WARN  o.o.codegen.utils.ModelUtils - #/components/schemas/v1.EphemeralContainer is not defined
[main] WARN  o.o.codegen.utils.ModelUtils - #/components/schemas/v1.EphemeralContainer is not defined
[main] WARN  o.o.codegen.utils.ModelUtils - #/components/schemas/v1.EphemeralContainer is not defined
[main] WARN  o.o.codegen.utils.ModelUtils - #/components/schemas/v1.HostAlias is not defined
[main] WARN  o.o.codegen.utils.ModelUtils - #/components/schemas/v1.HostAlias is not defined
[main] WARN  o.o.codegen.utils.ModelUtils - #/components/schemas/v1.HostAlias is not defined
[main] WARN  o.o.codegen.utils.ModelUtils - #/components/schemas/v1.HostAlias is not defined
[main] WARN  o.o.codegen.utils.ModelUtils - #/components/schemas/v1.HostAlias is not defined
[main] WARN  o.o.codegen.utils.ModelUtils - #/components/schemas/v1.HostAlias is not defined
[main] WARN  o.o.codegen.utils.ModelUtils - #/components/schemas/v1.HostAlias is not defined
[main] WARN  o.o.codegen.utils.ModelUtils - #/components/schemas/v1.HostAlias is not defined
[main] WARN  o.o.codegen.utils.ModelUtils - #/components/schemas/v1.LocalObjectReference is not defined
[main] WARN  o.o.codegen.utils.ModelUtils - #/components/schemas/v1.LocalObjectReference is not defined
[main] WARN  o.o.codegen.utils.ModelUtils - #/components/schemas/v1.LocalObjectReference is not defined
[main] WARN  o.o.codegen.utils.ModelUtils - #/components/schemas/v1.LocalObjectReference is not defined
[main] WARN  o.o.codegen.utils.ModelUtils - #/components/schemas/v1.LocalObjectReference is not defined
[main] WARN  o.o.codegen.utils.ModelUtils - #/components/schemas/v1.LocalObjectReference is not defined
[main] WARN  o.o.codegen.utils.ModelUtils - #/components/schemas/v1.LocalObjectReference is not defined
[main] WARN  o.o.codegen.utils.ModelUtils - #/components/schemas/v1.LocalObjectReference is not defined
[main] WARN  o.o.codegen.utils.ModelUtils - #/components/schemas/v1.Container is not defined
[main] WARN  o.o.codegen.utils.ModelUtils - #/components/schemas/v1.Container is not defined
[main] WARN  o.o.codegen.utils.ModelUtils - #/components/schemas/v1.Container is not defined
[main] WARN  o.o.codegen.utils.ModelUtils - #/components/schemas/v1.Container is not defined
[main] WARN  o.o.codegen.utils.Model…
@openshift-ci-robot
Copy link

openshift-ci-robot commented Feb 25, 2026

@KillianGolds: This pull request references RHOAIENG-50060 which is a valid jira issue.

Warning: The referenced jira issue has an invalid target version for the target branch this PR targets: expected the task to target either version "4.22." or "openshift-4.22.", but it targets "rhoai-3.4" instead.

Details

In response to this:

What this PR does / why we need it:

Adds accelerator-specific LLMInferenceServiceConfig resources for NVIDIA CUDA, AMD ROCm, and IBM Spyre (s390x, x86, ppc64le) under config/overlays/odh/accelerators/, and modifies the base LLMInferenceServiceConfig template to support Spyre without requiring command/args overrides in the accelerator configs.

Changes:

  • Base template (config/llmisvcconfig/config-llm-template.yaml): wraps the vLLM launch in a bash command that conditionally sources /etc/profile.d/ibm-aiu-setup.sh if present (no-op on non-Spyre nodes). Uses $@ forwarding so all args - model name, port, and any user-specified flags — pass through correctly.
  • 5 accelerator configs under config/overlays/odh/accelerators/: NVIDIA CUDA and AMD ROCm override image only; IBM Spyre configs (s390x, x86, ppc64le) override image and set arch-specific env vars required for Spyre startup.
  • No args overrides in any accelerator config - if an accelerator config overrides args, user-specified args on their LLMInferenceService would be silently discarded. This aligns with the fix landing via feat(llmisvc): move vLLM args to command field kserve/kserve#5049.
  • Image injection via kustomize replacements sourcing from params.env through the kserve-parameters ConfigMap.
  • All accelerator configs carry the label opendatahub.io/config-type: accelerator for dashboard filtering.

Which issue(s) this PR fixes:
Fixes # RHOAIENG-50060

Feature/Issue validation/testing:

  • kustomize build config/overlays/odh/ - 5 accelerator LLMInferenceServiceConfig resources rendered with correct images substituted from params.env and opendatahub.io/config-type: accelerator label applied
  • Unit tests: TestMergeSpecs (27 sub-tests), TestReplaceVariables (10 sub-tests) - all pass
  • Integration tests: TestLLMInferenceServiceController (92 specs via envtest) - all pass
  • End-to-end on CUDA node: bash wrapper is a no-op (ibm-aiu-setup.sh absent, vLLM starts as before)
  • End-to-end on Spyre node: ibm-aiu-setup.sh sourced correctly, vLLM starts successfully

Special notes for your reviewer:

The base template change (bash wrapper + conditional ibm-aiu-setup.sh sourcing) will interact with the upcoming PR syncing kserve#5049 which is landing in #1123 - that PR will also modify the base template command. The change here is structurally compatible: both add a bash wrapper with $@ forwarding. Merge conflict resolution will be straightforward - integrate the conditional source line into that version.

IBM Power team has confirmed availability to test on P (ppc64le) and Z (s390x) as per comments on RHOAIENG-50350, will be coordinating for full e2e testing.

Checklist:

  • Have you added unit/e2e tests that prove your fix is effective or that this feature works?
  • Has code been commented, particularly in hard-to-understand areas?
  • Have you made corresponding changes to the documentation?
  • Have you linked the JIRA issue(s) to this PR?

Release note:

Add accelerator-specific LLMInferenceServiceConfigs for NVIDIA CUDA, AMD ROCm, and IBM Spyre (s390x, x86, ppc64le) in the ODH overlay. All accelerator configs are labeled with `opendatahub.io/config-type: accelerator` for dashboard filtering. The base template is updated to conditionally source the IBM AIU setup script, enabling Spyre support without requiring args overrides in accelerator configs.

Summary by CodeRabbit

  • New Features

  • Added support for AMD ROCm and NVIDIA CUDA GPU accelerators for LLM inference.

  • Added IBM Spyre acceleration for x86, s390x, and ppc64le.

  • Added accelerator-specific deployment templates and a unified overlay to simplify selecting accelerator images.

  • Added parameters to manage accelerator container images centrally.

  • Chores

  • Updated service startup to load an optional environment setup before launching the model server while preserving passed arguments.

  • Bumped KEDA dependency version.

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 openshift-eng/jira-lifecycle-plugin repository.

Copy link

@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: 1

♻️ Duplicate comments (1)
hack/setup/quick-install/llmisvc-dependency-install.sh (1)

520-520: Same unused KEDA_VERSION issue as llmisvc-full-install-helm.sh.

No KEDA component is installed by this script, so KEDA_VERSION is dead. This is the same generator-level fix described in the comment on llmisvc-full-install-helm.sh.

🤖 Prompt for AI Agents
Verify each finding against the current code and only fix it if needed.

In `@hack/setup/quick-install/llmisvc-dependency-install.sh` at line 520, Remove
the unused KEDA_VERSION variable from this script: delete the
KEDA_VERSION=2.17.3 declaration in
hack/setup/quick-install/llmisvc-dependency-install.sh (symbol: KEDA_VERSION)
and instead apply the same generator-level fix used for
llmisvc-full-install-helm.sh so the generator no longer emits KEDA_VERSION into
scripts that do not install KEDA; if KEDA is intended to be installed here,
instead add the corresponding installation logic referencing KEDA_VERSION and
ensure the variable is used.
🤖 Prompt for all review comments with AI agents
Verify each finding against the current code and only fix it if needed.

Inline comments:
In `@hack/setup/quick-install/llmisvc-full-install-helm.sh`:
- Line 520: The KEDA_VERSION variable is dead code in
llmisvc-full-install-helm.sh (and also appears in
llmisvc-dependency-install.sh); update the generator to only emit version
variables that are actually used by a script instead of blindly copying all
entries from kserve-deps.env, or remove the unused KEDA_VERSION assignment from
these scripts. Specifically, modify the generator logic that reads
kserve-deps.env so it filters for only the component names referenced by the
target script (or template) before emitting assignments, ensuring KEDA_VERSION
is not output for llmisvc-full-install-helm.sh and
llmisvc-dependency-install.sh; alternatively, delete the KEDA_VERSION line from
those scripts if you prefer the quick fix.

---

Duplicate comments:
In `@hack/setup/quick-install/llmisvc-dependency-install.sh`:
- Line 520: Remove the unused KEDA_VERSION variable from this script: delete the
KEDA_VERSION=2.17.3 declaration in
hack/setup/quick-install/llmisvc-dependency-install.sh (symbol: KEDA_VERSION)
and instead apply the same generator-level fix used for
llmisvc-full-install-helm.sh so the generator no longer emits KEDA_VERSION into
scripts that do not install KEDA; if KEDA is intended to be installed here,
instead add the corresponding installation logic referencing KEDA_VERSION and
ensure the variable is used.

ℹ️ Review info

Configuration used: Organization UI

Review profile: CHILL

Plan: Pro

Cache: Disabled due to data retention organization setting

Knowledge base: Disabled due to data retention organization setting

📥 Commits

Reviewing files that changed from the base of the PR and between c84a07d and cf177dc.

📒 Files selected for processing (10)
  • hack/setup/quick-install/kserve-knative-mode-dependency-install.sh
  • hack/setup/quick-install/kserve-knative-mode-full-install-helm.sh
  • hack/setup/quick-install/kserve-knative-mode-full-install-with-manifests.sh
  • hack/setup/quick-install/kserve-standard-mode-dependency-install.sh
  • hack/setup/quick-install/kserve-standard-mode-full-install-helm.sh
  • hack/setup/quick-install/kserve-standard-mode-full-install-with-manifests.sh
  • hack/setup/quick-install/llmisvc-dependency-install.sh
  • hack/setup/quick-install/llmisvc-full-install-helm.sh
  • hack/setup/quick-install/llmisvc-full-install-with-manifests.sh
  • kserve-deps.env
✅ Files skipped from review due to trivial changes (1)
  • hack/setup/quick-install/kserve-standard-mode-dependency-install.sh
🚧 Files skipped from review as they are similar to previous changes (1)
  • hack/setup/quick-install/kserve-knative-mode-full-install-with-manifests.sh

KSERVE_VERSION=v0.16.0
ISTIO_VERSION=1.27.1
KEDA_VERSION=2.17.2
KEDA_VERSION=2.17.3
Copy link

Choose a reason for hiding this comment

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

⚠️ Potential issue | 🟡 Minor

🧩 Analysis chain

🏁 Script executed:

rg -n 'KEDA_VERSION' \
  hack/setup/quick-install/llmisvc-full-install-helm.sh \
  hack/setup/quick-install/llmisvc-dependency-install.sh

Repository: opendatahub-io/kserve

Length of output: 221


🏁 Script executed:

# Check for KEDA-related installation functions or steps
rg -n -i 'install.*keda|keda.*install|keda|_keda' \
  hack/setup/quick-install/llmisvc-full-install-helm.sh \
  hack/setup/quick-install/llmisvc-dependency-install.sh | head -20

Repository: opendatahub-io/kserve

Length of output: 599


🏁 Script executed:

# Get line count to understand file size
wc -l hack/setup/quick-install/llmisvc-full-install-helm.sh \
    hack/setup/quick-install/llmisvc-dependency-install.sh

# Search for usage of KEDA_VERSION (excluding the definition line)
rg 'KEDA_VERSION' --no-filename -B 2 -A 2 \
  hack/setup/quick-install/llmisvc-full-install-helm.sh \
  hack/setup/quick-install/llmisvc-dependency-install.sh

Repository: opendatahub-io/kserve

Length of output: 442


🏁 Script executed:

# Search for function definitions related to KEDA or any install functions
rg -n 'install_|^[a-z_]+\(\)' \
  hack/setup/quick-install/llmisvc-full-install-helm.sh \
  hack/setup/quick-install/llmisvc-dependency-install.sh | grep -i keda

# Also check for any invocations of install functions
rg -n 'install_' \
  hack/setup/quick-install/llmisvc-full-install-helm.sh \
  hack/setup/quick-install/llmisvc-dependency-install.sh | grep -v ':#.*install_' | head -20

Repository: opendatahub-io/kserve

Length of output: 1866


🏁 Script executed:

# List all install/uninstall functions defined in both scripts
rg -n '^(un)?install_' \
  hack/setup/quick-install/llmisvc-full-install-helm.sh \
  hack/setup/quick-install/llmisvc-dependency-install.sh

Repository: opendatahub-io/kserve

Length of output: 3342


🏁 Script executed:

# Check the top of the files for any auto-generation markers
head -20 hack/setup/quick-install/llmisvc-full-install-helm.sh \
        hack/setup/quick-install/llmisvc-dependency-install.sh

# Search for generator script
find hack -name "*generat*" -o -name "*template*" | head -20

Repository: opendatahub-io/kserve

Length of output: 2278


🏁 Script executed:

# Find and check the definition files
find hack -name "*.definition" | xargs ls -la

# Check if KEDA appears in any definition files
rg -l 'keda|KEDA' hack/setup/scripts/install-script-generator/ hack/setup/quick-install/ 2>/dev/null

Repository: opendatahub-io/kserve

Length of output: 2832


🏁 Script executed:

# Check the llmisvc definition files
cat hack/setup/quick-install/definitions/llmisvc/llmisvc-dependency-install.definition
cat hack/setup/quick-install/definitions/llmisvc/llmisvc-full-install.definition

# Also check what kserve-deps.env contains
cat hack/kserve-deps.env | grep -i keda

Repository: opendatahub-io/kserve

Length of output: 879


🏁 Script executed:

# Find version definition files
find hack -name "*deps*" -o -name "*version*" | grep -E "\.(env|yaml|json|definition)$" | head -20

# Check the generator to see how it includes versions
cat hack/setup/scripts/install-script-generator/generator.py | head -100

Repository: opendatahub-io/kserve

Length of output: 3734


🏁 Script executed:

# Search for where versions are loaded
rg -n 'KEDA_VERSION|version.*env|\.env' hack/setup/scripts/install-script-generator/ | head -30

# Check for component definition directories
find hack/setup/infra -type d | head -20

Repository: opendatahub-io/kserve

Length of output: 1556


🏁 Script executed:

# Check script_builder.py around line 228
sed -n '220,250p' hack/setup/scripts/install-script-generator/pkg/script_builder.py

# Also find the kserve-deps.env file
find . -name "kserve-deps.env" 2>/dev/null

# Look for it in the repo root
ls -la kserve-deps.env 2>/dev/null || echo "Not found in root"

Repository: opendatahub-io/kserve

Length of output: 1589


🏁 Script executed:

# Check the content of kserve-deps.env
cat kserve-deps.env

# Also check the template to see how KSERVE_DEPS_CONTENT is inserted
sed -n '95,115p' hack/setup/scripts/install-script-generator/templates/generated-script.template

Repository: opendatahub-io/kserve

Length of output: 1577


KEDA_VERSION is unused—remove dead version variable from generator.

This script has no KEDA installation step, yet KEDA_VERSION is defined at line 520. The same issue appears in llmisvc-dependency-install.sh. The generator currently includes all version variables from kserve-deps.env unconditionally; it should emit only versions for components that are actually referenced in each script's definition.

🧰 Tools
🪛 Shellcheck (0.11.0)

[warning] 520-520: KEDA_VERSION appears unused. Verify use (or export if used externally).

(SC2034)

🤖 Prompt for AI Agents
Verify each finding against the current code and only fix it if needed.

In `@hack/setup/quick-install/llmisvc-full-install-helm.sh` at line 520, The
KEDA_VERSION variable is dead code in llmisvc-full-install-helm.sh (and also
appears in llmisvc-dependency-install.sh); update the generator to only emit
version variables that are actually used by a script instead of blindly copying
all entries from kserve-deps.env, or remove the unused KEDA_VERSION assignment
from these scripts. Specifically, modify the generator logic that reads
kserve-deps.env so it filters for only the component names referenced by the
target script (or template) before emitting assignments, ensuring KEDA_VERSION
is not output for llmisvc-full-install-helm.sh and
llmisvc-dependency-install.sh; alternatively, delete the KEDA_VERSION line from
those scripts if you prefer the quick fix.

@openshift-ci
Copy link

openshift-ci bot commented Feb 25, 2026

@KillianGolds: The following tests failed, say /retest to rerun all failed tests or /retest-required to rerun all mandatory failed tests:

Test name Commit Details Required Rerun command
ci/prow/e2e-raw cf177dc link true /test e2e-raw
ci/prow/e2e-graph cf177dc link true /test e2e-graph

Full PR test history. Your PR dashboard.

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. I understand the commands that are listed here.

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

Projects

Status: New/Backlog

Development

Successfully merging this pull request may close these issues.

2 participants