From e520525fe73b88b7a9e74af0e373e5c01477b52d Mon Sep 17 00:00:00 2001 From: dahn Date: Wed, 1 May 2024 09:12:36 +0200 Subject: [PATCH 1/3] Use parameter dcId as wrapper to prevent NPE (#8986) --- .../engine/subsystem/api/storage/EndPointSelector.java | 2 +- .../cloudstack/storage/endpoint/DefaultEndPointSelector.java | 3 ++- 2 files changed, 3 insertions(+), 2 deletions(-) diff --git a/engine/api/src/main/java/org/apache/cloudstack/engine/subsystem/api/storage/EndPointSelector.java b/engine/api/src/main/java/org/apache/cloudstack/engine/subsystem/api/storage/EndPointSelector.java index ec8dfe633b5..4f2a69bc771 100644 --- a/engine/api/src/main/java/org/apache/cloudstack/engine/subsystem/api/storage/EndPointSelector.java +++ b/engine/api/src/main/java/org/apache/cloudstack/engine/subsystem/api/storage/EndPointSelector.java @@ -47,5 +47,5 @@ public interface EndPointSelector { EndPoint select(DataStore store, String downloadUrl); - EndPoint findSsvm(long dcId); + EndPoint findSsvm(Long dcId); } diff --git a/engine/storage/src/main/java/org/apache/cloudstack/storage/endpoint/DefaultEndPointSelector.java b/engine/storage/src/main/java/org/apache/cloudstack/storage/endpoint/DefaultEndPointSelector.java index bc16bafd7a9..ba1278f2fa0 100644 --- a/engine/storage/src/main/java/org/apache/cloudstack/storage/endpoint/DefaultEndPointSelector.java +++ b/engine/storage/src/main/java/org/apache/cloudstack/storage/endpoint/DefaultEndPointSelector.java @@ -338,7 +338,8 @@ public class DefaultEndPointSelector implements EndPointSelector { * Finds an SSVM that can be used to execute a command. * For zone-wide image store, use SSVM for that zone. For region-wide store, we can arbitrarily pick one SSVM to do the task. * */ - public EndPoint findSsvm(long dcId) { + @Override + public EndPoint findSsvm(Long dcId) { List ssAHosts = listUpAndConnectingSecondaryStorageVmHost(dcId); if (ssAHosts == null || ssAHosts.isEmpty()) { return null; From b91c3879c81d4a9d61b60cd33aa2244948dbdc60 Mon Sep 17 00:00:00 2001 From: Rohit Yadav Date: Wed, 1 May 2024 17:39:55 +0530 Subject: [PATCH 2/3] ui: add support to change Account role for admins (#9012) Signed-off-by: Rohit Yadav --- ui/public/locales/en.json | 1 + ui/src/config/section/account.js | 2 +- 2 files changed, 2 insertions(+), 1 deletion(-) diff --git a/ui/public/locales/en.json b/ui/public/locales/en.json index 265edb442a1..1f6a2057c49 100644 --- a/ui/public/locales/en.json +++ b/ui/public/locales/en.json @@ -1767,6 +1767,7 @@ "label.restore.volume.attach": "Restore volume and attach", "label.review": "Review", "label.role": "Role", +"label.roleid": "Role", "label.rolename": "Role", "label.roles": "Roles", "label.roletype": "Role Type", diff --git a/ui/src/config/section/account.js b/ui/src/config/section/account.js index 716417587c4..92897a33b12 100644 --- a/ui/src/config/section/account.js +++ b/ui/src/config/section/account.js @@ -91,7 +91,7 @@ export default { icon: 'edit-outlined', label: 'label.action.edit.account', dataView: true, - args: ['newname', 'account', 'domainid', 'networkdomain'], + args: ['newname', 'account', 'domainid', 'networkdomain', 'roleid'], mapping: { account: { value: (record) => { return record.name } From ea11128cb37ff7e5991c786b122e292fa10a38e2 Mon Sep 17 00:00:00 2001 From: Rene Peinthor Date: Mon, 6 May 2024 09:05:31 +0200 Subject: [PATCH 3/3] linstor: disconnect-disk also search for resource name in Linstor (#9035) disconnectPhysicalDisk(String, KVMStoragePool) seems to calls the plugin with the resource name instead of the device path, so we also have to search for resource names, while cleaning up. --- .../hypervisor/kvm/storage/LinstorStorageAdaptor.java | 7 ++++--- 1 file changed, 4 insertions(+), 3 deletions(-) diff --git a/plugins/storage/volume/linstor/src/main/java/com/cloud/hypervisor/kvm/storage/LinstorStorageAdaptor.java b/plugins/storage/volume/linstor/src/main/java/com/cloud/hypervisor/kvm/storage/LinstorStorageAdaptor.java index b38ab382a42..632b92c80fd 100644 --- a/plugins/storage/volume/linstor/src/main/java/com/cloud/hypervisor/kvm/storage/LinstorStorageAdaptor.java +++ b/plugins/storage/volume/linstor/src/main/java/com/cloud/hypervisor/kvm/storage/LinstorStorageAdaptor.java @@ -341,7 +341,7 @@ public class LinstorStorageAdaptor implements StorageAdaptor { null, null); - optRsc = getResourceByPath(resources, volumePath); + optRsc = getResourceByPathOrName(resources, volumePath); } catch (ApiException apiEx) { // couldn't query linstor controller s_logger.error(apiEx.getBestMessage()); @@ -401,9 +401,10 @@ public class LinstorStorageAdaptor implements StorageAdaptor { return false; } - private Optional getResourceByPath(final List resources, String path) { + private Optional getResourceByPathOrName( + final List resources, String path) { return resources.stream() - .filter(rsc -> rsc.getVolumes().stream() + .filter(rsc -> getLinstorRscName(path).equalsIgnoreCase(rsc.getName()) || rsc.getVolumes().stream() .anyMatch(v -> path.equals(v.getDevicePath()))) .findFirst(); }