You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@cloudstack.apache.org by da...@apache.org on 2023/01/19 12:09:28 UTC

[cloudstack] branch 4.17 updated: api/server: add project id/name in ssh keypair response (#7100)

This is an automated email from the ASF dual-hosted git repository.

dahn pushed a commit to branch 4.17
in repository https://gitbox.apache.org/repos/asf/cloudstack.git


The following commit(s) were added to refs/heads/4.17 by this push:
     new 37b2a4826d api/server: add project id/name in ssh keypair response (#7100)
37b2a4826d is described below

commit 37b2a4826d7ba776c58225438aa682d42c2bfc3c
Author: Wei Zhou <we...@apache.org>
AuthorDate: Thu Jan 19 13:09:19 2023 +0100

    api/server: add project id/name in ssh keypair response (#7100)
---
 .../cloudstack/api/response/SSHKeyPairResponse.java      | 16 ++++++++++++++++
 .../src/main/java/com/cloud/api/ApiResponseHelper.java   |  8 +++++++-
 ui/src/config/section/compute.js                         | 12 +++++++++---
 3 files changed, 32 insertions(+), 4 deletions(-)

diff --git a/api/src/main/java/org/apache/cloudstack/api/response/SSHKeyPairResponse.java b/api/src/main/java/org/apache/cloudstack/api/response/SSHKeyPairResponse.java
index 7bd423910b..65e5c5b741 100644
--- a/api/src/main/java/org/apache/cloudstack/api/response/SSHKeyPairResponse.java
+++ b/api/src/main/java/org/apache/cloudstack/api/response/SSHKeyPairResponse.java
@@ -46,6 +46,14 @@ public class SSHKeyPairResponse extends BaseResponseWithAnnotations {
     @SerializedName(ApiConstants.DOMAIN) @Param(description="the domain name of the keypair owner")
     private String domain;
 
+    @SerializedName(ApiConstants.PROJECT_ID)
+    @Param(description = "the project id of the keypair owner")
+    private String projectId;
+
+    @SerializedName(ApiConstants.PROJECT)
+    @Param(description = "the project name of the keypair owner")
+    private String projectName;
+
     @SerializedName("fingerprint")
     @Param(description = "Fingerprint of the public key")
     private String fingerprint;
@@ -106,4 +114,12 @@ public class SSHKeyPairResponse extends BaseResponseWithAnnotations {
     public void setId(String id) {
         this.id = id;
     }
+
+    public void setProjectId(String projectId) {
+        this.projectId = projectId;
+    }
+
+    public void setProjectName(String projectName) {
+        this.projectName = projectName;
+    }
 }
diff --git a/server/src/main/java/com/cloud/api/ApiResponseHelper.java b/server/src/main/java/com/cloud/api/ApiResponseHelper.java
index 4b1963a1ae..ce1de79b1f 100644
--- a/server/src/main/java/com/cloud/api/ApiResponseHelper.java
+++ b/server/src/main/java/com/cloud/api/ApiResponseHelper.java
@@ -4556,7 +4556,13 @@ public class ApiResponseHelper implements ResponseGenerator {
                     sshkeyPair.getFingerprint(), sshkeyPair.getPrivateKey());
         }
         Account account = ApiDBUtils.findAccountById(sshkeyPair.getAccountId());
-        response.setAccountName(account.getAccountName());
+        if (account.getType() == Account.Type.PROJECT) {
+            Project project = ApiDBUtils.findProjectByProjectAccountIdIncludingRemoved(account.getAccountId());
+            response.setProjectId(project.getUuid());
+            response.setProjectName(project.getName());
+        } else {
+            response.setAccountName(account.getAccountName());
+        }
         Domain domain = ApiDBUtils.findDomainById(sshkeyPair.getDomainId());
         response.setDomainId(domain.getUuid());
         response.setDomainName(domain.getName());
diff --git a/ui/src/config/section/compute.js b/ui/src/config/section/compute.js
index 5249185651..e733d980f3 100644
--- a/ui/src/config/section/compute.js
+++ b/ui/src/config/section/compute.js
@@ -576,7 +576,7 @@ export default {
         return fields
       },
       resourceType: 'SSHKeyPair',
-      details: ['id', 'name', 'fingerprint', 'account', 'domain'],
+      details: ['id', 'name', 'fingerprint', 'account', 'domain', 'project'],
       related: [{
         name: 'vm',
         title: 'label.instances',
@@ -608,11 +608,14 @@ export default {
           label: 'label.remove.ssh.key.pair',
           message: 'message.please.confirm.remove.ssh.key.pair',
           dataView: true,
-          args: ['name', 'account', 'domainid'],
+          args: ['name', 'account', 'domainid', 'projectid'],
           mapping: {
             name: {
               value: (record, params) => { return record.name }
             },
+            projectid: {
+              value: (record, params) => { return record.projectid }
+            },
             account: {
               value: (record, params) => { return record.account }
             },
@@ -626,7 +629,10 @@ export default {
             return selection.map(x => {
               const data = record.filter(y => { return y.id === x })
               return {
-                name: data[0].name, account: data[0].account, domainid: data[0].domainid
+                name: data[0].name,
+                account: data[0].account,
+                domainid: data[0].domainid,
+                projectid: data[0].projectid
               }
             })
           }