package org.ovirt.engine.api.restapi.resource;
import org.ovirt.engine.api.model.Disk;
import org.ovirt.engine.api.model.Disks;
import org.ovirt.engine.api.model.Snapshot;
import org.ovirt.engine.api.resource.SnapshotDiskResource;
import org.ovirt.engine.api.resource.SnapshotDisksResource;
import org.ovirt.engine.api.restapi.types.DiskMapper;
import org.ovirt.engine.core.common.businessentities.VM;
import org.ovirt.engine.core.common.businessentities.storage.DiskImage;
public class BackendSnapshotDisksResource extends AbstractBackendCollectionResource<Disk, Snapshot> implements SnapshotDisksResource {
protected BackendSnapshotResource parent;
public BackendSnapshotDisksResource(BackendSnapshotResource parent) {
super(Disk.class, Snapshot.class);
this.parent = parent;
}
@Override
public Disks list() {
Disks disks = new Disks();
if (parent.getSnapshot().isVmConfigurationAvailable()) {
VM vm = parent.collection.getVmPreview(parent.get());
for (DiskImage disk : vm.getDiskList()) {
Disk d = DiskMapper.map(disk, null);
map(d, parent.id);
disks.getDisks().add(d);
}
}
return disks;
}
public void map(Disk disk, String snapshotId) {
disk.setSnapshot(new Snapshot());
disk.getSnapshot().setId(snapshotId);
}
@Override
public SnapshotDiskResource getDiskResource(String id) {
return inject(new BackendSnapshotDiskResource(id, this));
}
}