/** * */ package org.ovirt.engine.api.restapi.resource; import java.util.List; import javax.ws.rs.core.Response; import org.ovirt.engine.api.model.GlusterVolume; import org.ovirt.engine.api.model.GlusterVolumes; import org.ovirt.engine.api.resource.GlusterVolumeResource; import org.ovirt.engine.api.resource.GlusterVolumesResource; import org.ovirt.engine.core.common.action.VdcActionType; import org.ovirt.engine.core.common.action.VdcReturnValueBase; import org.ovirt.engine.core.common.action.VdsGroupParametersBase; import org.ovirt.engine.core.common.businessentities.GlusterVolumeEntity; import org.ovirt.engine.core.common.glusteractions.CreateGlusterVolumeParameters; import org.ovirt.engine.core.common.glusteractions.GlusterVolumeParameters; import org.ovirt.engine.core.compat.Guid; /** * */ public class BackendGlusterVolumesResource extends AbstractBackendCollectionResource<GlusterVolume, GlusterVolumeEntity> implements GlusterVolumesResource { static final String[] SUB_COLLECTIONS = { "glusterbricks", "options" }; private final String clusterId; public BackendGlusterVolumesResource(String clusterId) { super(GlusterVolume.class, org.ovirt.engine.core.common.businessentities.GlusterVolumeEntity.class, SUB_COLLECTIONS); this.clusterId = clusterId; } @Override public GlusterVolumes list() { VdcReturnValueBase result = backend.RunAction(VdcActionType.ListGlusterVolumes, new VdsGroupParametersBase(Guid.createGuidFromString(getClusterId()))); List<GlusterVolumeEntity> volumes = (List<GlusterVolumeEntity>)result.getActionReturnValue(); return mapCollection(volumes); } protected GlusterVolumes mapCollection(List<GlusterVolumeEntity> entities) { GlusterVolumes collection = new GlusterVolumes(); for (GlusterVolumeEntity entity : entities) { collection.getGlusterVolumes().add(populate(map(entity), entity)); } return collection; } @Override @SingleEntityResource public GlusterVolumeResource getGlusterVolumeSubResource(String id) { return inject(new BackendGlusterVolumeResource(getClusterId(), id, this)); } @Override public Response add(GlusterVolume volume) { validateParameters(volume, "volumeName", "volumeType", "glusterBricks"); try { GlusterVolumeEntity volumeEntity = getMapper(GlusterVolume.class, GlusterVolumeEntity.class).map(volume, null); return performAction(VdcActionType.CreateGlusterVolume, new CreateGlusterVolumeParameters(Guid.createGuidFromString(getClusterId()), volumeEntity)); } catch (Exception e) { return handleError(e, false); } } public String getClusterId() { return clusterId; } @Override protected Response performRemove(String id) { //Delete Gluster Volume Response res = performAction(VdcActionType.DeleteGlusterVolume, new GlusterVolumeParameters(Guid.createGuidFromString(getClusterId()), getGlusterVolumeSubResource(id).get().getVolumeName())); return res; // return performAction(VdcActionType.DeleteGlusterVolume, new VdsActionParameters(asGuid(id))); } }