package org.ovirt.engine.api.restapi.resource;
import java.util.List;
import org.ovirt.engine.api.model.Disk;
import org.ovirt.engine.api.model.Disks;
import org.ovirt.engine.api.model.StorageDomain;
import org.ovirt.engine.api.model.StorageDomains;
import org.ovirt.engine.api.resource.ReadOnlyDevicesResource;
import org.ovirt.engine.core.common.businessentities.DiskImage;
import org.ovirt.engine.core.common.businessentities.storage_domains;
import org.ovirt.engine.core.common.queries.GetStorageDomainsByVmTemplateIdQueryParameters;
import org.ovirt.engine.core.common.queries.VdcQueryParametersBase;
import org.ovirt.engine.core.common.queries.VdcQueryType;
import org.ovirt.engine.core.compat.Guid;
public class BackendReadOnlyDisksResource
extends AbstractBackendReadOnlyDevicesResource<Disk, Disks, DiskImage>
implements ReadOnlyDevicesResource<Disk, Disks> {
public BackendReadOnlyDisksResource(Guid parentId, VdcQueryType queryType, VdcQueryParametersBase queryParams) {
super(Disk.class, Disks.class, DiskImage.class, parentId, queryType, queryParams);
}
@Override
public Disks list() {
GetStorageDomainsByVmTemplateIdQueryParameters queryParams = new GetStorageDomainsByVmTemplateIdQueryParameters(parentId);
List<storage_domains> storageDomains = getBackendCollection(storage_domains.class, VdcQueryType.GetStorageDomainsByVmTemplateId, queryParams);
Disks disks = mapCollection(getBackendCollection(queryType, queryParams));
for (Disk disk : disks.getDisks()) {
if (disk.isSetStorageDomains()) {
disk.getStorageDomains().getStorageDomains().clear();
} else {
disk.setStorageDomains(new StorageDomains());
}
for (storage_domains sd : storageDomains) {
StorageDomain storageDomain = new StorageDomain();
storageDomain.setId(sd.getid().toString());
disk.getStorageDomains().getStorageDomains().add(storageDomain);
}
}
return disks;
}
protected boolean matchEntity(DiskImage entity, Guid id) {
return id != null && id.equals(entity.getId());
}
}