/** * */ package org.ovirt.engine.api.restapi.resource; import javax.ws.rs.core.Response; import org.ovirt.engine.api.model.GlusterBrick; import org.ovirt.engine.api.model.GlusterBricks; import org.ovirt.engine.api.model.GlusterVolume; import org.ovirt.engine.api.resource.GlusterVolumeBricksResource; import org.ovirt.engine.core.common.action.VdcActionType; import org.ovirt.engine.core.common.businessentities.GlusterBrickEntity; import org.ovirt.engine.core.common.glusteractions.AddBricksToGlusterVolumeParameters; import org.ovirt.engine.core.compat.Guid; /** * */ public class BackendGlusterBricksResource extends AbstractBackendCollectionResource<GlusterBrick, GlusterBrickEntity> implements GlusterVolumeBricksResource { private final BackendGlusterVolumeResource parent; private final String clusterId; public BackendGlusterBricksResource(String clusterId, BackendGlusterVolumeResource parent) { super(GlusterBrick.class, GlusterBrickEntity.class); this.parent = parent; this.clusterId = clusterId; } @Override public GlusterBricks list() { GlusterVolume volume = parent.get(); return volume.getGlusterBricks(); } @Override protected Response performRemove(String id) { // TODO Invoke VDSM to remove the brick from the volume return null; } @Override public Response add(GlusterBricks glusterbricks) { //validateParameters(glusterbricks, "glusterBricks.host", "glusterBricks.brickDirectory"); try { String brickList = ""; for (GlusterBrick brick : glusterbricks.getGlusterBricks()) { String brickQualifiedName = brick.getHost() + ":" + brick.getHost(); brickList += (brickList.isEmpty() ? "," : "") + brick.getHost() + ":" + brick.getBrickDirectory(); } return performAction(VdcActionType.AddBricksToGlusterVolume, new AddBricksToGlusterVolumeParameters(Guid.createGuidFromString(getClusterId()), parent.get() .getVolumeName(), brickList)); } catch (Exception e) { return handleError(e, false); } } public String getClusterId() { return clusterId; } }