From 8d2bc291d1fea7f917df3e42b01720757a3a4b28 Mon Sep 17 00:00:00 2001 From: davidjumani Date: Mon, 16 May 2022 13:11:40 +0530 Subject: [PATCH 1/2] cks: Get caller user keys if cluster belongs to project --- .../cluster/KubernetesClusterManagerImpl.java | 14 +++++++++++--- 1 file changed, 11 insertions(+), 3 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 535375502934..5c5adb4f05b4 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 @@ -1137,7 +1137,7 @@ public boolean startKubernetesCluster(long kubernetesClusterId, boolean onCreate startWorker = ComponentContext.inject(startWorker); if (onCreate) { // Start for Kubernetes cluster in 'Created' state - Account owner = accountService.getActiveAccountById(kubernetesCluster.getAccountId()); + Account owner = getOwnerOrCaller(kubernetesCluster); String[] keys = getServiceUserKeys(owner); startWorker.setKeys(keys); return startWorker.startKubernetesClusterOnCreate(); @@ -1147,6 +1147,14 @@ public boolean startKubernetesCluster(long kubernetesClusterId, boolean onCreate } } + private Account getOwnerOrCaller(KubernetesClusterVO kubernetesCluster) { + Account owner = accountService.getActiveAccountById(kubernetesCluster.getAccountId()); + if (owner.getType() == Account.Type.PROJECT) { + owner = CallContext.current().getCallingAccount(); + } + return owner; + } + private String[] getServiceUserKeys(Account owner) { if (owner == null) { owner = CallContext.current().getCallingAccount(); @@ -1299,7 +1307,7 @@ public boolean scaleKubernetesCluster(ScaleKubernetesClusterCmd cmd) throws Clou validateKubernetesClusterScaleParameters(cmd); KubernetesClusterVO kubernetesCluster = kubernetesClusterDao.findById(cmd.getId()); - Account owner = accountService.getActiveAccountById(kubernetesCluster.getAccountId()); + Account owner = getOwnerOrCaller(kubernetesCluster); String[] keys = getServiceUserKeys(owner); KubernetesClusterScaleWorker scaleWorker = new KubernetesClusterScaleWorker(kubernetesClusterDao.findById(cmd.getId()), @@ -1323,7 +1331,7 @@ public boolean upgradeKubernetesCluster(UpgradeKubernetesClusterCmd cmd) throws validateKubernetesClusterUpgradeParameters(cmd); KubernetesClusterVO kubernetesCluster = kubernetesClusterDao.findById(cmd.getId()); - Account owner = accountService.getActiveAccountById(kubernetesCluster.getAccountId()); + Account owner = getOwnerOrCaller(kubernetesCluster); String[] keys = getServiceUserKeys(owner); KubernetesClusterUpgradeWorker upgradeWorker = new KubernetesClusterUpgradeWorker(kubernetesClusterDao.findById(cmd.getId()), From 689c798358d2c7fc3f5fbdf09123c058578b819d Mon Sep 17 00:00:00 2001 From: davidjumani Date: Wed, 18 May 2022 12:09:20 +0530 Subject: [PATCH 2/2] Refactor --- .../cluster/KubernetesClusterManagerImpl.java | 20 +++++-------------- 1 file changed, 5 insertions(+), 15 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 5c5adb4f05b4..894ea4c49378 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 @@ -1137,8 +1137,7 @@ public boolean startKubernetesCluster(long kubernetesClusterId, boolean onCreate startWorker = ComponentContext.inject(startWorker); if (onCreate) { // Start for Kubernetes cluster in 'Created' state - Account owner = getOwnerOrCaller(kubernetesCluster); - String[] keys = getServiceUserKeys(owner); + String[] keys = getServiceUserKeys(kubernetesCluster); startWorker.setKeys(keys); return startWorker.startKubernetesClusterOnCreate(); } else { @@ -1147,16 +1146,9 @@ public boolean startKubernetesCluster(long kubernetesClusterId, boolean onCreate } } - private Account getOwnerOrCaller(KubernetesClusterVO kubernetesCluster) { + private String[] getServiceUserKeys(KubernetesClusterVO kubernetesCluster) { Account owner = accountService.getActiveAccountById(kubernetesCluster.getAccountId()); - if (owner.getType() == Account.Type.PROJECT) { - owner = CallContext.current().getCallingAccount(); - } - return owner; - } - - private String[] getServiceUserKeys(Account owner) { - if (owner == null) { + if (owner == null || owner.getType() == Account.Type.PROJECT) { owner = CallContext.current().getCallingAccount(); } String username = owner.getAccountName() + "-" + KUBEADMIN_ACCOUNT_NAME; @@ -1307,8 +1299,7 @@ public boolean scaleKubernetesCluster(ScaleKubernetesClusterCmd cmd) throws Clou validateKubernetesClusterScaleParameters(cmd); KubernetesClusterVO kubernetesCluster = kubernetesClusterDao.findById(cmd.getId()); - Account owner = getOwnerOrCaller(kubernetesCluster); - String[] keys = getServiceUserKeys(owner); + String[] keys = getServiceUserKeys(kubernetesCluster); KubernetesClusterScaleWorker scaleWorker = new KubernetesClusterScaleWorker(kubernetesClusterDao.findById(cmd.getId()), serviceOfferingDao.findById(cmd.getServiceOfferingId()), @@ -1331,8 +1322,7 @@ public boolean upgradeKubernetesCluster(UpgradeKubernetesClusterCmd cmd) throws validateKubernetesClusterUpgradeParameters(cmd); KubernetesClusterVO kubernetesCluster = kubernetesClusterDao.findById(cmd.getId()); - Account owner = getOwnerOrCaller(kubernetesCluster); - String[] keys = getServiceUserKeys(owner); + String[] keys = getServiceUserKeys(kubernetesCluster); KubernetesClusterUpgradeWorker upgradeWorker = new KubernetesClusterUpgradeWorker(kubernetesClusterDao.findById(cmd.getId()), kubernetesSupportedVersionDao.findById(cmd.getKubernetesVersionId()), this, keys);