* chore(deps): bump @rancher/shell to 3.0.13 (#1130)
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.
Conflicts resolved: yarn.lock
(yarn.lock regenerated with yarn install; package.json keeps the release branch dependencies)
Signed-off-by: Marcelo Fukumoto <marcelo.fukumoto@suse.com>
(cherry picked from commit 00584f1d19)
* feat: Add a unit test target (jest) to the UI extension and run it in CI (#1192)
- Introduce test targets.
- Adding additional tests.
Related to: https://github.com/harvester/harvester/issues/11892
Signed-off-by: Volker Theile <vtheile@suse.com>
(cherry picked from commit 71141b257a)
Signed-off-by: Marcelo Fukumoto <marcelo.fukumoto@suse.com>
* chore(deps): bump @rancher/shell to 3.0.14 (#1208)
* chore(deps): bump @rancher/shell to 3.0.14
3.0.14 resolves [[name]] tokens in translations from values registered
as l10n globals, which the standalone UI needs to pick the product name.
Signed-off-by: Marcelo Fukumoto <marcelo.fukumoto@suse.com>
* fix: save cloud-config template edits with @rancher/shell 3.0.14
The YamlEditor of shell 3.0.14 no longer emits onChanges, so editing a
template saved its old cloud config. Copy the text from update:value,
which both shell versions emit.
Jest transforms @replit/codemirror-vim-core, an ESM-only dependency of
the new YamlEditor, like the dashboard does.
Signed-off-by: Marcelo Fukumoto <marcelo.fukumoto@suse.com>
* fix: keep the YAML editor heights with CodeMirror 6
The min-height rules targeted the CodeMirror 5 element, so the editors
shrank to their text.
Signed-off-by: Marcelo Fukumoto <marcelo.fukumoto@suse.com>
* fix: reject IP ranges the network settings don't support
The CIDR check of @rancher/shell 3.0.14 also accepts short forms such as
10.1/16, extra parts and IPv6, so the VM migration, RWX and storage
network settings saved them. Use a strict IPv4 CIDR check of our own.
Signed-off-by: Marcelo Fukumoto <marcelo.fukumoto@suse.com>
* fix: keep the look of the file selector buttons
The FileSelector of @rancher/shell 3.0.14 no longer takes button classes
and renders a medium secondary button. Pass the variant and size that
match the previous primary and secondary buttons.
Signed-off-by: Marcelo Fukumoto <marcelo.fukumoto@suse.com>
* fix: keep Enter in a migration wizard field on the same step
The Wizard of @rancher/shell 3.0.14 renders its step headers as submit
buttons, so Enter in a text field clicked the first one and jumped back
to step 1.
Signed-off-by: Marcelo Fukumoto <marcelo.fukumoto@suse.com>
* fix: show the created message after a restore, upgrade or upload
Since @rancher/shell 3.0.14, save() no longer shows the message for
resources with a generated name; callers show it with
notifyGeneratedName().
Signed-off-by: Marcelo Fukumoto <marcelo.fukumoto@suse.com>
* refactor: fold the logging output buffer with the CodeMirror 6 helpers
The YAML editor of @rancher/shell 3.0.14 is CodeMirror 6, and its
CodeMirror 5 methods are deprecated.
Signed-off-by: Marcelo Fukumoto <marcelo.fukumoto@suse.com>
* fix: keep the shell's table views off in standalone
@rancher/shell 3.0.14 turns its table views on for every list in the
standalone UI, as the server has no ui-configurable-tables feature and
the default is on. The table views drop the filters the lists put in the
table header, which also left the Images list empty. Add the feature,
disabled, to the management store in standalone only.
Signed-off-by: Marcelo Fukumoto <marcelo.fukumoto@suse.com>
* fix: reject zero-padded octets in IP ranges
Signed-off-by: Marcelo Fukumoto <marcelo.fukumoto@suse.com>
---------
Conflicts resolved: package.json, yarn.lock
(yarn.lock regenerated with yarn install; package.json keeps the release branch dependencies)
Signed-off-by: Marcelo Fukumoto <marcelo.fukumoto@suse.com>
(cherry picked from commit d6f6f7c54c)
* feat: use the SUSE Virtualization product name on Prime (#1202)
* feat: switch the product name with Rancher Prime
Use a [[Harvester]] token for the product name in the translations, so
Rancher 2.16 fills it from the l10n global that harvester-manager
registers: SUSE Virtualization on Rancher Prime, Harvester otherwise.
Rancher before 2.16 shows the tokens as written, so on those hosts (and
standalone) the extension resolves them to Harvester itself.
Signed-off-by: Marcelo Fukumoto <marcelo.fukumoto@suse.com>
* feat: switch the standalone product name with the server flavor
Standalone has no Rancher Prime, so register the [[Harvester]] l10n
global from the server-flavor setting instead: SUSE Virtualization on
prime, Harvester otherwise.
Signed-off-by: Marcelo Fukumoto <marcelo.fukumoto@suse.com>
* fix: point the network policy banner to the documentation
Signed-off-by: Marcelo Fukumoto <marcelo.fukumoto@suse.com>
* feat: use the SUSE theme in standalone Prime
Standalone Prime kept the harvester brand and only overrode the primary
colour, so the rest of the palette and the fonts didn't match Rancher
Prime. Switch the ui-brand setting to suse in the store when the server
flavor is prime, which makes the shell load the SUSE theme.
Signed-off-by: Marcelo Fukumoto <marcelo.fukumoto@suse.com>
* fix: keep the SUSE theme after a brand setting change event
The watcher also reads the setting's value, so a change from the server
loaded into the same object switches the brand back to suse.
Signed-off-by: Marcelo Fukumoto <marcelo.fukumoto@suse.com>
---------
Signed-off-by: Marcelo Fukumoto <marcelo.fukumoto@suse.com>
(cherry picked from commit 6e0e0237ef)
---------
Signed-off-by: Marcelo Fukumoto <marcelo.fukumoto@suse.com>
Signed-off-by: Volker Theile <vtheile@suse.com>
Co-authored-by: Volker Theile <vtheile@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.
(cherry picked from commit cb2cef5e73)
Signed-off-by: Andy Lee <andy.lee@suse.com>
Co-authored-by: Andy Lee <andy.lee@suse.com>
* fix: VM migration tab not appear when first login
* feat: add access/ volume mode model
* feat: add selected all | clear all actions for selected VM
* fix: bugs in VM selection table
* refactor: copilot review
---------
(cherry picked from commit afe632b723)
Signed-off-by: Andy Lee <andy.lee@suse.com>
Co-authored-by: Andy Lee <andy.lee@suse.com>
* fix: hide Virtul machine migration tabs if forklift addon is not enabled
* fix: rename advanced to configurations
* fix: fixed column width
* refactor: review comment
* revert: power on background color
---------
(cherry picked from commit 41cf44d231)
Signed-off-by: Andy Lee <andy.lee@suse.com>
Co-authored-by: Andy Lee <andy.lee@suse.com>
* feat: forklift poc first commit
* feat: add migration and plan detail pages with progress tracking
* feat(forklift): UI based on the FIGMA
* feat(forklift): Fixed config based on new figma changes
* feat(forklift): New changes added based on new figma
* feat(forklift): Add the succeded state
* Merge the new APIs
* feat(forklift): Applied fix to select the proper data on network. Added condition to show critical
* feat(forklift): Added icons, critical state, fix grids, action button
* feat(forklift): Change to use the proper provider instead of a hardcoded
* feat(forklift): Added pagination UI
* feat(forklift): FIxed the routing for the extension
* feat(forklift): route and router doesnt work properly on extensions
* feat(forklift): fixed to fix the icon on extension
* feat(forklift): Added overflow hidden to mapping target list
* feat(forklift): Added better handling on the saving and testing
* feat(forklift): Remove test flags
* feat(forklift): Changed based on review
* feat(forklift): fixed title and button
* feat(forklift): Design changes
* feat(forklift): Changed to Wizard
* feat(forklift): added the provider wizard
* feat(forklift): Fixed some UI changes
* feat(forklift): Removed wrong configs used for testing
* feat(forklift): update size
* feat(forklift): small fixes
* feat(forklift): small fixes after Copilot
* feat(forklift): small fixes after Copilot
* feat(forklift): reverted settings.json changes
* feat(forklift): small fixes after Copilot
* feat(forklift): Fix the way it is registered
* feat(forklift): Fixed the type for VMware
* feat(forklift): small changes before rebase
* feat: Added new API for the vms
* feat: Fix some labels
* feat: Added some final fixes to structure
* feat: added loading to provider steps
* feat: added comments from copilot review
---------
(cherry picked from commit 560643d299)
Signed-off-by: Marcelo Fukumoto <marcelo.fukumoto@suse.com>
Co-authored-by: marcelofukumoto <marceloyfukumoto@gmail.com>
* fix: vGPU / USB enable/disable actions needs to be hidden for read only users
Signed-off-by: Andy Lee <andy.lee@suse.com>
* style: add scoped styles for group actions in DeviceList component
Signed-off-by: Andy Lee <andy.lee@suse.com>
* style: remove width property from group actions in DeviceList components
Signed-off-by: Andy Lee <andy.lee@suse.com>
* fix: update logging type in init function and improve SideNav visibility handling
Signed-off-by: Andy Lee <andy.lee@suse.com>
* fix: ensure canManageGroup only returns true for non-empty rows with updatable permissions
Signed-off-by: Andy Lee <andy.lee@suse.com>
---------
Signed-off-by: Andy Lee <andy.lee@suse.com>
* fix: change auth/V3user to auth/user
Signed-off-by: Andy Lee <andy.lee@suse.com>
* refactor: extract to utils/auth.js
Signed-off-by: Andy Lee <andy.lee@suse.com>
---------
Signed-off-by: Andy Lee <andy.lee@suse.com>
* feat: add generic error for API response 40X
Signed-off-by: Andy Lee <andy.lee@suse.com>
* refactor: fallback error msg
Signed-off-by: Andy Lee <andy.lee@suse.com>
* refactor: update error msg
Signed-off-by: Andy Lee <andy.lee@suse.com>
* refactor: based on comment
Signed-off-by: Andy Lee <andy.lee@suse.com>
---------
Signed-off-by: Andy Lee <andy.lee@suse.com>
* feat(vmimport): First working side nav attempt
Add vmimport entries when the related resource actually exists aka addon was enabled
Signed-off-by: Dominik Wombacher <dominik.wombacher@suse.com>
* feat(vmimport): improved version that uses 'store.watch' instead of polling
Signed-off-by: Dominik Wombacher <dominik.wombacher@suse.com>
* fix(vmimport): further tuning of dynamic side navi load/unload
Code formatting and commits. Also safeguard if something is wrong with the store
Signed-off-by: Dominik Wombacher <dominik.wombacher@suse.com>
* refactor(vmimport): separate vmimport side nav entries from dynamic logic
function registerAddonSideNav introduced in utils/dynamic-nav.js
Decouples vmimport side nav entries from the hide/unhide based on addon status logic
Makes it reusable in the UI with other AddOns in the future
Signed-off-by: Dominik Wombacher <dominik.wombacher@suse.com>
* feat(vmimport): add custom headers for HCI.VMIMPORT
Signed-off-by: Dominik Wombacher <dominik.wombacher@suse.com>
* feat(vmimport): add custom headers for HCI.VMIMPORT_SOURCE_V
Signed-off-by: Dominik Wombacher <dominik.wombacher@suse.com>
* feat(vmimport): add custom headers for HCI.VMIMPORT_SOURCE_O
Signed-off-by: Dominik Wombacher <dominik.wombacher@suse.com>
* fix(vmimport): array instead string passed to configureType
Caused routing issues for CRUD operations
Labels moved to labelTypes section to follow standards
Signed-off-by: Dominik Wombacher <dominik.wombacher@suse.com>
* fix(vmimport): registerAddonSideNav improved and refactored
Clear comments, code refactoring, additional checks and validations
Signed-off-by: Dominik Wombacher <dominik.wombacher@suse.com>
* fix(vmimport): show correct status for virtualmachineimport
Signed-off-by: Dominik Wombacher <dominik.wombacher@suse.com>
* feat(vmimport): custom list components with ns grouping
Signed-off-by: Dominik Wombacher <dominik.wombacher@suse.com>
* fix(vmimport): 404 on refresh and missing menu entry
Restores virtualType definitions to register routes synchronously,
preventing 404 errors during page reload.
Updates dynamic-nav to force-fetch addon data if missing, fixing
hidden menu issues on direct page access.
Restores explicit label keys for virtualTypes to ensure correct
naming in the side navigation.
Signed-off-by: Dominik Wombacher <dominik.wombacher@suse.com>
* feat(vmimport): add edit form for VirtualMachineImport resource
Adds a UI form for VirtualMachineImport to replace manual YAML editing.
The form fetches VmwareSource and OpenstackSource objects for the
source selection dropdown.
It validates the VM name against RFC-1123 rules and filters out
internal storage classes. Users can also configure network mappings
via a dynamic list.
Signed-off-by: Dominik Wombacher <dominik.wombacher@suse.com>
* feat(vmimport): add edit form for VmwareSource
Adds a UI to configure VmwareSource resources including the endpoint
and datacenter fields.
For authentication, users can either select an existing Secret or
enter a username and password directly. The form handles creating
the required Kubernetes Secret in the background when new credentials
are provided.
Signed-off-by: Dominik Wombacher <dominik.wombacher@suse.com>
* feat(vmimport): add edit form for OpenstackSource
Custom edit form for OpenstackSource resource. Creates new secret
or lets users select existing secrets. Support all fields the CRD has.
Signed-off-by: Dominik Wombacher <dominik.wombacher@suse.com>
* chore(vmimport): vmware source default endpoint and datacenter renamed
Signed-off-by: Dominik Wombacher <dominik.wombacher@suse.com>
* feat(vmimport): add edit form for OvaSource
OvaSource (new in harvester / vm-import-controller v1.7.0).
Imports VMs from an OVA file using via HTTP or HTTPS.
The form supports URL configuration and optional Basic Auth using a
username and password. Users can also provide an optional CA Certificate
for HTTPS verification and configure advanced HTTP timeout settings.
VirtualMachineImport edit page to updated to include OvaSource in
the source dropdown.
Signed-off-by: Dominik Wombacher <dominik.wombacher@suse.com>
* chore(vmimport): align tab names on openstacksource
Signed-off-by: Dominik Wombacher <dominik.wombacher@suse.com>
* fix(vmimport): import { TextArea } from '@components/Form/TextArea' not found
Signed-off-by: Dominik Wombacher <dominik.wombacher@suse.com>
* fix(vmimport): 'Destination Network' don't list all networks
Online listed the 'mgmt' Network. Adjust to read all Virtual Machine Networks.
Signed-off-by: Dominik Wombacher <dominik.wombacher@suse.com>
* feat(vmimport): rename side-nav entry to 'Virtual Machine Imports'
Signed-off-by: Dominik Wombacher <dominik.wombacher@suse.com>
* fix(vmimport): OvaSource Auth tab throws error selecting existing secret
Signed-off-by: Dominik Wombacher <dominik.wombacher@suse.com>
* fix(vmimport): Add missing caCert input field to vmware source
Signed-off-by: Dominik Wombacher <dominik.wombacher@suse.com>
* refactor(vmimport): use 'LabeledInput' instead of 'TextAreaAutoGrow' for cacert fields
Changing the type allows labels to show up in the UI
Signed-off-by: Dominik Wombacher <dominik.wombacher@suse.com>
* refactor(vmimport): Move vars into types files and reference them
Signed-off-by: Dominik Wombacher <dominik.wombacher@suse.com>
* refactor(vmimport): Use 'currentProduct' value instead of hardcoded 'harvester' string
Signed-off-by: Dominik Wombacher <dominik.wombacher@suse.com>
* refactor(vmimport): shorten 'selectedOption.raw' usage
Signed-off-by: Dominik Wombacher <dominik.wombacher@suse.com>
* refactor(vmimport): Checks to make splice() usage more robust
Signed-off-by: Dominik Wombacher <dominik.wombacher@suse.com>
* refactor(vmimport): re-use existing rfc1123 val function
Move rfc1123 validation error message to l10n/en-us.yaml
Signed-off-by: Dominik Wombacher <dominik.wombacher@suse.com>
* fix(vmimport): var name typo in vmi edit rfc1123 check
Signed-off-by: Dominik Wombacher <dominik.wombacher@suse.com>
* feat(vmimport): vmi use 'FormValidation' and l10n for labels
Signed-off-by: Dominik Wombacher <dominik.wombacher@suse.com>
* feat(vmimport): oss use 'FormValidation' and l10n for labels
Signed-off-by: Dominik Wombacher <dominik.wombacher@suse.com>
* feat(vmimport): ovas use 'FormValidation' and l10n for labels
Signed-off-by: Dominik Wombacher <dominik.wombacher@suse.com>
* feat(vmimport): vms use 'FormValidation' and l10n for labels
Signed-off-by: Dominik Wombacher <dominik.wombacher@suse.com>
* refactor(vmimport): Display error message at the top of the page
Signed-off-by: Volker Theile <vtheile@suse.com>
---------
Signed-off-by: Dominik Wombacher <dominik.wombacher@suse.com>
Signed-off-by: Volker Theile <vtheile@suse.com>
Co-authored-by: Volker Theile <vtheile@suse.com>
* fix: allow edit as yaml in create VM page if empty CPU or memory
Signed-off-by: Andy Lee <andy.lee@suse.com>
* refactor: remove getCPUMemoryValidation
Signed-off-by: Andy Lee <andy.lee@suse.com>
---------
Signed-off-by: Andy Lee <andy.lee@suse.com>
* fix: hide VM take backup action if backup target is not available
Signed-off-by: Andy Lee <andy.lee@suse.com>
* refactor: use extracted func
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>
* chore: disable vmstate-persistence and longhorn-static StorageClasses
Signed-off-by: Nick Chung <nick.chung@suse.com>
* chore: allow internal storage class deletions in image and volumn
Signed-off-by: Nick Chung <nick.chung@suse.com>
* chore: remove deletion tooltips in image and volume pages
Signed-off-by: Nick Chung <nick.chung@suse.com>
* chore: rollback style changes of image and volume lists
Signed-off-by: Nick Chung <nick.chung@suse.com>
---------
Signed-off-by: Nick Chung <nick.chung@suse.com>
* add logic to block import harvester version lower than 1.3.0
Signed-off-by: Andy Lee <andy.lee@suse.com>
* refactor console.error message
Signed-off-by: Andy Lee <andy.lee@suse.com>
---------
Signed-off-by: Andy Lee <andy.lee@suse.com>