private void optimizeVolumesForVirtStore(final List<GlusterVolumeEntity> volumeList) {
if(getConfirmWindow() != null) {
setConfirmWindow(null);
}
AsyncDataProvider.getInstance().getConfigFromCache(
new GetConfigurationValueParameters(ConfigValues.GlusterVolumeOptionGroupVirtValue, AsyncDataProvider.getInstance().getDefaultConfigurationVersion()),
new AsyncQuery<String>(optionGroupVirt -> AsyncDataProvider.getInstance().getConfigFromCache(new GetConfigurationValueParameters(ConfigValues.GlusterVolumeOptionOwnerUserVirtValue,
AsyncDataProvider.getInstance().getDefaultConfigurationVersion()),
new AsyncQuery<String>(optionOwnerUserVirt -> AsyncDataProvider.getInstance().getConfigFromCache(new GetConfigurationValueParameters(ConfigValues.GlusterVolumeOptionOwnerGroupVirtValue,
AsyncDataProvider.getInstance().getDefaultConfigurationVersion()),
new AsyncQuery<String>(optionOwnerGroupVirt -> {
ArrayList<ActionParametersBase> list = new ArrayList<>();
for (GlusterVolumeEntity volume : volumeList) {
Guid volumeId = volume.getId();
list.add(new GlusterVolumeOptionParameters(getOption(volumeId, "group", optionGroupVirt)));
list.add(new GlusterVolumeOptionParameters(getOption(volumeId, "storage.owner-uid", optionOwnerUserVirt)));
list.add(new GlusterVolumeOptionParameters(getOption(volumeId, "storage.owner-gid", optionOwnerGroupVirt)));
list.add(new GlusterVolumeOptionParameters(getOption(volumeId, "performance.strict-o-direct", "on")));
list.add(new GlusterVolumeOptionParameters(getOption(volumeId, "network.remote-dio", "off")));
list.add(new GlusterVolumeOptionParameters(getOption(volumeId, "cluster.granular-entry-heal", "enable")));
final GlusterVolumeOptionEntity checkOption = getOption(volumeId, "network.ping-timeout", "30");
if (volume.getOptions().stream().noneMatch
(obj -> obj.getKey().equalsIgnoreCase(checkOption.getKey()))) {
list.add(new GlusterVolumeOptionParameters(checkOption));
}
}
Frontend.getInstance().runMultipleAction(ActionType.SetGlusterVolumeOption, list);
}))))));
}