* feat: add component health dashboard sections
Add health summary and component health tables with severity filters and expandable check details.
Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com>
Signed-off-by: Jack Yu <jack.yu@suse.com>
* feat: use health API group for component health resources
Update dashboard resource types to use the health.harvesterhci.io API group.
Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com>
Signed-off-by: Jack Yu <jack.yu@suse.com>
* feat: add component health ignore controls
Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com>
Signed-off-by: Jack Yu <jack.yu@suse.com>
* feat: gate component health behind the componentHealth feature flag
Only show the component health dashboard sections on Harvester v1.10.0 and later.
Signed-off-by: Jack Yu <jack.yu@suse.com>
* fix: address component health review comments
- sort the health summary table by a severity rank
- use buttons instead of anchors for restore and show more actions
- let the affected resources list expand so every resource can be restored
- widen the ignore popup and cap its height
Co-Authored-By: Claude Sonnet 5.5 <noreply@anthropic.com>
Signed-off-by: Jack Yu <jack.yu@suse.com>
* refactor: split component health into dedicated components
Move the health summary, component health tabs and ignore popup out of
the dashboard page into components/health, and share the constants and
helpers through utils/component-health.
Co-Authored-By: Claude Sonnet 5.5 <noreply@anthropic.com>
Signed-off-by: Jack Yu <jack.yu@suse.com>
* fix: sort component health by severity rank
Co-Authored-By: Claude Sonnet 5.5 <noreply@anthropic.com>
Signed-off-by: Jack Yu <jack.yu@suse.com>
* fix: toggle health rows in place and tell empty filters from no checks
- toggle the expanded message and resource ids by mutating the unwrapped
arrays, the template does not pass refs
- show "No checks match the selected filters" when the severity filters
hide existing checks, keep "No issues detected" for a report without
checks
Co-Authored-By: Claude Sonnet 5.5 <noreply@anthropic.com>
Signed-off-by: Jack Yu <jack.yu@suse.com>
* refactor: fetch component health resources in their own components
Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com>
Signed-off-by: Jack Yu <jack.yu@suse.com>
* feat: move health into a Components tab with the checks as sub-rows
The dashboard showed the summary table, then side tabs with a second
table for each component. It is now one table in a new Components tab
next to the Events tabs: one row per component, which opens to its
checks. Rows start closed, and the component name is a button so the
keyboard can open them. The tab only shows when the addon's resources
exist.
The table's own filter box replaces the severity dropdown. It only looks
at the table's own rows and the checks are in the sub-rows, so the rows
give it the text of their checks, a row only shows the checks it found,
and the rows it found open.
Ignoring a check moves from a popover, which cut off its Reason field
and Ignore button, to an RcModal that starts over each time it opens.
Signed-off-by: Marcelo Fukumoto <marcelo.fukumoto@suse.com>
* refactor: use RcButton for the component health buttons
The Ignore modal's button already was one. This moves the rest of them,
the row's Ignore, Restore, the "show more" links and the component name,
off the global btn classes.
Signed-off-by: Marcelo Fukumoto <marcelo.fukumoto@suse.com>
* refactor: manage one ignore rule per check from the row's actions
A check now has one rule, reached through the table's action menu: create
it when the check has none, view, edit or delete it when it has one. View
and edit use the same modal as create. This replaces the Ignore button and
the Restore links, which could only delete a whole rule and said the check
was restored when it wasn't.
The modal's section titles were the radio group's h3, as big as the modal's
own title. They follow what rancher/dashboard does in its forms now.
The actions follow what the user may do. The rules are only loaded with
their schema, and a list that fails no longer empties the table.
Signed-off-by: Marcelo Fukumoto <marcelo.fukumoto@suse.com>
* refactor: let the tables filter by themselves and show resources as chips
The filter had logic of its own on top of the table's. The nested table now
filters its rows the way the outer one does, with what is typed in the box.
Rows no longer open by themselves, which is how the other tables with
sub-rows behave. Expand All and Collapse All are there instead, copied from
what the table has from shell 3.0.15.
Affected resources are chips under the name the UI has for their type, with
the usual counter badge and the API version beside it. Ignored resources are
outlined instead of filled, and the text of an ignored check is muted. The
links use the shell's wording.
The component rows lose Last Updated. The summary only has one time, for its
counts as a whole, so it said nothing about the component in the row. They say
Error instead of Critical, as the checks inside them do. The Node column goes,
as nothing sets its label.
The Components tab shows the number of errors as a badge, as nothing else on
the page tells there are any.
Signed-off-by: Marcelo Fukumoto <marcelo.fukumoto@suse.com>
* fix: name the ignore rule after its check and make its expiry clear
- Name the rule the UI makes after its check, so Kubernetes refuses a
second one for the same check. The row's menu only manages that rule.
- Show the rule's current expiry above the durations, and the new one
under them once a duration is chosen. Edit starts with none chosen,
Save stays off until something changes, and a warning says when an
expired rule would stay expired.
- Delete the rule through the shell's delete prompt, like every other
delete.
- Say which list could not be loaded, instead of showing it as empty.
- Keep the full count of affected resources, say how many ignored ones
are left out of the list, and count them on Show ignored.
- Drop the checks' Last Updated, which is the time of their whole report.
- Leave out the row menu when no check has an action.
- Mark the Components tab with the shell's alert icon when there are
errors, with their number in its tooltip, instead of a badge.
Signed-off-by: Marcelo Fukumoto <marcelo.fukumoto@suse.com>
---------
Signed-off-by: Jack Yu <jack.yu@suse.com>
Signed-off-by: Marcelo Fukumoto <marcelo.fukumoto@suse.com>
Co-authored-by: Jack Yu <jack.yu@suse.com>
Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com>
Co-authored-by: Claude Sonnet 5.5 <noreply@anthropic.com>
* 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>
* 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>
---------
Signed-off-by: Marcelo Fukumoto <marcelo.fukumoto@suse.com>
* 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>
* perf: speed up the VM list with many VMs
The VM list scanned whole store lists for every row and re-evaluated the same values per row on every render and sort. With several hundred VMs this blocked the browser on sorting and on every VM update.
Performance:
- look up launcher pods and migrations through shared indexes (namespace/name -> resource) instead of scanning per row; the indexes are computed per store list, so they stay in sync with in-place store updates
- use the same migration lookup (getLatestMigration) in the VM model and on the VM detail page
- look up PVCs, PVs, VMIs and restore backups by id
- merge VMs and VMIs with a Set
- evaluate the VM state once when sorting by state
- check the unschedulable condition before the pod based state checks
- cache feature flag results and per-schema/per-setting values that are the same for every row
Bug fixes:
- the launcher pod map was never rebuilt, because the store keeps the same array
- pods, volumes and migrations of a VM with the same name in another namespace could be picked up
The order of the volumes of a VM (vm.volumes) now follows the VM spec instead of the store order. Nothing depends on it.
Measured in a synthetic setup, 100 rows per page, sorting by state (Chrome, dev build):
- ~490 VMs, ~500 PVCs/PVs: 1.9 s -> 1.0 s
- ~490 VMs, 600 PVs, 200 migrations: 6.0 s -> 0.7 s, main thread blocked during VM updates 78% -> 32%
With few volumes the gain is much smaller (8-20%).
Related to: https://github.com/harvester/harvester/issues/9513
Signed-off-by: Volker Theile <vtheile@suse.com>
* fix: read VM data from the store of the resource instead of a fixed one
The migrations of a VMI and the migration badge of the state column were read from the hardcoded `harvester` store. In the Rancher explorer (embedded and standalone) the data is loaded into the `cluster` store, so a running migration was shown neither in the VM state nor as badge.
The VM model remembered the store of the current product in a module variable on first use and never updated it. The same model is used in the Harvester product (`harvester` store) and in the Rancher explorer (`cluster` store), and Rancher keeps the page loaded when going from the explorer of a Harvester cluster to Virtualization Management and into the Harvester product. The VM list then read the VMIs, launcher pods, volumes and restores from the wrong store, and running VMs were shown as Starting until the page was reloaded.
Read the data from the store the resource lives in (`this.$getters`, in the formatter the store of the current product). In the Harvester product this is still the `harvester` store, so nothing changes there.
Not covered: volume details like the lock icon of encrypted volumes. The explorer uses the generic Rancher PVC model, which does not know them, and settings based checks (feature flags, backup target) are not loaded there either.
Related to: https://github.com/harvester/harvester/issues/11882
Signed-off-by: Volker Theile <vtheile@suse.com>
---------
Signed-off-by: Volker Theile <vtheile@suse.com>
Add an "Enable network boot (PXE)" option to bridge network interfaces and
a VM-level choice to place network boot devices before or after volumes.
The form now owns interface boot order: enabled NICs get sequential boot
orders ahead of or behind the volumes, and a stale bootOrder is no longer
inherited from the old spec.
This also fixes editing a VM whose interface bootOrder was set in YAML
(the documented workaround): the form used to renumber disks from 1 while
keeping the NIC's bootOrder, producing a duplicate that KubeVirt rejects.
The boot order shown on the VM, snapshot and backup detail pages now
includes network interfaces.
Related: harvester/harvester#3325
Signed-off-by: Alejandro Bonilla <abonilla@suse.com>
Co-authored-by: Claude Opus 5.5 <noreply@anthropic.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>
* 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>
* fix: hide Virtul machine migration tabs if forklift addon is not enabled
Signed-off-by: Andy Lee <andy.lee@suse.com>
* fix: rename advanced to configurations
Signed-off-by: Andy Lee <andy.lee@suse.com>
* fix: fixed column width
Signed-off-by: Andy Lee <andy.lee@suse.com>
* refactor: review comment
Signed-off-by: Andy Lee <andy.lee@suse.com>
* revert: power on background color
Signed-off-by: Andy Lee <andy.lee@suse.com>
---------
Signed-off-by: Andy Lee <andy.lee@suse.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>