From 6c12dad5aa8e5d8405f1e87ae8cc8ba307db883c Mon Sep 17 00:00:00 2001 From: Rohit Yadav Date: Thu, 10 Jan 2019 01:47:55 +0530 Subject: [PATCH] api: include tags in listvmsnapshots response This ensures that tags of a VM snapshot are listed in the UI, available in the list vmsnapshots API response. Signed-off-by: Rohit Yadav --- .../api/response/VMSnapshotResponse.java | 16 ++++++++++++---- .../java/com/cloud/api/ApiResponseHelper.java | 8 ++++++++ 2 files changed, 20 insertions(+), 4 deletions(-) diff --git a/api/src/main/java/org/apache/cloudstack/api/response/VMSnapshotResponse.java b/api/src/main/java/org/apache/cloudstack/api/response/VMSnapshotResponse.java index 1285f73f633e..1248c631778b 100644 --- a/api/src/main/java/org/apache/cloudstack/api/response/VMSnapshotResponse.java +++ b/api/src/main/java/org/apache/cloudstack/api/response/VMSnapshotResponse.java @@ -18,18 +18,19 @@ package org.apache.cloudstack.api.response; import java.util.Date; - -import com.google.gson.annotations.SerializedName; +import java.util.LinkedHashSet; +import java.util.Set; import org.apache.cloudstack.api.ApiConstants; -import org.apache.cloudstack.api.BaseResponse; +import org.apache.cloudstack.api.BaseResponseWithTagInformation; import org.apache.cloudstack.api.EntityReference; import com.cloud.serializer.Param; import com.cloud.vm.snapshot.VMSnapshot; +import com.google.gson.annotations.SerializedName; @EntityReference(value = VMSnapshot.class) -public class VMSnapshotResponse extends BaseResponse implements ControlledEntityResponse { +public class VMSnapshotResponse extends BaseResponseWithTagInformation implements ControlledEntityResponse { @SerializedName(ApiConstants.ID) @Param(description = "the ID of the vm snapshot") @@ -99,6 +100,10 @@ public class VMSnapshotResponse extends BaseResponse implements ControlledEntity @Param(description = "the domain associated with the disk volume") private String domainName; + public VMSnapshotResponse() { + tags = new LinkedHashSet(); + } + @Override public String getObjectId() { return getId(); @@ -226,6 +231,9 @@ public void setDomainId(String domainId) { @Override public void setDomainName(String domainName) { this.domainName = domainName; + } + public void setTags(Set tags) { + this.tags = tags; } } diff --git a/server/src/main/java/com/cloud/api/ApiResponseHelper.java b/server/src/main/java/com/cloud/api/ApiResponseHelper.java index 0b310c0f11cd..4f36447d66d1 100644 --- a/server/src/main/java/com/cloud/api/ApiResponseHelper.java +++ b/server/src/main/java/com/cloud/api/ApiResponseHelper.java @@ -619,6 +619,14 @@ public VMSnapshotResponse createVMSnapshotResponse(VMSnapshot vmSnapshot) { vmSnapshotResponse.setDomainName(domain.getName()); } + List tags = _resourceTagDao.listBy(vmSnapshot.getId(), ResourceObjectType.VMSnapshot); + List tagResponses = new ArrayList(); + for (ResourceTag tag : tags) { + ResourceTagResponse tagResponse = createResourceTagResponse(tag, false); + CollectionUtils.addIgnoreNull(tagResponses, tagResponse); + } + vmSnapshotResponse.setTags(new HashSet<>(tagResponses)); + vmSnapshotResponse.setCurrent(vmSnapshot.getCurrent()); vmSnapshotResponse.setType(vmSnapshot.getType().toString()); vmSnapshotResponse.setObjectName("vmsnapshot");