package org.ovirt.engine.api.restapi.resource;
import javax.ws.rs.core.Response;
import org.ovirt.engine.api.model.Agent;
import org.ovirt.engine.api.resource.FenceAgentResource;
import org.ovirt.engine.core.common.action.FenceAgentCommandParameterBase;
import org.ovirt.engine.core.common.action.VdcActionParametersBase;
import org.ovirt.engine.core.common.action.VdcActionType;
import org.ovirt.engine.core.common.businessentities.pm.FenceAgent;
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 BackendFenceAgentResource extends AbstractBackendSubResource<Agent, FenceAgent> implements FenceAgentResource {
public BackendFenceAgentResource(String fenceAgentId) {
super(fenceAgentId, Agent.class, FenceAgent.class);
}
@Override
public Agent get() {
return performGet(VdcQueryType.GetFenceAgentById, new IdQueryParameters(guid));
}
@Override
public Agent update(Agent agent) {
QueryIdResolver<Guid> agentResolver =
new QueryIdResolver<>(VdcQueryType.GetFenceAgentById, IdQueryParameters.class);
FenceAgent entity = getEntity(agentResolver, true);
return performUpdate(agent,
entity,
map(entity),
agentResolver,
VdcActionType.UpdateFenceAgent,
new UpdateParametersProvider());
}
protected class UpdateParametersProvider implements ParametersProvider<Agent, FenceAgent> {
@Override
public VdcActionParametersBase getParameters(Agent incoming, FenceAgent entity) {
FenceAgentCommandParameterBase updateParams = new FenceAgentCommandParameterBase();
FenceAgent agent = map(incoming, entity);
updateParams.setAgent(agent);
return updateParams;
}
}
@Override
public Response remove() {
get();
FenceAgentCommandParameterBase params = new FenceAgentCommandParameterBase();
FenceAgent agent = new FenceAgent();
agent.setId(guid);
params.setAgent(agent);
return performAction(VdcActionType.RemoveFenceAgent, params);
}
}