diff --git a/api/src/main/java/org/apache/cloudstack/api/command/user/vpn/AddVpnUserCmd.java b/api/src/main/java/org/apache/cloudstack/api/command/user/vpn/AddVpnUserCmd.java index 59ba7e94b04d..781edff52e3e 100644 --- a/api/src/main/java/org/apache/cloudstack/api/command/user/vpn/AddVpnUserCmd.java +++ b/api/src/main/java/org/apache/cloudstack/api/command/user/vpn/AddVpnUserCmd.java @@ -28,7 +28,6 @@ import org.apache.cloudstack.api.response.VpnUsersResponse; import org.apache.cloudstack.context.CallContext; -import com.cloud.domain.Domain; import com.cloud.event.EventTypes; import com.cloud.network.VpnUser; import com.cloud.user.Account; @@ -110,7 +109,6 @@ public String getEventType() { @Override public void execute() { VpnUser vpnUser = _entityMgr.findById(VpnUser.class, getEntityId()); - Account account = _entityMgr.findById(Account.class, vpnUser.getAccountId()); try { if (!_ravService.applyVpnUsers(vpnUser.getAccountId(), userName)) { throw new ServerApiException(ApiErrorCode.INTERNAL_ERROR, "Failed to add vpn user"); @@ -118,24 +116,10 @@ public void execute() { } catch (Exception ex) { throw new ServerApiException(ApiErrorCode.INTERNAL_ERROR, ex.getMessage()); } - - VpnUsersResponse vpnResponse = new VpnUsersResponse(); - vpnResponse.setId(vpnUser.getUuid()); - vpnResponse.setUserName(vpnUser.getUsername()); - vpnResponse.setAccountName(account.getAccountName()); // re-retrieve the vpnuser, as the call to `applyVpnUsers` might have changed the state vpnUser = _entityMgr.findById(VpnUser.class, getEntityId()); - vpnResponse.setState(vpnUser.getState().toString()); - - Domain domain = _entityMgr.findById(Domain.class, account.getDomainId()); - if (domain != null) { - vpnResponse.setDomainId(domain.getUuid()); - vpnResponse.setDomainName(domain.getName()); - vpnResponse.setDomainPath(domain.getPath()); - } - + VpnUsersResponse vpnResponse = _responseGenerator.createVpnUserResponse(vpnUser); vpnResponse.setResponseName(getCommandName()); - vpnResponse.setObjectName("vpnuser"); setResponseObject(vpnResponse); } diff --git a/api/src/main/java/org/apache/cloudstack/api/response/UserVmResponse.java b/api/src/main/java/org/apache/cloudstack/api/response/UserVmResponse.java index ca5bd09a9aa8..29681b5e38fc 100644 --- a/api/src/main/java/org/apache/cloudstack/api/response/UserVmResponse.java +++ b/api/src/main/java/org/apache/cloudstack/api/response/UserVmResponse.java @@ -41,7 +41,7 @@ @SuppressWarnings("unused") @EntityReference(value = {VirtualMachine.class, UserVm.class, VirtualRouter.class}) -public class UserVmResponse extends BaseResponseWithTagInformation implements ControlledEntityResponse, SetResourceIconResponse { +public class UserVmResponse extends BaseResponseWithTagInformation implements ControlledViewEntityResponse, SetResourceIconResponse { @SerializedName(ApiConstants.ID) @Param(description = "the ID of the virtual machine") private String id; diff --git a/plugins/integrations/kubernetes-service/src/main/java/com/cloud/kubernetes/cluster/KubernetesClusterManagerImpl.java b/plugins/integrations/kubernetes-service/src/main/java/com/cloud/kubernetes/cluster/KubernetesClusterManagerImpl.java index dc092608ff3a..3fc716df9368 100644 --- a/plugins/integrations/kubernetes-service/src/main/java/com/cloud/kubernetes/cluster/KubernetesClusterManagerImpl.java +++ b/plugins/integrations/kubernetes-service/src/main/java/com/cloud/kubernetes/cluster/KubernetesClusterManagerImpl.java @@ -118,6 +118,7 @@ import org.apache.logging.log4j.Level; import com.cloud.api.ApiDBUtils; +import com.cloud.api.ApiResponseHelper; import com.cloud.api.query.dao.NetworkOfferingJoinDao; import com.cloud.api.query.dao.TemplateJoinDao; import com.cloud.api.query.dao.UserVmJoinDao; @@ -135,7 +136,6 @@ import com.cloud.dc.dao.DataCenterDao; import com.cloud.dc.dao.DedicatedResourceDao; import com.cloud.deploy.DeployDestination; -import com.cloud.domain.Domain; import com.cloud.event.ActionEvent; import com.cloud.exception.ConcurrentOperationException; import com.cloud.exception.InsufficientCapacityException; @@ -796,18 +796,7 @@ public KubernetesClusterResponse createKubernetesClusterResponse(long kubernetes response.setKubernetesVersionId(version.getUuid()); response.setKubernetesVersionName(version.getName()); } - Account account = ApiDBUtils.findAccountById(kubernetesCluster.getAccountId()); - if (account.getType() == Account.Type.PROJECT) { - Project project = ApiDBUtils.findProjectByProjectAccountId(account.getId()); - response.setProjectId(project.getUuid()); - response.setProjectName(project.getName()); - } else { - response.setAccountName(account.getAccountName()); - } - Domain domain = ApiDBUtils.findDomainById(kubernetesCluster.getDomainId()); - response.setDomainId(domain.getUuid()); - response.setDomainName(domain.getName()); - response.setDomainPath(domain.getPath()); + ApiResponseHelper.populateOwner(response, kubernetesCluster); response.setKeypair(kubernetesCluster.getKeyPair()); response.setState(kubernetesCluster.getState().toString()); response.setCores(String.valueOf(kubernetesCluster.getCores())); diff --git a/plugins/integrations/kubernetes-service/src/main/java/org/apache/cloudstack/api/response/KubernetesClusterResponse.java b/plugins/integrations/kubernetes-service/src/main/java/org/apache/cloudstack/api/response/KubernetesClusterResponse.java index b811f4f9dcbd..b38fdcbc49e4 100644 --- a/plugins/integrations/kubernetes-service/src/main/java/org/apache/cloudstack/api/response/KubernetesClusterResponse.java +++ b/plugins/integrations/kubernetes-service/src/main/java/org/apache/cloudstack/api/response/KubernetesClusterResponse.java @@ -30,7 +30,7 @@ @SuppressWarnings("unused") @EntityReference(value = {KubernetesCluster.class}) -public class KubernetesClusterResponse extends BaseResponseWithAnnotations implements ControlledEntityResponse { +public class KubernetesClusterResponse extends BaseResponseWithAnnotations implements ControlledViewEntityResponse { @SerializedName(ApiConstants.ID) @Param(description = "the id of the Kubernetes cluster") private String id; diff --git a/server/src/main/java/com/cloud/api/ApiResponseHelper.java b/server/src/main/java/com/cloud/api/ApiResponseHelper.java index 64d6e8b6929d..ab1f8230ab22 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()); } @@ -822,21 +829,6 @@ public VMSnapshotResponse createVMSnapshotResponse(VMSnapshot vmSnapshot) { } } populateOwner(vmSnapshotResponse, vmSnapshot); - Project project = ApiDBUtils.findProjectByProjectAccountId(vmSnapshot.getAccountId()); - if (project != null) { - vmSnapshotResponse.setProjectId(project.getUuid()); - vmSnapshotResponse.setProjectName(project.getName()); - } - Account account = ApiDBUtils.findAccountById(vmSnapshot.getAccountId()); - if (account != null) { - vmSnapshotResponse.setAccountName(account.getAccountName()); - } - DomainVO domain = ApiDBUtils.findDomainById(vmSnapshot.getDomainId()); - if (domain != null) { - vmSnapshotResponse.setDomainId(domain.getUuid()); - vmSnapshotResponse.setDomainName(domain.getName()); - vmSnapshotResponse.setDomainPath(domain.getPath()); - } List tags = _resourceTagDao.listBy(vmSnapshot.getId(), ResourceObjectType.VMSnapshot); List tagResponses = new ArrayList(); @@ -2350,18 +2342,7 @@ public SecurityGroupResponse createSecurityGroupResponseFromSecurityGroupRule(Li response.setName(securityGroup.getName()); response.setDescription(securityGroup.getDescription()); - Account account = securiytGroupAccounts.get(securityGroup.getAccountId()); - - if (securityGroup.getAccountType() == Account.Type.PROJECT) { - response.setProjectId(securityGroup.getProjectUuid()); - response.setProjectName(securityGroup.getProjectName()); - } else { - response.setAccountName(securityGroup.getAccountName()); - } - - response.setDomainId(securityGroup.getDomainUuid()); - response.setDomainName(securityGroup.getDomainName()); - response.setDomainPath(securityGroup.getDomainPath()); + populateOwner(response, securityGroup); for (SecurityRule securityRule : securityRules) { SecurityGroupRuleResponse securityGroupData = new SecurityGroupRuleResponse(); @@ -2758,32 +2739,18 @@ public NetworkResponse createNetworkResponse(ResponseView view, Network network) // get domain from network_domain table Pair domainNetworkDetails = ApiDBUtils.getDomainNetworkDetails(network.getId()); if (domainNetworkDetails.first() != null) { - 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()); - } + populateDomain(response, domainNetworkDetails.first()); } response.setSubdomainAccess(domainNetworkDetails.second()); } Long dedicatedDomainId = ApiDBUtils.getDedicatedNetworkDomain(network.getId()); if (dedicatedDomainId != null) { - Domain domain = ApiDBUtils.findDomainById(dedicatedDomainId); - if (domain != null) { - response.setDomainId(domain.getUuid()); - response.setDomainName(domain.getName()); - response.setDomainPath(domain.getPath()); - } - + populateDomain(response, dedicatedDomainId); } response.setSpecifyIpRanges(network.getSpecifyIpRanges()); - setVpcIdInResponse(network.getVpcId(), response::setVpcId, response::setVpcName); setResponseAssociatedNetworkInformation(response, network.getId()); @@ -3045,14 +3012,10 @@ private void populateOwner(ControlledEntityResponse response, ControlledEntity o } else { response.setAccountName(account.getAccountName()); } - - Domain domain = ApiDBUtils.findDomainById(object.getDomainId()); - response.setDomainId(domain.getUuid()); - response.setDomainName(domain.getName()); - response.setDomainPath(domain.getPath()); + populateDomain(response, object.getDomainId()); } - private void populateOwner(ControlledViewEntityResponse response, ControlledEntity object) { + public static void populateOwner(ControlledViewEntityResponse response, ControlledEntity object) { Account account = ApiDBUtils.findAccountById(object.getAccountId()); if (account.getType() == Account.Type.PROJECT) { @@ -3064,10 +3027,7 @@ private void populateOwner(ControlledViewEntityResponse response, ControlledEnti response.setAccountName(account.getAccountName()); } - Domain domain = ApiDBUtils.findDomainById(object.getDomainId()); - response.setDomainId(domain.getUuid()); - response.setDomainName(domain.getName()); - response.setDomainPath(domain.getPath()); + populateDomain(response, object.getDomainId()); } public static void populateOwner(ControlledViewEntityResponse response, ControlledViewEntity object) { @@ -3081,7 +3041,7 @@ public static void populateOwner(ControlledViewEntityResponse response, Controll response.setDomainId(object.getDomainUuid()); response.setDomainName(object.getDomainName()); - response.setDomainPath(object.getDomainPath()); + response.setDomainPath(getPrettyDomainPath(object.getDomainPath())); } private void populateAccount(ControlledEntityResponse response, long accountId) { @@ -3105,10 +3065,22 @@ private void populateAccount(ControlledEntityResponse response, long accountId) private void populateDomain(ControlledEntityResponse response, long domainId) { Domain domain = ApiDBUtils.findDomainById(domainId); + if (domain == null) { + return; + } + response.setDomainId(domain.getUuid()); + response.setDomainName(domain.getName()); + response.setDomainPath(getPrettyDomainPath(domain.getPath())); + } + private static void populateDomain(ControlledViewEntityResponse response, long domainId) { + Domain domain = ApiDBUtils.findDomainById(domainId); + if (domain == null) { + return; + } response.setDomainId(domain.getUuid()); response.setDomainName(domain.getName()); - response.setDomainPath(domain.getPath()); + response.setDomainPath(getPrettyDomainPath(domain.getPath())); } @Override @@ -4100,12 +4072,7 @@ public UsageRecordResponse createUsageResponse(Usage usageRecord, Map // populate owner. ApiResponseHelper.populateOwner(templateResponse, template); - // populate domain - templateResponse.setDomainId(template.getDomainUuid()); - templateResponse.setDomainName(template.getDomainName()); - templateResponse.setDomainPath(template.getDomainPath()); - // If the user is an 'Admin' or 'the owner of template' or template belongs to a project, add the template download status if (view == ResponseView.Full || template.getAccountId() == CallContext.current().getCallingAccount().getId() || @@ -415,11 +410,6 @@ public TemplateResponse newUpdateResponse(TemplateJoinVO result) { // populate owner. ApiResponseHelper.populateOwner(response, result); - // populate domain - response.setDomainId(result.getDomainUuid()); - response.setDomainName(result.getDomainName()); - response.setDomainPath(result.getDomainPath()); - // set details map if (result.getDetailName() != null) { Map details = new HashMap<>(); @@ -504,11 +494,6 @@ public TemplateResponse newIsoResponse(TemplateJoinVO iso, ResponseView view) { // populate owner. ApiResponseHelper.populateOwner(isoResponse, iso); - // populate domain - isoResponse.setDomainId(iso.getDomainUuid()); - isoResponse.setDomainName(iso.getDomainName()); - isoResponse.setDomainPath(iso.getDomainPath()); - Account caller = CallContext.current().getCallingAccount(); boolean isAdmin = false; if ((caller == null) || _accountService.isAdmin(caller.getId())) { diff --git a/server/src/main/java/com/cloud/api/query/dao/UserVmJoinDaoImpl.java b/server/src/main/java/com/cloud/api/query/dao/UserVmJoinDaoImpl.java index 9762fc5ed3eb..a2f9544de39b 100644 --- a/server/src/main/java/com/cloud/api/query/dao/UserVmJoinDaoImpl.java +++ b/server/src/main/java/com/cloud/api/query/dao/UserVmJoinDaoImpl.java @@ -194,21 +194,13 @@ public UserVmResponse newUserVmResponse(ResponseView view, String objectName, Us userVmResponse.setDisplayName(userVm.getName()); } - if (userVm.getAccountType() == Account.Type.PROJECT) { - userVmResponse.setProjectId(userVm.getProjectUuid()); - userVmResponse.setProjectName(userVm.getProjectName()); - } else { - userVmResponse.setAccountName(userVm.getAccountName()); - } + ApiResponseHelper.populateOwner(userVmResponse, userVm); User user = _userDao.getUser(userVm.getUserId()); if (user != null) { userVmResponse.setUserId(user.getUuid()); userVmResponse.setUserName(user.getUsername()); } - userVmResponse.setDomainId(userVm.getDomainUuid()); - userVmResponse.setDomainName(userVm.getDomainName()); - userVmResponse.setDomainPath(userVm.getDomainPath()); userVmResponse.setCreated(userVm.getCreated()); userVmResponse.setLastUpdated(userVm.getLastUpdated());