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>
Sprint tags (vX.Y.Z-dev-YYYYMMDD) only share a prefix with the
x.y.z-dev version in package.json, so every sprint plugin reported
the same version and the catalog image push hit "Cannot overwrite
production image". Bump the tree to the tag before building.
Related issue: harvester/harvester#11047
Signed-off-by: Vicente Cheng <vicente.cheng@suse.com>
kickSideNav toggled a dummy favorite via addFavorite/removeFavorite, which persist through prefs/set and issue a PUT /v1/userpreferences on every toggle, flooding the backend and surfacing 500 errors. Switch to the in-memory prefs/load mutation so the SideNav still re-renders without any network request.
Signed-off-by: Andy Lee <andy.lee@suse.com>
* feat: use prime logo when server-flavor is prime
Signed-off-by: Andy Lee <andy.lee@suse.com>
* feat: expose server-flavor setting
Signed-off-by: Andy Lee <andy.lee@suse.com>
* refactor: copilot review
Signed-off-by: Andy Lee <andy.lee@suse.com>
---------
Signed-off-by: Andy Lee <andy.lee@suse.com>
* feat: add k3k addon UI
Signed-off-by: Andy Lee <andy.lee@suse.com>
* feat: add rancher-k3k addon UI
Signed-off-by: Andy Lee <andy.lee@suse.com>
* refactor: copilot review
Signed-off-by: Andy Lee <andy.lee@suse.com>
* refactor: copilot review
Signed-off-by: Andy Lee <andy.lee@suse.com>
* refactor: remove k3k edit page
Signed-off-by: Andy Lee <andy.lee@suse.com>
* refactor: k3k addon description
Signed-off-by: Andy Lee <andy.lee@suse.com>
---------
Signed-off-by: Andy Lee <andy.lee@suse.com>
Clears 26 of the 54 open Dependabot alerts (axios, dompurify, serve-static, and
drops vulnerable send / @tootallnate/once copies).
3.0.13 ships the flat-config ESLint 10 toolchain, so lint now routes through the
@rancher/shell launcher (keeping the legacy .eslintrc on ESLint 7); a prelint step
installs an ESLint-7-compatible eslint-plugin-jest into the isolated toolchain.
Signed-off-by: Marcelo Fukumoto <marcelo.fukumoto@suse.com>
In Harvester v1.9.0, we're moving LHv2 from "Experimental" to "Preview",
so I've added a new preview label to the settings interface. I figure
given Experimental had the "error" color, I should make "Preview" use
the warning color, to make it a bit less alarming :-)
Related-to: https://github.com/harvester/harvester/issues/9960
Signed-off-by: Tim Serong <tserong@suse.com>
Co-authored-by: Volker Theile <vtheile@suse.com>
* fix: vGPU doesn't display in edit VM page
Signed-off-by: Andy Lee <andy.lee@suse.com>
* fix: align PCI passthrough action buttons height
Match the enable/disable passthrough and Actions dropdown buttons to 40px and move the selected-count label below them.
Signed-off-by: Andy Lee <andy.lee@suse.com>
---------
Signed-off-by: Andy Lee <andy.lee@suse.com>
Re-resolve 15 vulnerable transitive dependencies to their latest in-range
patched versions in yarn.lock only (no package.json changes): @babel/core,
@babel/plugin-transform-modules-systemjs, brace-expansion, fast-uri, form-data,
http-proxy-middleware, immutable, joi, js-cookie, launch-editor, nanoid,
shell-quote, svgo, websocket-driver, ws.
The remaining alerts are pinned by parent packages (chiefly @rancher/shell) or
need a cross-major bump, so they can't be resolved by the lockfile alone; they
are tracked separately.
Signed-off-by: Marcelo Fukumoto <marceloyfukumoto@gmail.com>
* fix: prevent duplicated cloud-config for empty user data
Signed-off-by: Andy Lee <andy.lee@suse.com>
* refactor: AI review
Signed-off-by: Andy Lee <andy.lee@suse.com>
---------
Signed-off-by: Andy Lee <andy.lee@suse.com>
* deps: update rancher/shell to 3.0.12-rc.7
Signed-off-by: Andy Lee <andy.lee@suse.com>
* fix: move filter labels/schedule buttons position
Signed-off-by: Andy Lee <andy.lee@suse.com>
* feat: improve serial console
Signed-off-by: Andy Lee <andy.lee@suse.com>
* feat(serial-console): add terminal search toolbar and highlight tuning
Signed-off-by: Andy Lee <andy.lee@suse.com>
* refactor: clear searach result after close
Signed-off-by: Andy Lee <andy.lee@suse.com>
* refactor: fine tune serial console
Signed-off-by: Andy Lee <andy.lee@suse.com>
---------
Signed-off-by: Andy Lee <andy.lee@suse.com>
* fix: project resource quota not set in POST API payload
Signed-off-by: Andy Lee <andy.lee@suse.com>
* fix: guard onQuotasInput against undefined payload
Signed-off-by: Andy Lee <andy.lee@suse.com>
---------
Signed-off-by: Andy Lee <andy.lee@suse.com>
Show a Shareable checkbox when attaching an existing volume whose
PVC is RWX Block and not provisioned by Longhorn. Checking it sets
disk.shareable and shows a data-corruption warning banner.
Related issue: harvester/harvester#9650
Signed-off-by: Vicente Cheng <vicente.cheng@suse.com>
* fix: VM migration tab not appear when first login
Signed-off-by: Andy Lee <andy.lee@suse.com>
* feat: add access/ volume mode model
Signed-off-by: Andy Lee <andy.lee@suse.com>
* feat: add selected all | clear all actions for selected VM
Signed-off-by: Andy Lee <andy.lee@suse.com>
* fix: bugs in VM selection table
Signed-off-by: Andy Lee <andy.lee@suse.com>
* refactor: copilot review
Signed-off-by: Andy Lee <andy.lee@suse.com>
---------
Signed-off-by: Andy Lee <andy.lee@suse.com>
Make syncStaticIpAnnotations idempotent so it no longer mutates VM
annotations when already in sync, breaking a reactive update loop that
froze the browser on the VM detail page. Also stack multiple IP
addresses vertically in the IP Address column.
Signed-off-by: Andy Lee <andy.lee@suse.com>
* feat(vm): allow Cloud Config for Windows guests
Currently the Cloud Config editor is completely hidden when a VM's
OS Type is set to Windows, and no `cloudinitdisk` volume or secret
is written to the VM spec even if the user has entered content.
This blocks a common Windows-on-Harvester workflow: using
Cloudbase-Init to run first-boot configuration (install VMDP,
enable OpenSSH server, add authorized_keys, join a domain, run
`runcmd` steps, etc.). Users on Windows today have to hand-edit the
VM YAML after creation to attach a cloudinitdisk, which is fragile
and undiscoverable.
Changes:
- Remove the `v-if="!isWindows"` on the CloudConfig component so
the editor is available for every OS type. The Sysprep editor
continues to render only for Windows, so Windows now gets both
panels; Linux is unchanged.
- Drop the `if (!this.isWindows)` guard around the cloudinitdisk
volume serialization so the disk is attached whenever the user
provided user-data or network-data, regardless of OS.
- Drop the `|| this.isWindows` early-return in `saveSecret` so the
cloud-init secret is persisted for Windows VMs too.
- `getInitUserData` now returns a bare `#cloud-config\n` header for
Windows instead of the Linux qemu-guest-agent runcmd template
(which would fail on Cloudbase-Init). VMDP installs the QGA on
Windows as a native service, so the runcmd path is not needed.
The "Install guest agent" checkbox stays disabled for Windows
because it specifically drives the Linux QGA-via-runcmd recipe.
Fixes point 2 of harvester/harvester#11124.
Signed-off-by: Alejandro Bonilla <abonilla@suse.com>
* fix(vm): do not clear cloud-config on isWindows watcher fire
The isWindows watcher runs on every change of the isWindows computed
property, including on mount when editing an existing Windows VM. Setting
this['userScript'] and this['networkScript'] to undefined at that point
wipes the cloud-config data that was just loaded from the existing VM's
cloudinit secret, so the Advanced -> Cloud Config editor shows empty
even though the VM has data on the wire.
Remove the two clears - Cloud Config is now supported for Windows guests
by this PR, so there is no reason to unset the user/network scripts when
the OS type is Windows. sshKey and installAgent remain gated (SSH keys
are injected via cloud-init on Linux only, and the qemu-guest-agent
package install checkbox does not apply to Windows).
Signed-off-by: Alejandro Bonilla <abonilla@suse.com>
Co-authored-by: Volker Theile <vtheile@suse.com>
* refactor(vm): Get CloudInit working for VM templates
- Remove unnecessary osType watcher in cloud config. The watcher (see `pkg/harvester/edit/kubevirt.io.virtualmachine/VirtualMachineCloudConfig/DataTemplate.vue`) that cleared the cloud config template for Windows VMs is no longer necessary.
- Automatically strip the CloudInit `User Data` properties `package_update` and `packages` for OS type `Windows`.
Signed-off-by: Volker Theile <vtheile@suse.com>
---------
Signed-off-by: Alejandro Bonilla <abonilla@suse.com>
Signed-off-by: Volker Theile <vtheile@suse.com>
Co-authored-by: Volker Theile <vtheile@suse.com>
* ci: fix CI_BRANCH ternary so PR builds skip upload gate
Signed-off-by: Andy Lee <andy.lee@suse.com>
* ci: simplify CI_BRANCH expression comment
Signed-off-by: Andy Lee <andy.lee@suse.com>
---------
Signed-off-by: Andy Lee <andy.lee@suse.com>
* feat: add VMware VDDK image option to VM migration provider
Add an optional VMware VDDK Image field to the Configure Provider step of the VM migration wizard, bound to spec.settings.vddkInitImage when set and left unset when empty. Supports create and edit flows and populates from the existing provider when editing.
Signed-off-by: Andy Lee <andy.lee@suse.com>
* refactor: copilot review
Signed-off-by: Andy Lee <andy.lee@suse.com>
---------
Signed-off-by: Andy Lee <andy.lee@suse.com>
* ci: trigger standalone build when PR labeled with build-artifact
Signed-off-by: Andy Lee <andy.lee@suse.com>
* ci: skip upload gate for PR-triggered standalone builds
Signed-off-by: Andy Lee <andy.lee@suse.com>
---------
Signed-off-by: Andy Lee <andy.lee@suse.com>
Show an error banner and disable the Create and Start action when the migration plan name matches an existing provider or migration plan name.
Signed-off-by: Andy Lee <andy.lee@suse.com>
* refactor: new design for review page
Signed-off-by: Andy Lee <andy.lee@suse.com>
* refactor: customize empty table rows message
Signed-off-by: Andy Lee <andy.lee@suse.com>
* refactor: fixed the table column
Signed-off-by: Andy Lee <andy.lee@suse.com>
* style: update header tag and align fixed header actions in review migration step
Signed-off-by: Andy Lee <andy.lee@suse.com>
* style: remove unneeded overflow css
Signed-off-by: Andy Lee <andy.lee@suse.com>
---------
Signed-off-by: Andy Lee <andy.lee@suse.com>
* refactor: modify relatedResources using ownerReferences uid
Signed-off-by: Andy Lee <andy.lee@suse.com>
* refactor: wordings
Signed-off-by: Andy Lee <andy.lee@suse.com>
* fix(vm-migration): keep completed VMs green and linkable in failed plans
When a plan fails overall, VMs that already reached 100% were marked with an error: their progress bar turned red while the label still read "Finished Successfully", and the migrated-VM detail link was hidden.
Skip the plan-level failure fallback for VMs at 100% and drop the !planFailed guard from the detail-link condition so successfully migrated VMs stay green and stay navigable.
Signed-off-by: Andy Lee <andy.lee@suse.com>
---------
Signed-off-by: Andy Lee <andy.lee@suse.com>
* refactor: extract access mode strings to static ACCESS_MODE constant
Signed-off-by: Andy Lee <andy.lee@suse.com>
* refactor: destructure ACCESS_MODE variables in CDISettings.vue accessModeOptions
* refactor: destructure ACCESS_MODE at top level in all consumer files
* fix(lint): reorder imports to top of module in CDISettings, harvesterhci.io.volume, and VirtualMachineVolume
---------
Signed-off-by: Andy Lee <andy.lee@suse.com>
Co-authored-by: Andy Lee <andy.lee@suse.com>
Co-authored-by: copilot-swe-agent[bot] <198982749+Copilot@users.noreply.github.com>
formatDuration returned an empty value when a migration was in progress (started set but completed missing), causing the duration column to show an em-dash for all running plans. It now computes elapsed time up to Date.now() when completed is absent, only returning the placeholder when started is unset or timestamps are invalid.
Related issue: harvester/harvester#10417
Signed-off-by: Andy Lee <andy.lee@suse.com>
* ci: disable header-max-length commit rule
Signed-off-by: Andy Lee <andy.lee@suse.com>
* docs(agents): clarify agent guide and share it across AI assistants
- Symlink CLAUDE.md and GEMINI.md to AGENTS.md so Claude Code, Copilot
and Gemini read the same guidance
- Use the full conventional-commit format with scope in the guide
- Clarify Vue SFC block order and the feature-flag development steps
- Bump the documented Node.js requirement to v24
Signed-off-by: Andy Lee <andy.lee@suse.com>
---------
Signed-off-by: Andy Lee <andy.lee@suse.com>
* refactor(host): update resource usage gauges and table column headers
- Replace ConsumptionGauge with PercentageBar in CPU/Memory/Storage
formatters to show the percentage next to the progress bar
- Rename the Disk State column header to Disk (via i18n)
- Display the CPU Manager column header on two lines
Signed-off-by: Andy Lee <andy.lee@suse.com>
* refactor: add noopener noreferrer rel
Signed-off-by: Andy Lee <andy.lee@suse.com>
---------
Signed-off-by: Andy Lee <andy.lee@suse.com>
Strip the scope in parentheses so titles like 'refactor(host): ...'
resolve to the 'refactor' type instead of falling back to 'other'.
Signed-off-by: Andy Lee <andy.lee@suse.com>
* feat: improve VM migration dashboard mapping labels and VM detail link
- Display Management Network / Ignored labels via i18n in mappings column and review card
- Add clickable external-link icon to migrated VM detail page after successful migration
- Add tooltip to the VM detail external-link icon
Signed-off-by: Andy Lee <andy.lee@suse.com>
* refactor: modify duration column width
Signed-off-by: Andy Lee <andy.lee@suse.com>
* refactor: copilot review comment
Signed-off-by: Andy Lee <andy.lee@suse.com>
---------
Signed-off-by: Andy Lee <andy.lee@suse.com>