From 5655acbbf3624e31152ff601622edbcf8b85f0e0 Mon Sep 17 00:00:00 2001 From: Abhisar Sinha <63767682+abh1sar@users.noreply.github.com> Date: Wed, 7 May 2025 22:17:09 +0530 Subject: [PATCH 1/4] Use special icon for sharedfs instance and prefix for sharedfs volumes --- .../lifecycle/StorageVmSharedFSLifeCycle.java | 25 +++++++++++++++---- ui/src/components/view/InfoCard.vue | 9 +++++-- ui/src/components/view/ListView.vue | 9 +++++-- 3 files changed, 34 insertions(+), 9 deletions(-) diff --git a/plugins/storage/sharedfs/storagevm/src/main/java/org/apache/cloudstack/storage/sharedfs/lifecycle/StorageVmSharedFSLifeCycle.java b/plugins/storage/sharedfs/storagevm/src/main/java/org/apache/cloudstack/storage/sharedfs/lifecycle/StorageVmSharedFSLifeCycle.java index 31159e7d3d95..ed26963cf819 100644 --- a/plugins/storage/sharedfs/storagevm/src/main/java/org/apache/cloudstack/storage/sharedfs/lifecycle/StorageVmSharedFSLifeCycle.java +++ b/plugins/storage/sharedfs/storagevm/src/main/java/org/apache/cloudstack/storage/sharedfs/lifecycle/StorageVmSharedFSLifeCycle.java @@ -140,13 +140,18 @@ private String getStorageVmConfig(final String fileSystem, final String hypervis return fsVmConfig; } - private String getStorageVmName(String fileShareName) { + private String getStorageVmPrefix(String fileShareName) { String prefix = String.format("%s-%s", SharedFSVmNamePrefix, fileShareName); - String suffix = Long.toHexString(System.currentTimeMillis()); - if (!NetUtils.verifyDomainNameLabel(prefix, true)) { prefix = prefix.replaceAll("[^a-zA-Z0-9-]", ""); } + return prefix; + } + + private String getStorageVmName(String fileShareName) { + String prefix = getStorageVmPrefix(fileShareName); + String suffix = Long.toHexString(System.currentTimeMillis()); + int nameLength = prefix.length() + suffix.length() + SharedFSVmNamePrefix.length(); if (nameLength > 63) { int prefixLength = prefix.length() - (nameLength - 63); @@ -236,8 +241,18 @@ public Pair deploySharedFS(SharedFS sharedFS, Long networkId, Long d Account owner = accountMgr.getActiveAccountById(sharedFS.getAccountId()); UserVm vm = deploySharedFSVM(sharedFS.getDataCenterId(), owner, List.of(networkId), sharedFS.getName(), sharedFS.getServiceOfferingId(), diskOfferingId, sharedFS.getFsType(), size, minIops, maxIops); - List volumes = volumeDao.findByInstanceAndType(vm.getId(), Volume.Type.DATADISK); - return new Pair<>(volumes.get(0).getId(), vm.getId()); + List volumes = volumeDao.findByInstance(vm.getId()); + VolumeVO dataVol = null; + for (VolumeVO vol : volumes) { + String volumeName = vol.getName(); + String updatedVolumeName = SharedFSVmNamePrefix + "-" + volumeName; + vol.setName(updatedVolumeName); + volumeDao.update(vol.getId(), vol); + if (vol.getVolumeType() == Volume.Type.DATADISK) { + dataVol = vol; + } + } + return new Pair<>(dataVol.getId(), vm.getId()); } @Override diff --git a/ui/src/components/view/InfoCard.vue b/ui/src/components/view/InfoCard.vue index 65c4d3ac0f5e..0620050a5fd0 100644 --- a/ui/src/components/view/InfoCard.vue +++ b/ui/src/components/view/InfoCard.vue @@ -30,7 +30,10 @@ - + + + + @@ -870,6 +873,7 @@ import UploadResourceIcon from '@/components/view/UploadResourceIcon' import eventBus from '@/config/eventBus' import ResourceIcon from '@/components/view/ResourceIcon' import ResourceLabel from '@/components/widgets/ResourceLabel' +import { FileTextOutlined } from '@ant-design/icons-vue' export default { name: 'InfoCard', @@ -881,7 +885,8 @@ export default { TooltipButton, UploadResourceIcon, ResourceIcon, - ResourceLabel + ResourceLabel, + FileTextOutlined }, props: { resource: { diff --git a/ui/src/components/view/ListView.vue b/ui/src/components/view/ListView.vue index 3d41e01bb1c5..cf8ddc88ee96 100644 --- a/ui/src/components/view/ListView.vue +++ b/ui/src/components/view/ListView.vue @@ -41,7 +41,10 @@