package org.ovirt.engine.api.restapi.resource;
import java.util.stream.Collectors;
import org.ovirt.engine.api.model.DiskAttachment;
import org.ovirt.engine.api.model.DiskAttachments;
import org.ovirt.engine.api.resource.StorageDomainVmDiskAttachmentResource;
import org.ovirt.engine.api.resource.StorageDomainVmDiskAttachmentsResource;
import org.ovirt.engine.core.common.businessentities.storage.DiskVmElement;
import org.ovirt.engine.core.compat.Guid;
public class BackendExportDomainDiskAttachmentsResource
extends AbstractBackendCollectionResource<DiskAttachment, DiskVmElement>
implements StorageDomainVmDiskAttachmentsResource {
private BackendStorageDomainVmResource parent;
public BackendExportDomainDiskAttachmentsResource(BackendStorageDomainVmResource parent) {
super(DiskAttachment.class, org.ovirt.engine.core.common.businessentities.storage.DiskVmElement.class);
this.parent = parent;
}
// TODO: Currently we don't add links as the they are wrongly pointing to /vms/{vm_id}/diskattachemnts
// instead of /storagedomains/{storage_id}/vms/{vm_id}/diskattachments
// this needs to be added once the problem is solved
@Override
public DiskAttachments list() {
DiskAttachments attachments = new DiskAttachments();
attachments.getDiskAttachments().addAll(parent.getDiskMap().values().stream()
.map(d -> map(d.getDiskVmElementForVm(parent.vm.getId()))).collect(Collectors.toList()));
return attachments;
}
@Override
public StorageDomainVmDiskAttachmentResource getAttachmentResource(String id) {
return inject(new BackendExportDomainDiskAttachmentResource(id, this));
}
public DiskVmElement getDiskAttachment(Guid id) {
return parent.getDiskMap().get(id).getDiskVmElementForVm(parent.vm.getId());
}
}