package org.ovirt.engine.api.restapi.resource; import javax.ws.rs.core.Response; import org.ovirt.engine.api.model.Balance; import org.ovirt.engine.api.resource.BalanceResource; import org.ovirt.engine.core.common.action.VdcActionType; import org.ovirt.engine.core.common.queries.IdQueryParameters; import org.ovirt.engine.core.common.queries.VdcQueryType; import org.ovirt.engine.core.common.scheduling.ClusterPolicy; import org.ovirt.engine.core.common.scheduling.parameters.ClusterPolicyCRUDParameters; import org.ovirt.engine.core.compat.Guid; public class BackendBalanceResource extends AbstractBackendSubResource<Balance, ClusterPolicy> implements BalanceResource { private Guid parentId; private final BackendBalancesResource parent; protected BackendBalanceResource(String id, BackendBalancesResource parent) { super(id, Balance.class, ClusterPolicy.class); this.parent = parent; this.parentId = parent.schedulingPolicyId; } @Override public Response remove() { ClusterPolicy entity = parent.getClusterPolicy(); updateEntityForRemove(entity, guid); return performAction(VdcActionType.EditClusterPolicy, new ClusterPolicyCRUDParameters(entity.getId(), entity)); } @Override public Balance get() { return performGet(VdcQueryType.GetClusterPolicyById, new IdQueryParameters(parentId)); } private void updateEntityForRemove(ClusterPolicy entity, Guid id) { if (entity.getBalance() == null || !entity.getBalance().equals(id)) { return; } entity.setBalance(null); } }