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");