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 e6fac9a4063..a621e8a076d 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 @@ -339,7 +339,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; 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 0ab51dbf112..e46a3ad8012 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 @@ -321,7 +321,7 @@ public class LinstorStorageAdaptor implements StorageAdaptor { null, null); - optRsc = getResourceByPath(resources, volumePath); + optRsc = getResourceByPathOrName(resources, volumePath); } catch (ApiException apiEx) { // couldn't query linstor controller logger.error(apiEx.getBestMessage()); @@ -381,9 +381,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(); } diff --git a/ui/public/locales/en.json b/ui/public/locales/en.json index 064b3533882..8ff510865a6 100644 --- a/ui/public/locales/en.json +++ b/ui/public/locales/en.json @@ -1786,6 +1786,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 }