From afd4b2efb4881f30ba63e9a0fe662168a81a17e8 Mon Sep 17 00:00:00 2001 From: davidjumani Date: Tue, 8 Feb 2022 15:34:08 +0530 Subject: [PATCH] Add ID search capability to sshkeypairs --- .../cloudstack/api/command/user/ssh/ListSSHKeyPairsCmd.java | 5 +++++ .../apache/cloudstack/api/response/SSHKeyPairResponse.java | 4 ++++ .../src/main/java/com/cloud/server/ManagementServerImpl.java | 5 +++++ ui/src/components/view/InfoCard.vue | 2 +- 4 files changed, 15 insertions(+), 1 deletion(-) diff --git a/api/src/main/java/org/apache/cloudstack/api/command/user/ssh/ListSSHKeyPairsCmd.java b/api/src/main/java/org/apache/cloudstack/api/command/user/ssh/ListSSHKeyPairsCmd.java index 1a77a660dcd8..560974937ef7 100644 --- a/api/src/main/java/org/apache/cloudstack/api/command/user/ssh/ListSSHKeyPairsCmd.java +++ b/api/src/main/java/org/apache/cloudstack/api/command/user/ssh/ListSSHKeyPairsCmd.java @@ -40,6 +40,8 @@ public class ListSSHKeyPairsCmd extends BaseListProjectAndAccountResourcesCmd { ///////////////////////////////////////////////////// //////////////// API parameters ///////////////////// ///////////////////////////////////////////////////// + @Parameter(name = ApiConstants.ID, type = CommandType.UUID, entityType = SSHKeyPairResponse.class, description = "the ID of the ssh keypair") + private Long id; @Parameter(name = ApiConstants.NAME, type = CommandType.STRING, description = "A key pair name to look for") private String name; @@ -50,6 +52,9 @@ public class ListSSHKeyPairsCmd extends BaseListProjectAndAccountResourcesCmd { ///////////////////////////////////////////////////// /////////////////// Accessors /////////////////////// ///////////////////////////////////////////////////// + public Long getId() { + return id; + } public String getName() { return name; 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 5a4d69b76cc7..7bd423910be2 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 @@ -21,8 +21,12 @@ import org.apache.cloudstack.api.ApiConstants; import com.cloud.serializer.Param; +import com.cloud.user.SSHKeyPair; + import org.apache.cloudstack.api.BaseResponseWithAnnotations; +import org.apache.cloudstack.api.EntityReference; +@EntityReference(value = SSHKeyPair.class) public class SSHKeyPairResponse extends BaseResponseWithAnnotations { @SerializedName(ApiConstants.ID) diff --git a/server/src/main/java/com/cloud/server/ManagementServerImpl.java b/server/src/main/java/com/cloud/server/ManagementServerImpl.java index 790a5709b0f0..e049bc8a9103 100644 --- a/server/src/main/java/com/cloud/server/ManagementServerImpl.java +++ b/server/src/main/java/com/cloud/server/ManagementServerImpl.java @@ -4152,6 +4152,7 @@ public boolean deleteSSHKeyPair(final DeleteSSHKeyPairCmd cmd) { @Override public Pair, Integer> listSSHKeyPairs(final ListSSHKeyPairsCmd cmd) { + final Long id = cmd.getId(); final String name = cmd.getName(); final String fingerPrint = cmd.getFingerprint(); final String keyword = cmd.getKeyword(); @@ -4171,6 +4172,10 @@ public Pair, Integer> listSSHKeyPairs(final ListSSHKe final SearchCriteria sc = sb.create(); _accountMgr.buildACLSearchCriteria(sc, domainId, isRecursive, permittedAccounts, listProjectResourcesCriteria); + if (id != null) { + sc.addAnd("id", SearchCriteria.Op.EQ, id); + } + if (name != null) { sc.addAnd("name", SearchCriteria.Op.EQ, name); } diff --git a/ui/src/components/view/InfoCard.vue b/ui/src/components/view/InfoCard.vue index 6347c4c3a891..6b61dad2c138 100644 --- a/ui/src/components/view/InfoCard.vue +++ b/ui/src/components/view/InfoCard.vue @@ -605,7 +605,7 @@
+ :to="{ path: '/' + item.name + '?' + item.param + '=' + (item.value ? resource[item.value] : item.param === 'account' ? resource.name + '&domainid=' + resource.domainid : item.param === 'keypair' ? resource.name : resource.id) }"> {{ $t('label.view') + ' ' + $t(item.title) }}