Skip to content

[dashboard] Kubernetes app: clearing instanceType to size a node group by explicit resources silently fails to save #3135

Closed

Description

@myasnikovdaniil

Summary

In the dashboard (console) Kubernetes app form, a user who wants to size a worker node group by explicit resources (cpu/memory) instead of an instanceType cannot do it: clearing the instanceType field and entering cpu/memory makes the Save button silently do nothing — no toast, no navigation, no validation error.

This is the apps/kubernetes analog of #2909 (same class of problem reported for vm-instance).

Steps to reproduce

  1. Open the Kubernetes app create/edit form in the console.
  2. On a worker node group, clear the instanceType field and set resources.cpu / resources.memory.
  3. Click Save → nothing happens (no error surfaced, form not submitted).

Mechanism (console)

The app form is schema-driven (RJSF) over the app's values.schema.json:

  • nodeGroups[].instanceType is required in the schema (and defaulted to u1.medium).
  • packages/system/dashboard/images/console/apps/console/src/components/SchemaForm.tsx sets liveValidate={false}, so validation runs on submit. An empty value for a required field fails validation and onSubmit never fires — the click is a silent no-op with no visible error.
  • …/components/DynamicOptionsWidget.tsx renders the empty choice as <option value="" disabled={required}>, so for the required instanceType field the "-- None --" option is disabled — the field cannot even be emptied through the dropdown.

Net effect: the dashboard offers no way to size a node group purely by resources, and the blocked submit is silent.

Relationship to #3121 and #2909

Suggested fix (one or both)

  1. Surface the failure. A schema-driven form should show validation errors (or focus the offending field) on a blocked submit instead of silently doing nothing. This applies to every app form, not just Kubernetes, and is the higher-value fix.
  2. Allow sizing by resources from the UI. If clearing instanceType is meant to be supported, drop instanceType from the schema required list — DynamicOptionsWidget already enables a selectable "-- None --" when the field is not required — paired with a render-time "at least one sizing source" guard in the chart. With fix(kubernetes): make node group resources optional when instanceType is set #3121's precedence landing, this is optional polish.

Environment

Reproducible on current main console (packages/system/dashboard/images/console). Originally surfaced on the apps/kubernetes node-group form.

Activity

  1. added
    kind/bugCategorizes issue or PR as related to a bug
    area/dashboardIssues or PRs related to the dashboard / UI
    on Jun 29, 2026
  2. added
    triage/acceptedIndicates an issue is ready to be actively worked on
    priority/important-longtermImportant over the long term, but may not be staffed and/or may need multiple releases to complete
    on Jul 1, 2026
  3. hiSandog commented on Jul 3, 2026

    @hiSandog

    Clearing instanceType sounds like a null-vs-empty-string persistence bug. The dashboard should explicitly send a value that means “unset instance type and use explicit resources”, and the backend should store that state distinctly from “no change”. An e2e test that switches from instance type to CPU/memory resources, saves, reloads, and reconciles the node group would cover the user-visible failure.

  4. added a commit that references this issue on Aug 17, 2026
    0dc56b4
  5. added 3 commits that reference this issue on Aug 27, 2026
    87f93e5
    d38bc24
    f18e260
  6. added 2 commits that reference this issue on Oct 7, 2026
    242786f
    9f88cc4
  7. added a commit that references this issue on Oct 11, 2026
    bcde187
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Metadata

Metadata

Assignees

No one assigned

    Labels

    area/dashboardIssues or PRs related to the dashboard / UIkind/bugCategorizes issue or PR as related to a bugpriority/important-longtermImportant over the long term, but may not be staffed and/or may need multiple releases to completetriage/acceptedIndicates an issue is ready to be actively worked on

    Type

    No type

    Projects

    No projects

      Milestone

      No milestone

      Relationships

      None yet

      Development

      No branches or pull requests

      Issue actions