package org.ovirt.engine.api.restapi.resource;
import java.util.List;
import org.ovirt.engine.api.model.ReportedDevice;
import org.ovirt.engine.api.model.ReportedDevices;
import org.ovirt.engine.api.model.Vm;
import org.ovirt.engine.api.resource.VmReportedDeviceResource;
import org.ovirt.engine.api.resource.VmReportedDevicesResource;
import org.ovirt.engine.api.restapi.types.ReportedDeviceMapper;
import org.ovirt.engine.core.common.businessentities.VmGuestAgentInterface;
import org.ovirt.engine.core.common.queries.IdQueryParameters;
import org.ovirt.engine.core.common.queries.VdcQueryType;
import org.ovirt.engine.core.compat.Guid;
public class BackendVmReportedDevicesResource extends AbstractBackendCollectionResource<ReportedDevice, VmGuestAgentInterface> implements VmReportedDevicesResource {
private Guid vmId;
public Guid getVmId() {
return vmId;
}
public BackendVmReportedDevicesResource(Guid vmId) {
super(ReportedDevice.class, VmGuestAgentInterface.class);
this.vmId = vmId;
}
@Override
protected ReportedDevice addParents(ReportedDevice model) {
model.setVm(new Vm());
model.getVm().setId(vmId.toString());
return model;
}
@Override
public ReportedDevices list() {
ReportedDevices model = new ReportedDevices();
for (VmGuestAgentInterface device : getCollection()) {
model.getReportedDevices().add(addLinks(ReportedDeviceMapper.map(device, new ReportedDevice())));
}
return model;
}
@Override
public VmReportedDeviceResource getReportedDeviceResource(String id) {
return inject(new BackendVmReportedDeviceResource(id, this));
}
protected List<VmGuestAgentInterface> getCollection() {
return getBackendCollection(VdcQueryType.GetVmGuestAgentInterfacesByVmId, new IdQueryParameters(vmId));
}
public ReportedDevice lookupReportedDevice(Guid deviceId) {
VmGuestAgentInterface device = getReportedDeviceByDeviceId(deviceId);
if (device == null) {
return notFound();
}
return addLinks(ReportedDeviceMapper.map(device, new ReportedDevice()));
}
private VmGuestAgentInterface getReportedDeviceByDeviceId(Guid deviceId) {
for (VmGuestAgentInterface vmGuestAgentInterface : getCollection()) {
if (deviceId.equals(ReportedDeviceMapper.generateDeviceId(vmGuestAgentInterface))) {
return vmGuestAgentInterface;
}
}
return null;
}
}