package org.ovirt.engine.api.restapi.resource; import static org.ovirt.engine.api.restapi.resource.BackendClustersResource.SUB_COLLECTIONS; import org.ovirt.engine.api.model.Cluster; import org.ovirt.engine.api.resource.AssignedNetworksResource; import org.ovirt.engine.api.resource.AssignedPermissionsResource; import org.ovirt.engine.api.resource.ClusterResource; import org.ovirt.engine.api.resource.GlusterVolumesResource; import org.ovirt.engine.core.common.VdcObjectType; import org.ovirt.engine.core.common.action.VdcActionParametersBase; import org.ovirt.engine.core.common.action.VdcActionType; import org.ovirt.engine.core.common.action.VdsGroupOperationParameters; import org.ovirt.engine.core.common.businessentities.VDSGroup; import org.ovirt.engine.core.common.queries.GetPermissionsForObjectParameters; import org.ovirt.engine.core.common.queries.GetVdsGroupByIdParameters; import org.ovirt.engine.core.common.queries.VdcQueryType; public class BackendClusterResource extends AbstractBackendSubResource<Cluster, VDSGroup> implements ClusterResource { public BackendClusterResource(String id) { super(id, Cluster.class, VDSGroup.class, SUB_COLLECTIONS); } @Override public Cluster get() { return performGet(VdcQueryType.GetVdsGroupById, new GetVdsGroupByIdParameters(guid)); } @Override public Cluster update(Cluster incoming) { return performUpdate(incoming, new QueryIdResolver(VdcQueryType.GetVdsGroupById, GetVdsGroupByIdParameters.class), VdcActionType.UpdateVdsGroup, new UpdateParametersProvider()); } @Override public AssignedNetworksResource getAssignedNetworksSubResource() { return inject(new BackendClusterNetworksResource(id)); } @Override public AssignedPermissionsResource getPermissionsResource() { return inject(new BackendAssignedPermissionsResource(guid, VdcQueryType.GetPermissionsForObject, new GetPermissionsForObjectParameters(guid), Cluster.class, VdcObjectType.VdsGroups)); } protected class UpdateParametersProvider implements ParametersProvider<Cluster, VDSGroup> { @Override public VdcActionParametersBase getParameters(Cluster incoming, VDSGroup entity) { return new VdsGroupOperationParameters(map(incoming, entity)); } } @Override public GlusterVolumesResource getGlusterVolumesResource() { return inject(new BackendGlusterVolumesResource(id)); } }