From 6ccb9a3795706c9e4df1d369c41482c78dbb80dc Mon Sep 17 00:00:00 2001 From: davidjumani Date: Wed, 16 Sep 2020 11:33:46 +0530 Subject: [PATCH 1/3] Including instance details in KubernetesClusterResponse --- .../apache/cloudstack/api/ApiConstants.java | 1 + .../cluster/KubernetesClusterManagerImpl.java | 23 ++++++++++++++----- .../response/KubernetesClusterResponse.java | 16 ++++++------- 3 files changed, 25 insertions(+), 15 deletions(-) diff --git a/api/src/main/java/org/apache/cloudstack/api/ApiConstants.java b/api/src/main/java/org/apache/cloudstack/api/ApiConstants.java index 88f083b50e6c..68138273ee22 100644 --- a/api/src/main/java/org/apache/cloudstack/api/ApiConstants.java +++ b/api/src/main/java/org/apache/cloudstack/api/ApiConstants.java @@ -385,6 +385,7 @@ public class ApiConstants { public static final String VIRTUAL_MACHINE_NAME = "virtualmachinename"; public static final String VIRTUAL_MACHINE_ID_IP = "vmidipmap"; public static final String VIRTUAL_MACHINE_COUNT = "virtualmachinecount"; + public static final String VIRTUAL_MACHINES = "virtualmachines"; public static final String USAGE_ID = "usageid"; public static final String USAGE_TYPE = "usagetype"; public static final String INCLUDE_TAGS = "includetags"; 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 3ece789c01c9..b3524d2fdb82 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 @@ -22,6 +22,7 @@ import java.security.SecureRandom; import java.util.ArrayList; import java.util.Date; +import java.util.EnumSet; import java.util.HashMap; import java.util.List; import java.util.Map; @@ -38,6 +39,8 @@ import org.apache.cloudstack.acl.ControlledEntity; import org.apache.cloudstack.acl.SecurityChecker; import org.apache.cloudstack.api.ApiConstants; +import org.apache.cloudstack.api.ApiConstants.VMDetails; +import org.apache.cloudstack.api.ResponseObject.ResponseView; import org.apache.cloudstack.api.command.user.kubernetes.cluster.CreateKubernetesClusterCmd; import org.apache.cloudstack.api.command.user.kubernetes.cluster.DeleteKubernetesClusterCmd; import org.apache.cloudstack.api.command.user.kubernetes.cluster.GetKubernetesClusterConfigCmd; @@ -49,6 +52,7 @@ import org.apache.cloudstack.api.response.KubernetesClusterConfigResponse; import org.apache.cloudstack.api.response.KubernetesClusterResponse; import org.apache.cloudstack.api.response.ListResponse; +import org.apache.cloudstack.api.response.UserVmResponse; import org.apache.cloudstack.context.CallContext; import org.apache.cloudstack.engine.orchestration.service.NetworkOrchestrationService; import org.apache.cloudstack.framework.config.ConfigKey; @@ -61,7 +65,9 @@ import com.cloud.api.ApiDBUtils; import com.cloud.api.query.dao.NetworkOfferingJoinDao; import com.cloud.api.query.dao.TemplateJoinDao; +import com.cloud.api.query.dao.UserVmJoinDao; import com.cloud.api.query.vo.NetworkOfferingJoinVO; +import com.cloud.api.query.vo.UserVmJoinVO; import com.cloud.capacity.CapacityManager; import com.cloud.dc.ClusterDetailsDao; import com.cloud.dc.ClusterDetailsVO; @@ -144,10 +150,8 @@ import com.cloud.utils.fsm.NoTransitionException; import com.cloud.utils.fsm.StateMachine2; import com.cloud.utils.net.NetUtils; -import com.cloud.vm.UserVmVO; import com.cloud.vm.VMInstanceVO; import com.cloud.vm.VirtualMachine; -import com.cloud.vm.dao.UserVmDao; import com.cloud.vm.dao.VMInstanceDao; import com.google.common.base.Strings; @@ -194,7 +198,7 @@ public class KubernetesClusterManagerImpl extends ManagerBase implements Kuberne @Inject protected VMInstanceDao vmInstanceDao; @Inject - protected UserVmDao userVmDao; + protected UserVmJoinDao userVmJoinDao; @Inject protected NetworkOfferingDao networkOfferingDao; @Inject @@ -606,13 +610,20 @@ public KubernetesClusterResponse createKubernetesClusterResponse(long kubernetes response.setEndpoint(kubernetesCluster.getEndpoint()); response.setNetworkId(ntwk.getUuid()); response.setAssociatedNetworkName(ntwk.getName()); - List vmIds = new ArrayList(); + List vmIds = new ArrayList(); List vmList = kubernetesClusterVmMapDao.listByClusterId(kubernetesCluster.getId()); + ResponseView respView = ResponseView.Restricted; + Account caller = CallContext.current().getCallingAccount(); + if (accountService.isRootAdmin(caller.getId())) { + respView = ResponseView.Full; + } if (vmList != null && !vmList.isEmpty()) { for (KubernetesClusterVmMapVO vmMapVO : vmList) { - UserVmVO userVM = userVmDao.findById(vmMapVO.getVmId()); + UserVmJoinVO userVM = userVmJoinDao.findById(vmMapVO.getVmId()); if (userVM != null) { - vmIds.add(userVM.getUuid()); + UserVmResponse vmResponse = ApiDBUtils.newUserVmResponse(respView, "virtualmachine", userVM, + EnumSet.noneOf(VMDetails.class), caller); + vmIds.add(vmResponse); } } } 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 2c6fc8191e58..e051b177a4a7 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 @@ -129,9 +129,9 @@ public class KubernetesClusterResponse extends BaseResponse implements Controlle @Param(description = "URL end point for the Kubernetes cluster dashboard UI") private String consoleEndpoint; - @SerializedName(ApiConstants.VIRTUAL_MACHINE_IDS) - @Param(description = "the list of virtualmachine IDs associated with this Kubernetes cluster") - private List virtualMachineIds; + @SerializedName(ApiConstants.VIRTUAL_MACHINES) + @Param(description = "the list of virtualmachine associated with this Kubernetes cluster") + private List virtualMachines; public KubernetesClusterResponse() { } @@ -317,13 +317,11 @@ public void setServiceOfferingName(String serviceOfferingName) { this.serviceOfferingName = serviceOfferingName; } - public void setVirtualMachineIds(List virtualMachineIds) { - this.virtualMachineIds = virtualMachineIds; + public void setVirtualMachineIds(List virtualMachines) { + this.virtualMachines = virtualMachines; } - ; - - public List getVirtualMachineIds() { - return virtualMachineIds; + public List getVirtualMachineIds() { + return virtualMachines; } } From 42f92f6bed26962a79da18dac97b31c7b2262dd7 Mon Sep 17 00:00:00 2001 From: davidjumani Date: Thu, 22 Oct 2020 14:29:52 +0530 Subject: [PATCH 2/3] Fixing tests --- test/integration/smoke/test_kubernetes_clusters.py | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/test/integration/smoke/test_kubernetes_clusters.py b/test/integration/smoke/test_kubernetes_clusters.py index 2b7638d5324a..b2c94714377d 100644 --- a/test/integration/smoke/test_kubernetes_clusters.py +++ b/test/integration/smoke/test_kubernetes_clusters.py @@ -749,9 +749,9 @@ def deleteKubernetesClusterAndVerify(self, cluster_id, verify = True, forced = F self.deleteKubernetesCluster(cluster_id) else: forceDeleted = True - for cluster_vm_id in cluster.virtualmachineids: + for cluster_vm in cluster.virtualmachines: cmd = destroyVirtualMachine.destroyVirtualMachineCmd() - cmd.id = cluster_vm_id + cmd.id = cluster_vm.id cmd.expunge = True self.apiclient.destroyVirtualMachine(cmd) cmd = deleteNetwork.deleteNetworkCmd() From e844a1c6af9d42bceaaee4c43db923d51dc5691a Mon Sep 17 00:00:00 2001 From: davidjumani Date: Fri, 23 Oct 2020 08:23:30 +0530 Subject: [PATCH 3/3] Refactoring --- .../kubernetes/cluster/KubernetesClusterManagerImpl.java | 9 +++++---- .../api/response/KubernetesClusterResponse.java | 4 ++-- 2 files changed, 7 insertions(+), 6 deletions(-) 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 b3524d2fdb82..133561b5dfb4 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 @@ -610,24 +610,25 @@ public KubernetesClusterResponse createKubernetesClusterResponse(long kubernetes response.setEndpoint(kubernetesCluster.getEndpoint()); response.setNetworkId(ntwk.getUuid()); response.setAssociatedNetworkName(ntwk.getName()); - List vmIds = new ArrayList(); + List vmResponses = new ArrayList(); List vmList = kubernetesClusterVmMapDao.listByClusterId(kubernetesCluster.getId()); ResponseView respView = ResponseView.Restricted; Account caller = CallContext.current().getCallingAccount(); if (accountService.isRootAdmin(caller.getId())) { respView = ResponseView.Full; } + final String responseName = "virtualmachine"; if (vmList != null && !vmList.isEmpty()) { for (KubernetesClusterVmMapVO vmMapVO : vmList) { UserVmJoinVO userVM = userVmJoinDao.findById(vmMapVO.getVmId()); if (userVM != null) { - UserVmResponse vmResponse = ApiDBUtils.newUserVmResponse(respView, "virtualmachine", userVM, + UserVmResponse vmResponse = ApiDBUtils.newUserVmResponse(respView, responseName, userVM, EnumSet.noneOf(VMDetails.class), caller); - vmIds.add(vmResponse); + vmResponses.add(vmResponse); } } } - response.setVirtualMachineIds(vmIds); + response.setVirtualMachines(vmResponses); return response; } 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 e051b177a4a7..d5e9793ae7d4 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 @@ -317,11 +317,11 @@ public void setServiceOfferingName(String serviceOfferingName) { this.serviceOfferingName = serviceOfferingName; } - public void setVirtualMachineIds(List virtualMachines) { + public void setVirtualMachines(List virtualMachines) { this.virtualMachines = virtualMachines; } - public List getVirtualMachineIds() { + public List getVirtualMachines() { return virtualMachines; } }