package org.ovirt.engine.core.vdsbroker.gluster; import java.util.Set; import org.ovirt.engine.core.common.businessentities.gluster.GlusterVolumeEntity; import org.ovirt.engine.core.common.businessentities.gluster.TransportType; import org.ovirt.engine.core.common.vdscommands.gluster.CreateGlusterVolumeVDSParameters; import org.ovirt.engine.core.compat.Guid; import org.ovirt.engine.core.vdsbroker.irsbroker.OneUuidReturn; import org.ovirt.engine.core.vdsbroker.vdsbroker.Status; /** * VDS command to create a gluster volume */ public class CreateGlusterVolumeVDSCommand<P extends CreateGlusterVolumeVDSParameters> extends AbstractGlusterBrokerCommand<P> { private OneUuidReturn uuidReturn; public CreateGlusterVolumeVDSCommand(P parameters) { super(parameters); } @Override protected Status getReturnStatus() { return uuidReturn.getStatus(); } @Override protected void executeVdsBrokerCommand() { GlusterVolumeEntity volume = getParameters().getVolume(); boolean isForce = getParameters().isForce(); uuidReturn = getBroker().glusterVolumeCreate(volume.getName(), volume.getBrickDirectories().toArray(new String[0]), volume.getReplicaCount(), volume.getStripeCount(), getTransportTypeArr(volume), isForce, volume.getIsArbiter()); // Handle errors if any proceedProxyReturnValue(); if(getVDSReturnValue().getSucceeded()) { // set the volume updated with id as the return value volume.setId(Guid.createGuidFromStringDefaultEmpty(uuidReturn.uuid)); setReturnValue(volume); } } private String[] getTransportTypeArr(GlusterVolumeEntity volume) { Set<TransportType> transportTypes = volume.getTransportTypes(); if(transportTypes == null) { return null; } String[] transportTypeArr = new String[transportTypes.size()]; int index = 0; for(TransportType transportType : transportTypes) { transportTypeArr[index++] = transportType.name(); } return transportTypeArr; } }