* feat: improve vnc console
Signed-off-by: Andy Lee <andy.lee@suse.com>
* fix: keep VNC console retries from kicking the active session
Builds on "feat: improve vnc console" (#1147) by Andy Lee.
- Keep retrying with preserveSession after a failed reconnect attempt, so a
displaced console waits for the other session to be released instead of
failing immediately or taking the console back.
- Close the RFB socket when noVNC asks for credentials, so a failed console
does not hold the VNC session.
- Restore Custom Shortcut Keys, which were removed in #1147.
- Add unit tests for the console reconnect behavior.
Related: harvester/harvester#10420
Signed-off-by: Alejandro Bonilla <abonilla@suse.com>
* fix: expose VNC quality and compression settings
- Add 0-9 sliders for the JPEG quality and compression level, which were
already passed to noVNC but could not be changed.
- Mark the connection status as a polite live region so screen readers
announce connection changes.
Related: harvester/harvester#10420
Signed-off-by: Alejandro Bonilla <abonilla@suse.com>
* fix: gate VNC session protection by version and rework the in-use screen
- Add the vncPreserveSession feature flag for Harvester v1.7.0, the first
release whose KubeVirt (1.6.3) honours preserveSession. Without it the
console connects as before, offers no Take Over and does not reconnect on
its own after the session drops, so two open consoles no longer keep
kicking each other out.
- Replace the error page with a short card that says when the console is in
use, and confirm Take Over in a modal instead of window.confirm.
- Keep the overlay text readable on its dark background.
- Show "Connected (view only)", translate the Ctrl+Alt+Del label and remove
unused translation keys.
Signed-off-by: Marcelo Fukumoto <marcelo.fukumoto@suse.com>
* feat: show whether the VNC console has keyboard focus
noVNC hides the canvas focus outline, so nothing showed where typing would go.
Draw a ring around the console while it has focus, show a toolbar hint
("Typing goes to the virtual machine" / "Click the console to type"), focus
the console when it connects and return focus to it after sending keys from
the toolbar.
Signed-off-by: Marcelo Fukumoto <marcelo.fukumoto@suse.com>
* feat: confirm Ctrl+Alt+Del and Soft Reboot in the VNC console
Both buttons can restart the virtual machine with one click: Soft Reboot
always, and Ctrl+Alt+Del on most Linux guests. Ask in a modal first, as the
VM list already does for Soft Reboot, and return focus to the console after.
Signed-off-by: Marcelo Fukumoto <marcelo.fukumoto@suse.com>
* fix: return focus to the VNC console after its confirm modal closes
The modal gave focus back to the toolbar button that opened it, so typing
did not reach the console until it was clicked again.
Signed-off-by: Marcelo Fukumoto <marcelo.fukumoto@suse.com>
* refactor: drop the VNC keyboard focus hint from the toolbar
The ring around the console already shows when it has keyboard focus.
Signed-off-by: Marcelo Fukumoto <marcelo.fukumoto@suse.com>
---------
Signed-off-by: Andy Lee <andy.lee@suse.com>
Signed-off-by: Alejandro Bonilla <abonilla@suse.com>
Signed-off-by: Marcelo Fukumoto <marcelo.fukumoto@suse.com>
Co-authored-by: Andy Lee <andy.lee@suse.com>
Co-authored-by: Alejandro Bonilla <abonilla@suse.com>
The storage performance options ship in Harvester v1.9.1, not v1.9.0.
Move highPerformanceStorage to the v1.9.1 feature flags so the UI does
not offer them on v1.9.0 clusters.
Signed-off-by: Alejandro Bonilla <abonilla@suse.com>
* feat: expose KubeVirt high-performance storage features in VM and Volume UI
Adds UI to configure KubeVirt high-performance disk/storage settings that
were previously only reachable via VMBuilder/Terraform:
- Per-volume "Storage Performance Options": a performance profile
(Default / High Performance / Custom) exposing per-disk cache, io and
dedicatedIOThread on all disk types (VM image/root, new, existing,
container) and on the standalone Volume form.
- VM-wide "High Performance (I/O Threads and Multi-Queue)": blockMultiQueue
and ioThreadsPolicy (+ supplemental-pool thread count), shown only in the
VM section since these are domain-level and cannot be set per-PVC.
- Compatibility guardrails: io=native forces cache=none; cache=none on
Filesystem volumeMode warns; blockMultiQueue requires a virtio disk.
Ref: harvester/harvester#11550
Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
Signed-off-by: Alejandro Bonilla <abonilla@suse.com>
* fix: address review feedback on high-performance storage UI
Resolves the Copilot review comments on #1133:
- Gate the whole feature behind a new `highPerformanceStorage` release
feature flag (v1.9.0) so older supported clusters never render the
controls or receive unsupported KubeVirt fields.
- Force Cache Mode to "none" whenever Native I/O is selected, including
from the "Default" ('') cache value, and disable every non-"none" cache
option (Default included) while Native is active. Previously the empty
cache value slipped past the guardrail and produced an invalid combo.
- Clear an already-enabled blockMultiQueue when the last virtio disk is
removed, so a disabled checkbox can no longer persist an invalid setting.
- Strip stale cache/io/dedicatedIOThread fields from the merged disk spec
when a regenerated disk no longer requests them, so switching a disk back
to "Default" (or unchecking Dedicated I/O Thread) while editing no longer
silently preserves the previous values.
- Expose the disclosure toggle's state to assistive tech via aria-expanded
and an expand/collapse aria-label.
- Add unit tests for the profile transitions and the Native/cache guardrails.
Ref: harvester/harvester#11550
Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
Signed-off-by: Alejandro Bonilla <abonilla@suse.com>
* fix: address second-round review on high-performance storage UI
Resolves the two Copilot findings on #1133 and votdev's UX feedback on
harvester/harvester#11550:
- Restore the disk's original bus when the performance profile goes back
to "Default". The "High Performance" preset switches the bus to virtio,
but leaving the preset only cleared cache/io/dedicatedIOThread, so a
SATA/SCSI disk was silently left on virtio — a bus change that can make
an existing guest unbootable. The pre-preset bus is now remembered and
put back, unless the user picked a different bus themselves in the
meantime.
- Pass the VM-wide performance values from the VM detail page to the
shared Volume component. The mixin already parsed them via
getInitConfig(), but the detail caller never forwarded them, so
VMPerformanceOptions fell back to its prop defaults and hid itself in
view mode — configured blockMultiQueue / ioThreadsPolicy settings were
invisible. They are also refreshed in the value watcher so the panel
does not go stale.
- Make the VM-wide "High Performance" panel expandable/collapsible,
matching the per-volume "Storage Performance Options" disclosure. It
stays collapsed unless the VM already has something configured, so the
average user is not faced with specialist tuning controls by default.
- Fix the unit tests to use Vue Test Utils v2 mount options. They used
the v1 top-level `mocks` key, which VTU 2.x ignores, so every case
failed on mount. The repo has no jest config or test script, so this
was not caught. Add coverage for the bus save/restore behaviour.
Ref: harvester/harvester#11550
Co-Authored-By: Claude <noreply@anthropic.com>
Signed-off-by: Alejandro Bonilla <abonilla@suse.com>
---------
Signed-off-by: Alejandro Bonilla <abonilla@suse.com>
Co-authored-by: Claude Opus 4.8 <noreply@anthropic.com>
The LVM add-on reaches GA in v1.9.1 and only supports dm-thin.
Gate the striped option behind a v1.9.1 feature flag, default new
LVM storage classes to dm-thin, and reset a cloned striped type so
older clusters keep the current behaviour.
Related issue: harvester/harvester#11731
Signed-off-by: Vicente Cheng <vicente.cheng@suse.com>
* feat: allow suer give static IP for VM
Signed-off-by: Andy Lee <andy.lee@suse.com>
* feat: add feature flag
Signed-off-by: Andy Lee <andy.lee@suse.com>
---------
Signed-off-by: Andy Lee <andy.lee@suse.com>
This exposes the longhorn-v2-data-engine-hugepage-enabled and
longhorn-v2-data-engine-memory-size settings in the Harvester GUI, on
Harvester v1.9.0 and later.
Related-to: https://github.com/harvester/harvester/issues/9390
Signed-off-by: Tim Serong <tserong@suse.com>
* feat: add support for volume expansion in storage configuration
Signed-off-by: Andy Lee <andy.lee@suse.com>
* refactor: update volume expansion wording
Signed-off-by: Andy Lee <andy.lee@suse.com>
* refactor: hide checkbox if feature flag is not enabled
Signed-off-by: Andy Lee <andy.lee@suse.com>
* refactor: revert unneeded change
Signed-off-by: Andy Lee <andy.lee@suse.com>
---------
Signed-off-by: Andy Lee <andy.lee@suse.com>
* feat: add filesystem tab
Signed-off-by: Andy Lee <andy.lee@suse.com>
* feat: add filesystem tab in create VM page
Signed-off-by: Andy Lee <andy.lee@suse.com>
* refactor: update some wordings
Signed-off-by: Andy Lee <andy.lee@suse.com>
* feat: add support for filesystem feature flag and enable filesystem tab
Signed-off-by: Andy Lee <andy.lee@suse.com>
* refactor: remove unneeded wordings
Signed-off-by: Andy Lee <andy.lee@suse.com>
* feat: add support for filesystem feature flag and update icon button positioning
Signed-off-by: Andy Lee <andy.lee@suse.com>
* refactor: based on copilot review
Signed-off-by: Andy Lee <andy.lee@suse.com>
* refactor: remove wrong feature flag
Signed-off-by: Andy Lee <andy.lee@suse.com>
* fix: vm template
Signed-off-by: Andy Lee <andy.lee@suse.com>
---------
Signed-off-by: Andy Lee <andy.lee@suse.com>
* feat: add filesystem tab
Signed-off-by: Andy Lee <andy.lee@suse.com>
* feat: add filesystem tab in create VM page
Signed-off-by: Andy Lee <andy.lee@suse.com>
* refactor: update some wordings
Signed-off-by: Andy Lee <andy.lee@suse.com>
* feat: add support for filesystem feature flag and enable filesystem tab
Signed-off-by: Andy Lee <andy.lee@suse.com>
* refactor: remove unneeded wordings
Signed-off-by: Andy Lee <andy.lee@suse.com>
* feat: add support for filesystem feature flag and update icon button positioning
Signed-off-by: Andy Lee <andy.lee@suse.com>
* refactor: based on copilot review
Signed-off-by: Andy Lee <andy.lee@suse.com>
* refactor: tab name
Signed-off-by: Andy Lee <andy.lee@suse.com>
---------
Signed-off-by: Andy Lee <andy.lee@suse.com>
* feat: add PodSecurity Standard setting
Signed-off-by: Andy Lee <andy.lee@suse.com>
* refactor: unneeded change
Signed-off-by: Andy Lee <andy.lee@suse.com>
* refactor: filter by isSystem namespace
Signed-off-by: Andy Lee <andy.lee@suse.com>
* refactor: add fallback logic
Signed-off-by: Andy Lee <andy.lee@suse.com>
---------
Signed-off-by: Andy Lee <andy.lee@suse.com>
* chore: add v1.8.1 and v1.9.0 feature flags
Signed-off-by: Andy Lee <andy.lee@suse.com>
* chore: bump to v1.9.0-dev
Signed-off-by: Andy Lee <andy.lee@suse.com>
---------
Signed-off-by: Andy Lee <andy.lee@suse.com>
* feat: support advance option and creation from DataVolume
- advance option would let user change the accessMode/volumeMode
- creation from DataVolume could supports various scenario with
3rd-party storage
Signed-off-by: Vicente Cheng <freeze.bilsted@gmail.com>
* feat: add data migration action on volume page
Signed-off-by: Vicente Cheng <freeze.bilsted@gmail.com>
* refactor: use show advanced options link instead of checkbox
Signed-off-by: Andy Lee <andy.lee@suse.com>
* feat: add feature flag
Signed-off-by: Andy Lee <andy.lee@suse.com>
* feat: add feature flag for dataMigration action
Signed-off-by: Andy Lee <andy.lee@suse.com>
---------
Signed-off-by: Vicente Cheng <freeze.bilsted@gmail.com>
Signed-off-by: Andy Lee <andy.lee@suse.com>
Co-authored-by: Andy Lee <andy.lee@suse.com>
* feat: add another filter button
Signed-off-by: Andy Lee <andy.lee@suse.com>
* feat: add feature falg to hide vGPU enable/disable actions in PCIDevices page
Signed-off-by: Andy Lee <andy.lee@suse.com>
* refactor: update with conditionally rendering
Signed-off-by: Andy Lee <andy.lee@suse.com>
---------
Signed-off-by: Andy Lee <andy.lee@suse.com>
* feat: add Insecure Skip TLS Verify checkbox
Signed-off-by: Andy Lee <andy.lee@suse.com>
* refactor: set insecureSkipTLSVerify default to false
Signed-off-by: Andy Lee <andy.lee@suse.com>
* fix: conflict
Signed-off-by: Andy Lee <andy.lee@suse.com>
* refactor: remove unneeded change
Signed-off-by: Andy Lee <andy.lee@suse.com>
* fix: get the feature flag in data()
Signed-off-by: Andy Lee <andy.lee@suse.com>
* refactor: make data logic simpler
Signed-off-by: Andy Lee <andy.lee@suse.com>
* refactor: put tip in info banner
Signed-off-by: Andy Lee <andy.lee@suse.com>
---------
Signed-off-by: Andy Lee <andy.lee@suse.com>
* feat: support customizing support bundle file name
Signed-off-by: Jack Yu <jack.yu@suse.com>
* feat: add supportBundleFileNameSetting feature flag
Signed-off-by: Jack Yu <jack.yu@suse.com>
---------
Signed-off-by: Jack Yu <jack.yu@suse.com>
* feat: add nodeUpgradeOption setting
Signed-off-by: Andy Lee <andy.lee@suse.com>
* feat: add resume button when node paused
Signed-off-by: Andy Lee <andy.lee@suse.com>
* feat: add feature flag in v1.7.0
Signed-off-by: Andy Lee <andy.lee@suse.com>
---------
Signed-off-by: Andy Lee <andy.lee@suse.com>
* feat: add l2VlanTrunkMode feature
Signed-off-by: Andy Lee <andy.lee@suse.com>
* refactor: remove unneeded code
Signed-off-by: Andy Lee <andy.lee@suse.com>
* refactor: fix edit l2vlan trunk mode edit page
Signed-off-by: Andy Lee <andy.lee@suse.com>
* fix: hide Route tab when trunk mode
Signed-off-by: Andy Lee <andy.lee@suse.com>
---------
Signed-off-by: Andy Lee <andy.lee@suse.com>
* feat: add runStragety field when cloning a VM
Signed-off-by: Andy Lee <andy.lee@suse.com>
* refactor: remove unneeded change
Signed-off-by: Andy Lee <andy.lee@suse.com>
---------
Signed-off-by: Andy Lee <andy.lee@suse.com>
* feat: add maxCPU and maxMemory
Signed-off-by: Andy Lee <andy.lee@suse.com>
* feat: add hotplug dialog
Signed-off-by: Andy Lee <andy.lee@suse.com>
* feat: add restart message
Signed-off-by: Andy Lee <andy.lee@suse.com>
* feat: let VM template support cpuMemoryHotplug
Signed-off-by: Andy Lee <andy.lee@suse.com>
* feat: add feature flag
Signed-off-by: Andy Lee <andy.lee@suse.com>
* feat: add max-hotplug-ratio setting
Signed-off-by: Andy Lee <andy.lee@suse.com>
---------
Signed-off-by: Andy Lee <andy.lee@suse.com>
* Embedded VM migration detail in migration tab
Signed-off-by: Andy Lee <andy.lee@suse.com>
* update events condition
Signed-off-by: Andy Lee <andy.lee@suse.com>
---------
Signed-off-by: Andy Lee <andy.lee@suse.com>
* refactor feature flags structure
Signed-off-by: Andy Lee <andy.lee@suse.com>
* Replace with FEATURE_FLAGS and valid and sort versions
Signed-off-by: Andy Lee <andy.lee@suse.com>
---------
Signed-off-by: Andy Lee <andy.lee@suse.com>
* Add 1.4.2/1.5.1/1.6.0 feature flags
Signed-off-by: Andy Lee <andy.lee@suse.com>
* bump version to v1.6.0-dev
Signed-off-by: Andy Lee <andy.lee@suse.com>
---------
Signed-off-by: Andy Lee <andy.lee@suse.com>