package org.ovirt.engine.api.restapi.resource.gluster;
import java.util.List;
import org.ovirt.engine.api.model.GlusterHook;
import org.ovirt.engine.api.model.GlusterHooks;
import org.ovirt.engine.api.resource.ClusterResource;
import org.ovirt.engine.api.resource.gluster.GlusterHookResource;
import org.ovirt.engine.api.resource.gluster.GlusterHooksResource;
import org.ovirt.engine.api.restapi.resource.AbstractBackendCollectionResource;
import org.ovirt.engine.core.common.businessentities.gluster.GlusterHookEntity;
import org.ovirt.engine.core.common.queries.VdcQueryType;
import org.ovirt.engine.core.common.queries.gluster.GlusterParameters;
/**
* Implementation of the "glusterhooks" resource
*/
public class BackendGlusterHooksResource
extends AbstractBackendCollectionResource<GlusterHook, GlusterHookEntity>
implements GlusterHooksResource {
private ClusterResource parent;
public BackendGlusterHooksResource() {
super(GlusterHook.class, GlusterHookEntity.class);
}
public BackendGlusterHooksResource(ClusterResource parent) {
this();
setParent(parent);
}
public ClusterResource getParent() {
return parent;
}
public void setParent(ClusterResource parent) {
this.parent = parent;
}
@Override
public GlusterHooks list() {
List<GlusterHookEntity> entities = getBackendCollection(VdcQueryType.GetGlusterHooks, new GlusterParameters(asGuid(parent.get().getId())));
return mapCollection(entities);
}
private GlusterHooks mapCollection(List<GlusterHookEntity> entities) {
GlusterHooks collection = new GlusterHooks();
for (GlusterHookEntity entity : entities) {
collection.getGlusterHooks().add(addLinks(populate(map(entity), entity)));
}
return collection;
}
@Override
protected GlusterHook addParents(GlusterHook hook) {
hook.setCluster(parent.get());
return hook;
}
@Override
public GlusterHookResource getHookResource(String id) {
return inject(new BackendGlusterHookResource(id, this));
}
}