mirror of
https://github.com/harvester/harvester-ui-extension.git
synced 2026-08-16 04:39:15 +00:00
* feat: forklift poc first commit Signed-off-by: Marcelo Fukumoto <marcelo.fukumoto@suse.com> * feat: add migration and plan detail pages with progress tracking Signed-off-by: Marcelo Fukumoto <marcelo.fukumoto@suse.com> * feat(forklift): UI based on the FIGMA Signed-off-by: Marcelo Fukumoto <marcelo.fukumoto@suse.com> * feat(forklift): Fixed config based on new figma changes Signed-off-by: Marcelo Fukumoto <marcelo.fukumoto@suse.com> * feat(forklift): New changes added based on new figma Signed-off-by: Marcelo Fukumoto <marcelo.fukumoto@suse.com> * feat(forklift): Add the succeded state Signed-off-by: Marcelo Fukumoto <marcelo.fukumoto@suse.com> * Merge the new APIs Signed-off-by: Marcelo Fukumoto <marcelo.fukumoto@suse.com> * feat(forklift): Applied fix to select the proper data on network. Added condition to show critical Signed-off-by: Marcelo Fukumoto <marcelo.fukumoto@suse.com> * feat(forklift): Added icons, critical state, fix grids, action button Signed-off-by: Marcelo Fukumoto <marcelo.fukumoto@suse.com> * feat(forklift): Change to use the proper provider instead of a hardcoded Signed-off-by: Marcelo Fukumoto <marcelo.fukumoto@suse.com> * feat(forklift): Added pagination UI Signed-off-by: Marcelo Fukumoto <marcelo.fukumoto@suse.com> * feat(forklift): FIxed the routing for the extension Signed-off-by: Marcelo Fukumoto <marcelo.fukumoto@suse.com> * feat(forklift): route and router doesnt work properly on extensions Signed-off-by: Marcelo Fukumoto <marcelo.fukumoto@suse.com> * feat(forklift): fixed to fix the icon on extension Signed-off-by: Marcelo Fukumoto <marcelo.fukumoto@suse.com> * feat(forklift): Added overflow hidden to mapping target list Signed-off-by: Marcelo Fukumoto <marcelo.fukumoto@suse.com> * feat(forklift): Added better handling on the saving and testing Signed-off-by: Marcelo Fukumoto <marcelo.fukumoto@suse.com> * feat(forklift): Remove test flags Signed-off-by: Marcelo Fukumoto <marcelo.fukumoto@suse.com> * feat(forklift): Changed based on review Signed-off-by: Marcelo Fukumoto <marcelo.fukumoto@suse.com> * feat(forklift): fixed title and button Signed-off-by: Marcelo Fukumoto <marcelo.fukumoto@suse.com> * feat(forklift): Design changes Signed-off-by: Marcelo Fukumoto <marcelo.fukumoto@suse.com> * feat(forklift): Changed to Wizard Signed-off-by: Marcelo Fukumoto <marcelo.fukumoto@suse.com> * feat(forklift): added the provider wizard Signed-off-by: Marcelo Fukumoto <marcelo.fukumoto@suse.com> * feat(forklift): Fixed some UI changes Signed-off-by: Marcelo Fukumoto <marcelo.fukumoto@suse.com> * feat(forklift): Removed wrong configs used for testing Signed-off-by: Marcelo Fukumoto <marcelo.fukumoto@suse.com> * feat(forklift): update size Signed-off-by: Marcelo Fukumoto <marcelo.fukumoto@suse.com> * feat(forklift): small fixes Signed-off-by: Marcelo Fukumoto <marcelo.fukumoto@suse.com> * feat(forklift): small fixes after Copilot Signed-off-by: Marcelo Fukumoto <marcelo.fukumoto@suse.com> * feat(forklift): small fixes after Copilot Signed-off-by: Marcelo Fukumoto <marcelo.fukumoto@suse.com> * feat(forklift): reverted settings.json changes Signed-off-by: Marcelo Fukumoto <marcelo.fukumoto@suse.com> * feat(forklift): small fixes after Copilot Signed-off-by: Marcelo Fukumoto <marcelo.fukumoto@suse.com> * feat(forklift): Fix the way it is registered Signed-off-by: Marcelo Fukumoto <marcelo.fukumoto@suse.com> * feat(forklift): Fixed the type for VMware Signed-off-by: Marcelo Fukumoto <marcelo.fukumoto@suse.com> * feat(forklift): small changes before rebase Signed-off-by: Marcelo Fukumoto <marcelo.fukumoto@suse.com> * feat: Added new API for the vms Signed-off-by: Marcelo Fukumoto <marcelo.fukumoto@suse.com> * feat: Fix some labels Signed-off-by: Marcelo Fukumoto <marcelo.fukumoto@suse.com> * feat: Added some final fixes to structure Signed-off-by: Marcelo Fukumoto <marcelo.fukumoto@suse.com> * feat: added loading to provider steps Signed-off-by: Marcelo Fukumoto <marcelo.fukumoto@suse.com> * feat: added comments from copilot review Signed-off-by: Marcelo Fukumoto <marcelo.fukumoto@suse.com> --------- Signed-off-by: Marcelo Fukumoto <marcelo.fukumoto@suse.com>
81 lines
2.3 KiB
JavaScript
81 lines
2.3 KiB
JavaScript
// Shared helpers for the Forklift VM-migration feature.
|
|
// Keep the map-spec builders here so the wizard step and the review step
|
|
// (and any future edit flow) stay in sync instead of drifting apart.
|
|
|
|
export const FORKLIFT_API_VERSION = 'forklift.konveyor.io/v1beta1';
|
|
|
|
/**
|
|
* Decode a base64 value stored in a k8s Secret, tolerating malformed input.
|
|
*/
|
|
export function decodeSecretValue(val) {
|
|
try {
|
|
return atob(val || '');
|
|
} catch (e) {
|
|
return '';
|
|
}
|
|
}
|
|
|
|
/**
|
|
* Bytes → whole GiB (rounded). Returns 0 for falsy input.
|
|
*/
|
|
export function bytesToGB(bytes) {
|
|
return Math.round((bytes || 0) / (1024 * 1024 * 1024));
|
|
}
|
|
|
|
/**
|
|
* MiB → whole GiB (rounded). Returns 0 for falsy input.
|
|
*/
|
|
export function mbToGB(mb) {
|
|
return Math.round((mb || 0) / 1024);
|
|
}
|
|
|
|
/**
|
|
* Build the `spec.map` entries for a Forklift NetworkMap from wizard entries.
|
|
* Entries without a chosen target are dropped so we never emit an invalid
|
|
* multus destination with an empty name.
|
|
*
|
|
* @param {Array} entries network mapping entries ({ name, id, target })
|
|
* @param {string} defaultNamespace namespace to use when the target has no `ns/` prefix
|
|
*/
|
|
export function buildNetworkMapEntries(entries = [], defaultNamespace) {
|
|
return entries
|
|
.filter((entry) => !!entry.target)
|
|
.map((entry) => {
|
|
const source = { name: entry.name, id: entry.id };
|
|
|
|
if (entry.target === 'pod') {
|
|
return { source, destination: { type: 'pod' } };
|
|
}
|
|
|
|
if (entry.target === 'ignored') {
|
|
return { source, destination: { type: 'ignored' } };
|
|
}
|
|
|
|
const parts = entry.target.split('/');
|
|
const name = parts.length > 1 ? parts[1] : parts[0];
|
|
const namespace = parts.length > 1 ? parts[0] : defaultNamespace;
|
|
|
|
return {
|
|
source,
|
|
destination: {
|
|
type: 'multus', name, namespace
|
|
},
|
|
};
|
|
});
|
|
}
|
|
|
|
/**
|
|
* Build the `spec.map` entries for a Forklift StorageMap from wizard entries.
|
|
* Entries without a chosen target are dropped.
|
|
*
|
|
* @param {Array} entries storage mapping entries ({ name, id, target })
|
|
*/
|
|
export function buildStorageMapEntries(entries = []) {
|
|
return entries
|
|
.filter((entry) => !!entry.target)
|
|
.map((entry) => ({
|
|
source: { name: entry.name, id: entry.id },
|
|
destination: { storageClass: entry.target },
|
|
}));
|
|
}
|