Skip to content

[dashboard] Introduce VNC console - #1627

Merged
Timofei Larkin (lllamnyp) merged 2 commits into
mainfrom
vnc
Nov 18, 2025
Merged

[dashboard] Introduce VNC console#1627
Timofei Larkin (lllamnyp) merged 2 commits into
mainfrom
vnc

Conversation

@kvaps

@kvaps Andrei Kvapil (kvaps) commented Nov 13, 2025

Copy link
Copy Markdown
Member

Signed-off-by: Andrei Kvapil kvapss@gmail.com

What this PR does

Release note

[dashboard] Introduce VNC console

Summary by CodeRabbit

  • New Features

    • Added VNC tab functionality for Virtual Machine and VM Instance resources, enabling direct console access within the dashboard.
  • Chores

    • Updated build dependencies for dashboard components.
    • Enhanced proxy configuration with improved headers and extended timeout settings for better reliability.

@coderabbitai

coderabbitai Bot commented Nov 13, 2025

Copy link
Copy Markdown
Contributor

Caution

Review failed

The pull request is closed.

Walkthrough

This PR adds VNC tab functionality to the dashboard factory for VirtualMachine and VMInstance resources, updates Docker build dependencies to new commits, and enhances nginx proxy configuration with HTTP 1.1 support and additional headers/timeouts for improved websocket and long-connection handling.

Changes

Cohort / File(s) Summary
Dashboard VNC Tab Feature
internal/controller/dashboard/factory.go
Introduces vncTabPrefix() function to map CRD kinds (VirtualMachine, VMInstance) to VNC tab prefixes, and vncTab() to construct a VNC tab with VMVNC component containing cluster, namespace, and VM name references. Conditionally appends VNC tab in ensureFactory() when prefix mapping succeeds.
Build Dependency Updates
packages/system/dashboard/images/openapi-ui/Dockerfile
Updates ARG COMMIT for openapi-k8s-toolkit-builder from 7bd5380c6c4606640dd3bac68bf9dce469470518 to cb2f122caafaa2fd5455750213d9e633017ec555 and ARG COMMIT_REF for builder from 0c3629b2ce8545e81f7ece4d65372a188c802dfc to 3cfbbf2156b6a5e4a1f283a032019530c0c2d37d.
Nginx Proxy Configuration
packages/system/dashboard/templates/nginx-config.yaml
Adds HTTP 1.1 support and proxy headers (Upgrade, Connection, X-Forwarded-Proto, Host) to /k8s location block; sets proxy_read_timeout and proxy_send_timeout to 86400s for long-lived connections.

Sequence Diagram

sequenceDiagram
    participant ensureFactory as ensureFactory()
    participant vncTabPrefix as vncTabPrefix(kind)
    participant vncTab as vncTab(prefix)
    participant tabs as tabs array

    ensureFactory->>vncTabPrefix: check CRD kind
    alt VirtualMachine or VMInstance
        vncTabPrefix-->>ensureFactory: return prefix, true
        ensureFactory->>vncTab: construct VNC tab config
        vncTab-->>ensureFactory: return tab object
        ensureFactory->>tabs: append VNC tab
    else Other kinds
        vncTabPrefix-->>ensureFactory: return "", false
        ensureFactory->>tabs: skip VNC tab
    end
Loading

Estimated code review effort

🎯 2 (Simple) | ⏱️ ~10 minutes

  • Factory.go: Review the new vncTabPrefix() mapping logic and vncTab() structure to ensure correct field references and formatting, particularly the namespace path and VM name construction.
  • Dockerfile: Verify the new commit hashes are valid and intended; check upstream repository to confirm changes.
  • Nginx config: Validate timeout values (86400s) and header additions align with intended websocket/long-connection behavior.

Possibly related PRs

Suggested reviewers

  • nbykov0

Poem

🐇 A VNC tab hops into view,
Websockets whisper through tunnels true,
Headers dance with timeouts long,
Dashboard magic, steady and strong! ✨

Pre-merge checks and finishing touches

❌ Failed checks (1 warning)
Check name Status Explanation Resolution
Docstring Coverage ⚠️ Warning Docstring coverage is 25.00% which is insufficient. The required threshold is 80.00%. You can run @coderabbitai generate docstrings to improve docstring coverage.
✅ 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 '[dashboard] Introduce VNC console' directly relates to the main change: adding VNC tab support to the dashboard factory with conditional display for VirtualMachine and VMInstance kinds.

📜 Recent review details

Configuration used: CodeRabbit UI

Review profile: CHILL

Plan: Pro

📥 Commits

Reviewing files that changed from the base of the PR and between c81b222 and aba4d2c.

📒 Files selected for processing (1)
  • internal/controller/dashboard/factory.go (2 hunks)

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.

Signed-off-by: Andrei Kvapil <kvapss@gmail.com>
@kvaps
Andrei Kvapil (kvaps) marked this pull request as ready for review November 17, 2025 08:46
@dosubot dosubot Bot added size/M This PR changes 30-99 lines, ignoring generated files kind/feature Categorizes issue or PR as related to a new feature labels Nov 17, 2025
@dosubot dosubot Bot added the lgtm This PR has been approved by a maintainer label Nov 18, 2025
Signed-off-by: Timofei Larkin <lllamnyp@gmail.com>
@lllamnyp
Timofei Larkin (lllamnyp) merged commit f2f575b into main Nov 18, 2025
5 of 6 checks passed
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

kind/feature Categorizes issue or PR as related to a new feature lgtm This PR has been approved by a maintainer size/M This PR changes 30-99 lines, ignoring generated files

Projects

None yet

Development

Successfully merging this pull request may close these issues.

2 participants