package org.ovirt.engine.api.restapi.resource;
import java.util.List;
import org.ovirt.engine.api.model.Host;
import org.ovirt.engine.api.model.NumaNode;
import org.ovirt.engine.api.model.NumaNodes;
import org.ovirt.engine.api.resource.HostNumaNodeResource;
import org.ovirt.engine.api.resource.HostNumaNodesResource;
import org.ovirt.engine.core.common.businessentities.VdsNumaNode;
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 BackendHostNumaNodesResource
extends AbstractBackendCollectionResource<NumaNode, VdsNumaNode>
implements HostNumaNodesResource {
private String hostId;
public BackendHostNumaNodesResource(String hostId) {
super(NumaNode.class, VdsNumaNode.class);
this.hostId = hostId;
}
public String getHostId() {
return hostId;
}
@Override
public NumaNodes list() {
NumaNodes ret = new NumaNodes();
List<VdsNumaNode> nodes = getCollection();
for (VdsNumaNode node : nodes) {
NumaNode numanode = populate(map(node, null), node);
ret.getNumaNodes().add(addLinks(numanode));
}
return ret;
}
@Override
public HostNumaNodeResource getNodeResource(String id) {
return inject(new BackendHostNumaNodeResource(id, this));
}
protected List<VdsNumaNode> getCollection() {
return getBackendCollection(VdcQueryType.GetVdsNumaNodesByVdsId, new IdQueryParameters(asGuid(hostId)));
}
@Override
public NumaNode addParents(NumaNode node) {
node.setHost(new Host());
node.getHost().setId(hostId);
return node;
}
public NumaNode lookupNumaNode(String id, boolean forcePopulate) {
List<VdsNumaNode> nodes = getCollection();
for (VdsNumaNode node : nodes) {
if (node.getId().toString().equals(id)) {
NumaNode numanode = map(node, null);
if (forcePopulate) {
doPopulate(numanode, node);
} else {
populate(numanode, node);
}
return addLinks(numanode);
}
}
return notFound();
}
public VdsNumaNode lookupEntity(Guid id) {
VdsNumaNode node = lookupEntityById(id);
return node == null ? entityNotFound() : node;
}
private VdsNumaNode lookupEntityById(Guid id) {
for (VdsNumaNode node : getCollection()) {
if (node.getId().equals(id)) {
return node;
}
}
return null;
}
}