From eaff6f0e5f9fb3635f78bb97181b09c42f673acc Mon Sep 17 00:00:00 2001 From: Abhishek Kumar Date: Sat, 6 Sep 2025 13:18:35 +0530 Subject: [PATCH] server: consistent domainpath in api responses Currently, some APIs return domainpath as 'ROOT/domain1/domain2' while other return it as '/domain1/domain2'. This PR makes the response consistent. Signed-off-by: Abhishek Kumar --- .../java/com/cloud/api/ApiResponseHelper.java | 20 +++++++++++-------- .../api/query/dao/AccountJoinDaoImpl.java | 5 ++--- .../api/query/dao/AsyncJobJoinDaoImpl.java | 5 ++--- .../api/query/dao/DomainJoinDaoImpl.java | 5 ++--- 4 files changed, 18 insertions(+), 17 deletions(-) diff --git a/server/src/main/java/com/cloud/api/ApiResponseHelper.java b/server/src/main/java/com/cloud/api/ApiResponseHelper.java index 64d6e8b6929d..12dde51cb85d 100644 --- a/server/src/main/java/com/cloud/api/ApiResponseHelper.java +++ b/server/src/main/java/com/cloud/api/ApiResponseHelper.java @@ -530,6 +530,15 @@ public class ApiResponseHelper implements ResponseGenerator { @Inject ResourceIconManager resourceIconManager; + public static String getPrettyDomainPath(String path) { + if (path == null) { + return null; + } + StringBuilder domainPath = new StringBuilder("ROOT"); + (domainPath.append(path)).deleteCharAt(domainPath.length() - 1); + return domainPath.toString(); + } + @Override public UserResponse createUserResponse(User user) { UserAccountJoinVO vUser = ApiDBUtils.newUserView(user); @@ -567,9 +576,7 @@ public DomainResponse createDomainResponse(Domain domain) { if (parentDomain != null) { domainResponse.setParentDomainId(parentDomain.getUuid()); } - StringBuilder domainPath = new StringBuilder("ROOT"); - (domainPath.append(domain.getPath())).deleteCharAt(domainPath.length() - 1); - domainResponse.setPath(domainPath.toString()); + domainResponse.setPath(getPrettyDomainPath(domain.getPath())); if (domain.getParent() != null) { domainResponse.setParentDomainName(ApiDBUtils.findDomainById(domain.getParent()).getName()); } @@ -2761,10 +2768,7 @@ public NetworkResponse createNetworkResponse(ResponseView view, Network network) Domain domain = ApiDBUtils.findDomainById(domainNetworkDetails.first()); if (domain != null) { response.setDomainId(domain.getUuid()); - - StringBuilder domainPath = new StringBuilder("ROOT"); - (domainPath.append(domain.getPath())).deleteCharAt(domainPath.length() - 1); - response.setDomainPath(domainPath.toString()); + response.setDomainPath(getPrettyDomainPath(domain.getPath())); } } response.setSubdomainAccess(domainNetworkDetails.second()); @@ -3049,7 +3053,7 @@ private void populateOwner(ControlledEntityResponse response, ControlledEntity o Domain domain = ApiDBUtils.findDomainById(object.getDomainId()); response.setDomainId(domain.getUuid()); response.setDomainName(domain.getName()); - response.setDomainPath(domain.getPath()); + response.setDomainPath(getPrettyDomainPath(domain.getPath())); } private void populateOwner(ControlledViewEntityResponse response, ControlledEntity object) { diff --git a/server/src/main/java/com/cloud/api/query/dao/AccountJoinDaoImpl.java b/server/src/main/java/com/cloud/api/query/dao/AccountJoinDaoImpl.java index 9a301d440a99..de66b80ca555 100644 --- a/server/src/main/java/com/cloud/api/query/dao/AccountJoinDaoImpl.java +++ b/server/src/main/java/com/cloud/api/query/dao/AccountJoinDaoImpl.java @@ -32,6 +32,7 @@ import org.apache.cloudstack.api.response.UserResponse; import com.cloud.api.ApiDBUtils; +import com.cloud.api.ApiResponseHelper; import com.cloud.api.query.ViewResponseHelper; import com.cloud.api.query.vo.AccountJoinVO; import com.cloud.api.query.vo.UserAccountJoinVO; @@ -74,9 +75,7 @@ public AccountResponse newAccountResponse(ResponseView view, EnumSet