/**
*
*/
package org.ovirt.engine.core.vdsbroker.glusterbroker;
import java.util.HashMap;
import java.util.Map;
import org.ovirt.engine.core.common.businessentities.GlusterVolumeEntity;
import org.ovirt.engine.core.common.businessentities.GlusterVolumeEntity.TRANSPORT_TYPE;
import org.ovirt.engine.core.common.businessentities.GlusterVolumeOption;
import org.ovirt.engine.core.common.glustercommands.CreateGlusterVolumeVDSParameters;
/**
*
*/
public class CreateGlusterVolumeVDSCommand extends GlusterBrokerCommand<CreateGlusterVolumeVDSParameters> {
public CreateGlusterVolumeVDSCommand(CreateGlusterVolumeVDSParameters parameters) {
super(parameters);
}
@Override
protected void ExecuteIrsBrokerCommand() {
GlusterVolumeEntity volume = getParameters().getVolume();
Map<String, Object> parameters = new HashMap<String, Object>();
parameters.put("volumeName", volume.getName());
parameters.put("volumeType", volume.getVolumeType().toString());
parameters.put("replicaCount", volume.getReplicaCount());
parameters.put("stripeCount", volume.getStripeCount());
Object transportType = volume.getTransportType();
if(transportType == null || transportType.toString().isEmpty()) {
transportType = TRANSPORT_TYPE.ETHERNET.toString();
}
parameters.put("transportType", transportType.toString());
parameters.put("bricks", volume.getBrickDirectories().toArray());
status = getIrsProxy().glusterVolumeCreate(parameters);
// IMPORTANT! This handles errors if any
ProceedProxyReturnValue();
String accessControlList = volume.getAccessControlList();
if(accessControlList != null && !accessControlList.trim().isEmpty()) {
status = getIrsProxy().glusterVolumeSet(volume.getName(), GlusterVolumeEntity.OPTION_AUTH_ALLOW, accessControlList.trim());
ProceedProxyReturnValue();
}
if(!volume.isNfsEnabled()) {
status = getIrsProxy().glusterVolumeSet(volume.getName(), GlusterVolumeEntity.OPTION_NFS_DISABLE, "on");
ProceedProxyReturnValue();
}
for(GlusterVolumeOption option : volume.getOptions().getOptions()) {
status = getIrsProxy().glusterVolumeSet(volume.getName(), option.getKey(), option.getValue());
ProceedProxyReturnValue();
}
// TODO: handle CIFS related options
}
}