use of org.ovirt.engine.core.common.businessentities.gluster.GlusterGeoRepSession in project ovirt-engine by oVirt.
the class VolumeGeoRepListModel method showSessionOptions.
private void showSessionOptions() {
if (getWindow() != null) {
return;
}
GlusterGeoRepSession selectedGeoRepSession = getSelectedItem();
GlusterVolumeGeoReplicationSessionConfigModel configModel = new GlusterVolumeGeoReplicationSessionConfigModel(selectedGeoRepSession);
configModel.setTitle(constants.geoReplicationOptions());
// $NON-NLS-1$
configModel.setHashName("volume_geo_rep_configuration_display");
configModel.setHelpTag(HelpTag.volume_geo_rep_configuration_display);
configModel.startProgress();
fetchConfigForSession(selectedGeoRepSession);
setWindow(configModel);
addUICommandsToConfigWindow(configModel);
}
use of org.ovirt.engine.core.common.businessentities.gluster.GlusterGeoRepSession in project ovirt-engine by oVirt.
the class VolumeGeoRepListModel method updateActionAvailability.
private void updateActionAvailability(GlusterVolumeEntity volumeEntity) {
boolean allowNewGeoRepSessionCommand = true;
boolean allowStartSessionCommand = false;
boolean allowStopSessionCommand = false;
boolean allowResumeSessionCommand = false;
boolean allowPauseSessionCommand = false;
boolean allowSessionOptionsCommand = false;
boolean allowRemoveSessionCommand = false;
boolean allowSessionDetailsCommand = false;
if (volumeEntity == null) {
return;
}
if (getSelectedItems() != null && getSelectedItems().size() == 1) {
GlusterGeoRepSession selectedSession = getSelectedItem();
GeoRepSessionStatus sessionStatus = selectedSession.getStatus();
allowStartSessionCommand = sessionStatus == GeoRepSessionStatus.CREATED || sessionStatus == GeoRepSessionStatus.STOPPED;
allowStopSessionCommand = !allowStartSessionCommand;
allowResumeSessionCommand = sessionStatus == GeoRepSessionStatus.PAUSED;
allowPauseSessionCommand = sessionStatus == GeoRepSessionStatus.ACTIVE || sessionStatus == GeoRepSessionStatus.INITIALIZING;
allowSessionOptionsCommand = true;
allowNewGeoRepSessionCommand = volumeEntity.getStatus() == GlusterStatus.UP;
allowRemoveSessionCommand = sessionStatus == GeoRepSessionStatus.STOPPED || sessionStatus == GeoRepSessionStatus.CREATED;
allowSessionDetailsCommand = true;
}
getNewSessionCommand().setIsExecutionAllowed(allowNewGeoRepSessionCommand);
getRemoveSessionCommand().setIsExecutionAllowed(allowRemoveSessionCommand);
getStartSessionCommand().setIsExecutionAllowed(allowStartSessionCommand);
getStopSessionCommand().setIsExecutionAllowed(allowStopSessionCommand);
getPauseSessionCommand().setIsExecutionAllowed(allowPauseSessionCommand);
getResumeSessionCommand().setIsExecutionAllowed(allowResumeSessionCommand);
getSessionOptionsCommand().setIsExecutionAllowed(allowSessionOptionsCommand);
getViewSessionDetailsCommand().setIsExecutionAllowed(allowSessionDetailsCommand);
getRefreshSessionsCommand().setIsAvailable(true);
}
use of org.ovirt.engine.core.common.businessentities.gluster.GlusterGeoRepSession in project ovirt-engine by oVirt.
the class VolumeGeoRepListModel method performGeoRepAction.
private void performGeoRepAction(String commandName, String confirmTitle, HelpTag helpTag, String hashName, String action, ActionType actionType) {
GlusterGeoRepSession selectedSession = getSelectedItem();
if (selectedSession == null) {
return;
}
initializeGeoRepActionConfirmation(confirmTitle, helpTag, hashName, constants.geoRepForceHelp(), messages.geoRepForceTitle(action), commandName, selectedSession.getMasterVolumeName(), selectedSession.getSlaveVolumeName(), selectedSession.getSlaveHostName(), null);
onGeoRepSessionAction(actionType);
}
use of org.ovirt.engine.core.common.businessentities.gluster.GlusterGeoRepSession in project ovirt-engine by oVirt.
the class VolumeGeoRepListModel method onGeoRepSessionAction.
private void onGeoRepSessionAction(ActionType actionType) {
final GlusterVolumeGeoRepActionConfirmationModel cModel = (GlusterVolumeGeoRepActionConfirmationModel) getWindow();
cModel.startProgress();
boolean force = cModel.getForce().getEntity();
GlusterGeoRepSession selectedSession = getSelectedItem();
GlusterVolumeGeoRepSessionParameters sessionParamters = new GlusterVolumeGeoRepSessionParameters(selectedSession.getMasterVolumeId(), selectedSession.getId());
sessionParamters.setForce(force);
Frontend.getInstance().runAction(actionType, sessionParamters, result -> {
if (cModel == null) {
return;
} else {
cModel.stopProgress();
if (!result.getReturnValue().getSucceeded()) {
// cModel.setActionConfirmationMessage(result.getReturnValue().getFault().getMessage());
setErrorMessage(result.getReturnValue(), cModel);
} else {
setWindow(null);
}
}
}, this, false);
}
use of org.ovirt.engine.core.common.businessentities.gluster.GlusterGeoRepSession in project ovirt-engine by oVirt.
the class AddBricksToGlusterVolumeCommand method postAddBrickHandleGeoRepCase.
private void postAddBrickHandleGeoRepCase(final List<GlusterBrickEntity> bricksList, final Set<Guid> newServerIds) {
// newServerIds is the set of ids of the servers that were not part of the volume before this attempt of brick
// addition.
final GlusterVolumeEntity volume = getGlusterVolume();
List<GlusterGeoRepSession> sessions = new ArrayList<>();
// Get all sessions for which the volume is a master
List<GlusterGeoRepSession> geoRepSessionsForVolumeAsMaster = glusterGeoRepDao.getGeoRepSessions(volume.getId());
if (geoRepSessionsForVolumeAsMaster != null && !geoRepSessionsForVolumeAsMaster.isEmpty()) {
sessions.addAll(geoRepSessionsForVolumeAsMaster);
}
// Get session for which the volume is a slave
GlusterGeoRepSession geoRepSessionForVolumeAsSlave = glusterGeoRepDao.getGeoRepSessionBySlaveVolume(volume.getId());
if (geoRepSessionForVolumeAsSlave != null) {
sessions.add(geoRepSessionForVolumeAsSlave);
}
// If this volume is empty, nothing to do.
if (sessions.isEmpty()) {
return;
}
List<Callable<Boolean>> perSessionCallables = new ArrayList<>();
for (final GlusterGeoRepSession currentSession : sessions) {
perSessionCallables.add(() -> {
// Ids of servers on which steps like mount broker setup and/or passwordless ssh need to be done.
Set<Guid> serverIdsToPrep = new HashSet<>(newServerIds);
// Assume current volume as master volume of current session
GlusterVolumeEntity masterVolume = volume;
boolean succeeded = true;
addCustomValue(GlusterConstants.VOLUME_NAME, currentSession.getMasterVolumeName());
addCustomValue(GlusterConstants.GEO_REP_SLAVE_VOLUME_NAME, currentSession.getSlaveVolumeName());
addCustomValue(GlusterConstants.GEO_REP_USER, currentSession.getUserName());
if (currentSession.getMasterVolumeId().equals(volume.getId())) {
/*
* If the volume is master, and there are any new servers, serverIdsToPrep is a set of all slave
* servers. This is bcoz the new server's keys also need to be updated to all slave servers.
*/
serverIdsToPrep = getSlaveNodesSet(currentSession);
} else {
// If its slave and non-root session, do partial mount broker setup
if (!currentSession.getUserName().equalsIgnoreCase("root")) {
succeeded = evaluateReturnValue(errorType, backend.runInternalAction(ActionType.SetupGlusterGeoRepMountBrokerInternal, new SetUpMountBrokerParameters(volume.getClusterId(), serverIdsToPrep, volume.getName(), currentSession.getUserName())));
if (succeeded) {
auditLogDirector.log(this, AuditLogType.GLUSTER_SETUP_GEOREP_MOUNT_BROKER);
}
}
/*
* If the assumption that current volume is master, is invalid, which will be known here, update
* master volume correctly.
*/
masterVolume = glusterVolumeDao.getById(currentSession.getMasterVolumeId());
}
if (succeeded) {
succeeded = evaluateReturnValue(errorType, runInternalAction(ActionType.SetUpPasswordLessSSHInternal, new SetUpPasswordLessSSHParameters(masterVolume.getClusterId(), serverIdsToPrep, currentSession.getUserName())));
}
if (succeeded) {
auditLogDirector.log(this, AuditLogType.SET_UP_PASSWORDLESS_SSH);
succeeded = evaluateReturnValue(errorType, runVdsCommand(VDSCommandType.CreateGlusterVolumeGeoRepSession, new GlusterVolumeGeoRepSessionVDSParameters(glusterUtil.getRandomUpServer(masterVolume.getClusterId()).getId(), currentSession.getMasterVolumeName(), currentSession.getSlaveHostName(), currentSession.getSlaveVolumeName(), currentSession.getUserName(), true)));
}
if (currentSession.getStatus() == GeoRepSessionStatus.ACTIVE || currentSession.getStatus() == GeoRepSessionStatus.INITIALIZING) {
succeeded = evaluateReturnValue(errorType, runInternalAction(ActionType.StartGlusterVolumeGeoRep, new GlusterVolumeGeoRepSessionParameters(currentSession.getMasterVolumeId(), currentSession.getId(), true)));
}
return succeeded;
});
}
ThreadPoolUtil.invokeAll(perSessionCallables);
}
Aggregations