package org.ovirt.engine.ui.uicommonweb.models.gluster; import java.util.List; import org.ovirt.engine.core.common.action.VdcActionType; import org.ovirt.engine.core.common.action.gluster.GlusterServiceParameters; import org.ovirt.engine.core.common.businessentities.VDS; import org.ovirt.engine.core.common.businessentities.gluster.GlusterServerService; import org.ovirt.engine.core.common.businessentities.gluster.GlusterServiceStatus; import org.ovirt.engine.core.common.businessentities.gluster.ServiceType; import org.ovirt.engine.core.common.mode.ApplicationMode; import org.ovirt.engine.ui.frontend.Frontend; import org.ovirt.engine.ui.uicommonweb.UICommand; import org.ovirt.engine.ui.uicommonweb.dataprovider.AsyncDataProvider; import org.ovirt.engine.ui.uicommonweb.help.HelpTag; import org.ovirt.engine.ui.uicommonweb.models.SearchableListModel; import org.ovirt.engine.ui.uicompat.ConstantsManager; public class HostGlusterSwiftListModel extends SearchableListModel<VDS, GlusterServerService> { private UICommand startSwiftCommand; public UICommand getStartSwiftCommand() { return startSwiftCommand; } public void setStartSwiftCommand(UICommand startSwiftCommand) { this.startSwiftCommand = startSwiftCommand; } private UICommand stopSwiftCommand; public UICommand getStopSwiftCommand() { return stopSwiftCommand; } public void setStopSwiftCommand(UICommand stopSwiftCommand) { this.stopSwiftCommand = stopSwiftCommand; } private UICommand restartSwiftCommand; public UICommand getRestartSwiftCommand() { return restartSwiftCommand; } public void setRestartSwiftCommand(UICommand restartSwiftCommand) { this.restartSwiftCommand = restartSwiftCommand; } public HostGlusterSwiftListModel() { setTitle(ConstantsManager.getInstance().getConstants().glusterSwiftTitle()); setHelpTag(HelpTag.gluster_swift); setHashName("gluster_swift"); //$NON-NLS-1$ setAvailableInModes(ApplicationMode.GlusterOnly); setStartSwiftCommand(new UICommand("StartSwift", this)); //$NON-NLS-1$ setStopSwiftCommand(new UICommand("StopSwift", this)); //$NON-NLS-1$ setRestartSwiftCommand(new UICommand("RestartSwift", this)); //$NON-NLS-1$ getStartSwiftCommand().setIsExecutionAllowed(false); getStopSwiftCommand().setIsExecutionAllowed(false); getRestartSwiftCommand().setIsExecutionAllowed(false); } @Override protected void onEntityChanged() { super.onEntityChanged(); getSearchCommand().execute(); updateActionAvailability(); } @Override public void search() { if (getEntity() != null) { super.search(); } } @Override protected void syncSearch() { if (getEntity() == null) { return; } AsyncDataProvider.getInstance().getGlusterSwiftServices(new AsyncQuery<>(returnValue -> { setItems(returnValue); updateActionAvailability(); }), getEntity().getId()); } private void updateActionAvailability() { boolean enableStart = false; boolean enableStop = false; boolean enableRestart = false; List<GlusterServerService> serviceList = (List<GlusterServerService>) getItems(); if (serviceList == null || serviceList.isEmpty()) { enableStart = false; enableStop = false; enableRestart = false; } else { for (GlusterServerService service : serviceList) { if (service.getStatus() != GlusterServiceStatus.NOT_AVAILABLE) { if (service.getStatus() != GlusterServiceStatus.RUNNING) { enableStart = true; } if (service.getStatus() != GlusterServiceStatus.STOPPED) { enableStop = true; } enableRestart = true; } if (enableStart && enableStop && enableStart) { break; } } } getStartSwiftCommand().setIsExecutionAllowed(enableStart); getStopSwiftCommand().setIsExecutionAllowed(enableStop); getRestartSwiftCommand().setIsExecutionAllowed(enableRestart); } private void startSwift() { manageSwift("start"); //$NON-NLS-1$ } private void stopSwift() { manageSwift("stop"); //$NON-NLS-1$ } private void restartSwift() { manageSwift("restart"); //$NON-NLS-1$ } private void manageSwift(String action) { GlusterServiceParameters parameters = new GlusterServiceParameters(getEntity().getClusterId(), getEntity().getId(), ServiceType.GLUSTER_SWIFT, action); Frontend.getInstance().runAction(VdcActionType.ManageGlusterService, parameters); } @Override public void executeCommand(UICommand command) { super.executeCommand(command); if (command.equals(getStartSwiftCommand())) { startSwift(); } else if (command.equals(getStopSwiftCommand())) { stopSwift(); } else if (command.equals(getRestartSwiftCommand())) { restartSwift(); } } @Override protected String getListName() { return "HostGlusterSwiftListModel"; //$NON-NLS-1$ } }