mirror of
https://github.com/harvester/harvester-ui-extension.git
synced 2026-08-16 12:49:14 +00:00
Merge the new APIs
Signed-off-by: Marcelo Fukumoto <marcelo.fukumoto@suse.com>
This commit is contained in:
parent
d195c5dd18
commit
d4f59a04be
@ -11,7 +11,6 @@ import { SCHEMA, STORAGE_CLASS, NETWORK_ATTACHMENT } from '@shell/config/types';
|
|||||||
import { useI18n } from '@shell/composables/useI18n';
|
import { useI18n } from '@shell/composables/useI18n';
|
||||||
import { HCI } from '../../../../types';
|
import { HCI } from '../../../../types';
|
||||||
import { PRODUCT_NAME } from '../../../../config/harvester';
|
import { PRODUCT_NAME } from '../../../../config/harvester';
|
||||||
import vmData from '../../../../utils/vms.json';
|
|
||||||
|
|
||||||
const schema = {
|
const schema = {
|
||||||
id: HCI.FORKLIFT_NETWORK_MAP,
|
id: HCI.FORKLIFT_NETWORK_MAP,
|
||||||
@ -335,11 +334,54 @@ const init = async() => {
|
|||||||
if (vmsParam) {
|
if (vmsParam) {
|
||||||
try {
|
try {
|
||||||
const vmIds = JSON.parse(vmsParam);
|
const vmIds = JSON.parse(vmsParam);
|
||||||
|
const baseUrl = `https://forklift-apir.13.48.147.135.sslip.io/providers/vsphere/67e67481-48f1-4d9b-8fb6-b4c5c58d3232`;
|
||||||
|
|
||||||
|
const [allVms, networksData, datastoresData] = await Promise.all([
|
||||||
|
fetch(`${ baseUrl }/vms`).then((r) => r.json()).catch(() => []),
|
||||||
|
fetch(`${ baseUrl }/networks`).then((r) => r.json()).catch(() => []),
|
||||||
|
fetch(`${ baseUrl }/datastores`).then((r) => r.json()).catch(() => []),
|
||||||
|
]);
|
||||||
|
|
||||||
|
const networkNameMap = (Array.isArray(networksData) ? networksData : []).reduce((map, n) => {
|
||||||
|
map[n.id] = n.name;
|
||||||
|
|
||||||
|
return map;
|
||||||
|
}, {});
|
||||||
|
const datastoreNameMap = (Array.isArray(datastoresData) ? datastoresData : []).reduce((map, d) => {
|
||||||
|
map[d.id] = d.name;
|
||||||
|
|
||||||
|
return map;
|
||||||
|
}, {});
|
||||||
|
|
||||||
|
const vmList = Array.isArray(allVms) ? allVms : (allVms?.data || []);
|
||||||
|
|
||||||
vms.value = vmIds.map((id) => {
|
vms.value = vmIds.map((id) => {
|
||||||
const found = vmData.find((vm) => vm.id === id);
|
const found = vmList.find((vm) => vm.id === id);
|
||||||
|
|
||||||
return found || {
|
if (found) {
|
||||||
|
// Resolve network names
|
||||||
|
if (found.networks) {
|
||||||
|
found.networks = found.networks.map((n) => ({
|
||||||
|
...n,
|
||||||
|
name: n.name || networkNameMap[n.id] || n.id,
|
||||||
|
}));
|
||||||
|
}
|
||||||
|
|
||||||
|
// Resolve datastore names
|
||||||
|
if (found.disks) {
|
||||||
|
found.disks = found.disks.map((d) => ({
|
||||||
|
...d,
|
||||||
|
datastore: d.datastore ? {
|
||||||
|
...d.datastore,
|
||||||
|
name: d.datastore.name || datastoreNameMap[d.datastore.id] || d.datastore.id,
|
||||||
|
} : d.datastore,
|
||||||
|
}));
|
||||||
|
}
|
||||||
|
|
||||||
|
return found;
|
||||||
|
}
|
||||||
|
|
||||||
|
return {
|
||||||
id, name: id, networks: [], disks: []
|
id, name: id, networks: [], disks: []
|
||||||
};
|
};
|
||||||
});
|
});
|
||||||
|
|||||||
@ -12,7 +12,6 @@ import { SCHEMA } from '@shell/config/types';
|
|||||||
import { useI18n } from '@shell/composables/useI18n';
|
import { useI18n } from '@shell/composables/useI18n';
|
||||||
import { HCI } from '../../../../types';
|
import { HCI } from '../../../../types';
|
||||||
import { PRODUCT_NAME } from '../../../../config/harvester';
|
import { PRODUCT_NAME } from '../../../../config/harvester';
|
||||||
import vmData from '../../../../utils/vms.json';
|
|
||||||
|
|
||||||
const schema = {
|
const schema = {
|
||||||
id: HCI.FORKLIFT_PLAN,
|
id: HCI.FORKLIFT_PLAN,
|
||||||
@ -228,9 +227,13 @@ const init = async() => {
|
|||||||
if (vmsParam) {
|
if (vmsParam) {
|
||||||
try {
|
try {
|
||||||
const vmIds = JSON.parse(vmsParam);
|
const vmIds = JSON.parse(vmsParam);
|
||||||
|
const baseUrl = `https://forklift-apir.13.48.147.135.sslip.io/providers/vsphere/67e67481-48f1-4d9b-8fb6-b4c5c58d3232`;
|
||||||
|
|
||||||
|
const allVms = await fetch(`${ baseUrl }/vms`).then((r) => r.json()).catch(() => []);
|
||||||
|
const vmList = Array.isArray(allVms) ? allVms : (allVms?.data || []);
|
||||||
|
|
||||||
vms.value = vmIds.map((id) => {
|
vms.value = vmIds.map((id) => {
|
||||||
const found = vmData.find((vm) => vm.id === id);
|
const found = vmList.find((vm) => vm.id === id);
|
||||||
|
|
||||||
return found || {
|
return found || {
|
||||||
id, name: id, networks: [], disks: [], cpuCount: 0, memoryMB: 0, guestName: ''
|
id, name: id, networks: [], disks: [], cpuCount: 0, memoryMB: 0, guestName: ''
|
||||||
|
|||||||
@ -10,7 +10,6 @@ import { SCHEMA } from '@shell/config/types';
|
|||||||
import { useI18n } from '@shell/composables/useI18n';
|
import { useI18n } from '@shell/composables/useI18n';
|
||||||
import { HCI } from '../../../../types';
|
import { HCI } from '../../../../types';
|
||||||
import { PRODUCT_NAME } from '../../../../config/harvester';
|
import { PRODUCT_NAME } from '../../../../config/harvester';
|
||||||
import vmData from '../../../../utils/vms.json';
|
|
||||||
|
|
||||||
const schema = {
|
const schema = {
|
||||||
id: HCI.FORKLIFT_PROVIDER,
|
id: HCI.FORKLIFT_PROVIDER,
|
||||||
@ -33,6 +32,8 @@ const discoveredVMs = ref([]);
|
|||||||
const selectedVMs = ref([]);
|
const selectedVMs = ref([]);
|
||||||
const tableRows = ref([]);
|
const tableRows = ref([]);
|
||||||
const loading = ref(true);
|
const loading = ref(true);
|
||||||
|
const networkMap = ref({});
|
||||||
|
const datastoreMap = ref({});
|
||||||
|
|
||||||
const providerName = computed(() => provider.value?.metadata?.name || route.query.provider || '');
|
const providerName = computed(() => provider.value?.metadata?.name || route.query.provider || '');
|
||||||
const vmCount = computed(() => discoveredVMs.value.length);
|
const vmCount = computed(() => discoveredVMs.value.length);
|
||||||
@ -100,7 +101,7 @@ const buildTableRows = () => {
|
|||||||
|
|
||||||
if (vm.networks && vm.networks.length > 0) {
|
if (vm.networks && vm.networks.length > 0) {
|
||||||
networks = vm.networks.map((n) => ({
|
networks = vm.networks.map((n) => ({
|
||||||
name: n.name || n.id || n,
|
name: n.name || networkMap.value[n.id] || n.id || n,
|
||||||
id: n.id || '',
|
id: n.id || '',
|
||||||
vlanId: n.vlanId || '',
|
vlanId: n.vlanId || '',
|
||||||
}));
|
}));
|
||||||
@ -117,7 +118,7 @@ const buildTableRows = () => {
|
|||||||
if (dsId && !seen.has(dsId)) {
|
if (dsId && !seen.has(dsId)) {
|
||||||
seen.add(dsId);
|
seen.add(dsId);
|
||||||
datastores.push({
|
datastores.push({
|
||||||
name: d.datastore?.name || dsId,
|
name: d.datastore?.name || datastoreMap.value[dsId] || dsId,
|
||||||
id: d.datastore?.id || '',
|
id: d.datastore?.id || '',
|
||||||
type: d.datastore?.type || '',
|
type: d.datastore?.type || '',
|
||||||
capacity: d.capacity || 0,
|
capacity: d.capacity || 0,
|
||||||
@ -197,18 +198,38 @@ const init = async() => {
|
|||||||
|
|
||||||
if (provider.value) {
|
if (provider.value) {
|
||||||
try {
|
try {
|
||||||
const inventoryType = 'forklift-inventory.konveyor.io.vspherevm';
|
const baseUrl = `https://forklift-apir.13.48.147.135.sslip.io/providers/vsphere/67e67481-48f1-4d9b-8fb6-b4c5c58d3232`;
|
||||||
|
|
||||||
discoveredVMs.value = await store.dispatch(`${ inStore }/findAll`, { type: inventoryType });
|
const [vmsResp, networksResp, datastoresResp] = await Promise.all([
|
||||||
|
fetch(`${ baseUrl }/vms`).then((r) => r.json()),
|
||||||
|
fetch(`${ baseUrl }/networks`).then((r) => r.json()).catch(() => []),
|
||||||
|
fetch(`${ baseUrl }/datastores`).then((r) => r.json()).catch(() => []),
|
||||||
|
]);
|
||||||
|
|
||||||
|
if (Array.isArray(vmsResp)) {
|
||||||
|
discoveredVMs.value = vmsResp;
|
||||||
|
} else if (vmsResp?.data && Array.isArray(vmsResp.data)) {
|
||||||
|
discoveredVMs.value = vmsResp.data;
|
||||||
|
}
|
||||||
|
|
||||||
|
const networks = Array.isArray(networksResp) ? networksResp : (networksResp?.data || []);
|
||||||
|
const datastores = Array.isArray(datastoresResp) ? datastoresResp : (datastoresResp?.data || []);
|
||||||
|
|
||||||
|
networkMap.value = networks.reduce((map, n) => {
|
||||||
|
map[n.id] = n.name;
|
||||||
|
|
||||||
|
return map;
|
||||||
|
}, {});
|
||||||
|
datastoreMap.value = datastores.reduce((map, d) => {
|
||||||
|
map[d.id] = d.name;
|
||||||
|
|
||||||
|
return map;
|
||||||
|
}, {});
|
||||||
} catch (e) {
|
} catch (e) {
|
||||||
discoveredVMs.value = [];
|
discoveredVMs.value = [];
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
if (discoveredVMs.value.length === 0) {
|
|
||||||
discoveredVMs.value = vmData;
|
|
||||||
}
|
|
||||||
|
|
||||||
tableRows.value = buildTableRows();
|
tableRows.value = buildTableRows();
|
||||||
loading.value = false;
|
loading.value = false;
|
||||||
};
|
};
|
||||||
|
|||||||
Loading…
x
Reference in New Issue
Block a user