package org.ovirt.engine.ui.uicommonweb.models.hosts;
import java.util.ArrayList;
import java.util.Arrays;
import java.util.Date;
import java.util.Objects;
import org.ovirt.engine.core.common.VdcActionUtils;
import org.ovirt.engine.core.common.action.VdcActionParametersBase;
import org.ovirt.engine.core.common.action.VdcActionType;
import org.ovirt.engine.core.common.action.VdsActionParameters;
import org.ovirt.engine.core.common.action.gluster.GlusterServiceParameters;
import org.ovirt.engine.core.common.businessentities.NonOperationalReason;
import org.ovirt.engine.core.common.businessentities.VDS;
import org.ovirt.engine.core.common.businessentities.VDSStatus;
import org.ovirt.engine.core.common.businessentities.VdsSpmStatus;
import org.ovirt.engine.core.common.businessentities.gluster.PeerStatus;
import org.ovirt.engine.core.common.businessentities.gluster.ServiceType;
import org.ovirt.engine.core.compat.RpmVersion;
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.EntityModel;
import org.ovirt.engine.ui.uicommonweb.models.Model;
import org.ovirt.engine.ui.uicompat.ConstantsManager;
import org.ovirt.engine.ui.uicompat.EnumTranslator;
import org.ovirt.engine.ui.uicompat.Event;
import org.ovirt.engine.ui.uicompat.EventArgs;
import org.ovirt.engine.ui.uicompat.EventDefinition;
import org.ovirt.engine.ui.uicompat.PropertyChangedEventArgs;
import org.ovirt.engine.ui.uicompat.UIConstants;
import org.ovirt.engine.ui.uicompat.UIMessages;
@SuppressWarnings("unused")
public class HostGeneralModel extends EntityModel<VDS> {
private static final UIConstants constants = ConstantsManager.getInstance().getConstants();
private static final UIMessages messages = ConstantsManager.getInstance().getMessages();
public static final EventDefinition requestEditEventDefinition;
private Event<EventArgs> privateRequestEditEvent;
private UICommand upgradeHostCommand;
public UICommand getUpgradeHostCommand() {
return upgradeHostCommand;
}
private void setUpgradeHostCommand(UICommand upgradeHostCommand) {
this.upgradeHostCommand = upgradeHostCommand;
}
public Event<EventArgs> getRequestEditEvent() {
return privateRequestEditEvent;
}
private void setRequestEditEvent(Event<EventArgs> value) {
privateRequestEditEvent = value;
}
public static final EventDefinition requestGOToEventsTabEventDefinition;
private Event<EventArgs> privateRequestGOToEventsTabEvent;
public Event<EventArgs> getRequestGOToEventsTabEvent() {
return privateRequestGOToEventsTabEvent;
}
private void setRequestGOToEventsTabEvent(Event<EventArgs> value) {
privateRequestGOToEventsTabEvent = value;
}
private UICommand privateSaveNICsConfigCommand;
public UICommand getSaveNICsConfigCommand() {
return privateSaveNICsConfigCommand;
}
private void setSaveNICsConfigCommand(UICommand value) {
privateSaveNICsConfigCommand = value;
}
private UICommand privateEditHostCommand;
public UICommand getEditHostCommand() {
return privateEditHostCommand;
}
private void setEditHostCommand(UICommand value) {
privateEditHostCommand = value;
}
private UICommand privateGoToEventsCommand;
public UICommand getGoToEventsCommand() {
return privateGoToEventsCommand;
}
private void setGoToEventsCommand(UICommand value) {
privateGoToEventsCommand = value;
}
private UICommand restartGlusterCommand;
public UICommand getRestartGlusterCommand() {
return restartGlusterCommand;
}
private void setRestartGlusterCommand(UICommand value) {
restartGlusterCommand = value;
}
private boolean updateUpgradeAlert;
@Override
public void setEntity(VDS vds) {
updateUpgradeAlert = vds == null || getEntity() == null
|| !vds.getId().equals(getEntity().getId())
|| !vds.getStatus().equals(getEntity().getStatus());
super.setEntity(vds);
}
// 1st column in General tab
private String os;
public String getOS() {
return os;
}
public void setOS(String value) {
if (!Objects.equals(os, value)) {
os = value;
onPropertyChanged(new PropertyChangedEventArgs("OS")); //$NON-NLS-1$
}
}
private String osPrettyName;
public String getOsPrettyName() {
return osPrettyName;
}
public void setOsPrettyName(String value) {
if (!Objects.equals(osPrettyName, value)) {
osPrettyName = value;
onPropertyChanged(new PropertyChangedEventArgs("OsPrettyName")); //$NON-NLS-1$
}
}
private String kernelVersion;
public String getKernelVersion() {
return kernelVersion;
}
public void setKernelVersion(String value) {
if (!Objects.equals(kernelVersion, value)) {
kernelVersion = value;
onPropertyChanged(new PropertyChangedEventArgs("KernelVersion")); //$NON-NLS-1$
}
}
private String kvmVersion;
public String getKvmVersion() {
return kvmVersion;
}
public void setKvmVersion(String value) {
if (!Objects.equals(kvmVersion, value)) {
kvmVersion = value;
onPropertyChanged(new PropertyChangedEventArgs("KvmVersion")); //$NON-NLS-1$
}
}
private RpmVersion libvirtVersion;
public RpmVersion getLibvirtVersion() {
return libvirtVersion;
}
public void setLibvirtVersion(RpmVersion value) {
if (!Objects.equals(libvirtVersion, value)) {
libvirtVersion = value;
onPropertyChanged(new PropertyChangedEventArgs("LibvirtVersion")); //$NON-NLS-1$
}
}
private RpmVersion vdsmVersion;
public RpmVersion getVdsmVersion() {
return vdsmVersion;
}
public void setVdsmVersion(RpmVersion value) {
if (!Objects.equals(vdsmVersion, value)) {
vdsmVersion = value;
onPropertyChanged(new PropertyChangedEventArgs("VdsmVersion")); //$NON-NLS-1$
}
}
private String spiceVersion;
public String getSpiceVersion() {
return spiceVersion;
}
public void setSpiceVersion(String value) {
if (!Objects.equals(spiceVersion, value)) {
spiceVersion = value;
onPropertyChanged(new PropertyChangedEventArgs("SpiceVersion")); //$NON-NLS-1$
}
}
private RpmVersion glusterVersion;
public RpmVersion getGlusterVersion() {
return glusterVersion;
}
public void setGlusterVersion(RpmVersion value) {
if (!Objects.equals(glusterVersion, value)) {
glusterVersion = value;
onPropertyChanged(new PropertyChangedEventArgs("glusterVersion")); //$NON-NLS-1$
}
}
private RpmVersion librbdVersion;
public RpmVersion getLibrbdVersion() {
return librbdVersion;
}
public void setLibrbdVersion(RpmVersion value) {
if (!Objects.equals(librbdVersion, value)) {
librbdVersion = value;
onPropertyChanged(new PropertyChangedEventArgs("LibrbdVersion")); //$NON-NLS-1$
}
}
private String iScsiInitiatorName;
public String getIScsiInitiatorName() {
return iScsiInitiatorName;
}
public void setIScsiInitiatorName(String value) {
if (!Objects.equals(iScsiInitiatorName, value)) {
iScsiInitiatorName = value;
onPropertyChanged(new PropertyChangedEventArgs("IScsiInitiatorName")); //$NON-NLS-1$
}
}
// 2nd column in General tab
private Integer spmPriorityValue;
private Integer spmMaxPriorityValue;
private Integer spmDefaultPriorityValue;
private int spmLowPriorityValue;
private int spmHighPriorityValue;
private int spmNeverPriorityValue = -1;
public Integer getSpmPriorityValue() {
return spmPriorityValue;
}
public void setSpmPriorityValue(Integer spmPriorityValue) {
if (this.spmPriorityValue == null || !this.spmPriorityValue.equals(spmPriorityValue)) {
this.spmPriorityValue = spmPriorityValue;
if (spmMaxPriorityValue == null || spmDefaultPriorityValue == null) {
retrieveMaxSpmPriority();
}
else {
updateSpmPriority();
}
}
}
private void retrieveMaxSpmPriority() {
AsyncDataProvider.getInstance().getMaxSpmPriority(new AsyncQuery<>(returnValue -> {
spmMaxPriorityValue = returnValue;
retrieveDefaultSpmPriority();
}));
}
private void retrieveDefaultSpmPriority() {
AsyncDataProvider.getInstance().getDefaultSpmPriority(new AsyncQuery<>(returnValue -> {
spmDefaultPriorityValue = returnValue;
updateSpmPriorityValues();
updateSpmPriority();
}));
}
private void updateSpmPriorityValues() {
spmLowPriorityValue = spmDefaultPriorityValue / 2;
spmHighPriorityValue = spmDefaultPriorityValue + (spmMaxPriorityValue - spmDefaultPriorityValue) / 2;
}
private void updateSpmPriority() {
if (spmPriorityValue == null) {
setSpmPriority(null);
}
else if (spmPriorityValue == spmLowPriorityValue) {
setSpmPriority(constants.lowTitle());
}
else if (spmPriorityValue.equals(spmDefaultPriorityValue)) {
setSpmPriority(constants.mediumTitle());
}
else if (spmPriorityValue == spmHighPriorityValue) {
setSpmPriority(constants.highTitle());
}
else if (spmPriorityValue == spmNeverPriorityValue) {
setSpmPriority(constants.neverTitle());
}
else {
setSpmPriority(messages.customSpmPriority(spmPriorityValue));
}
}
private String spmPriority;
public String getSpmPriority() {
return spmPriority;
}
public void setSpmPriority(String spmPriority) {
if (this.spmPriority == null || !this.spmPriority.equals(spmPriority)) {
this.spmPriority = spmPriority;
onPropertyChanged(new PropertyChangedEventArgs("SpmPriority")); //$NON-NLS-1$
}
}
private Integer activeVms;
public Integer getActiveVms() {
return activeVms;
}
public void setActiveVms(Integer value) {
if (activeVms == null && value == null) {
return;
}
if (activeVms == null || !activeVms.equals(value)) {
activeVms = value;
onPropertyChanged(new PropertyChangedEventArgs("ActiveVms")); //$NON-NLS-1$
}
}
// 3rd column in General tab
private Integer sharedMemory;
public Integer getSharedMemory() {
return sharedMemory;
}
public void setSharedMemory(Integer value) {
if (sharedMemory == null && value == null) {
return;
}
if (sharedMemory == null || !sharedMemory.equals(value)) {
sharedMemory = value;
onPropertyChanged(new PropertyChangedEventArgs("SharedMemory")); //$NON-NLS-1$
}
}
private Integer physicalMemory;
public Integer getPhysicalMemory() {
return physicalMemory;
}
public void setPhysicalMemory(Integer value) {
if (physicalMemory == null && value == null) {
return;
}
if (physicalMemory == null || !physicalMemory.equals(value)) {
physicalMemory = value;
onPropertyChanged(new PropertyChangedEventArgs("PhysicalMemory")); //$NON-NLS-1$
}
}
private Long swapTotal;
public Long getSwapTotal() {
return swapTotal;
}
public void setSwapTotal(Long value) {
if (swapTotal == null && value == null) {
return;
}
if (swapTotal == null || !swapTotal.equals(value)) {
swapTotal = value;
onPropertyChanged(new PropertyChangedEventArgs("SwapTotal")); //$NON-NLS-1$
}
}
private Long swapFree;
public Long getSwapFree() {
return swapFree;
}
public void setSwapFree(Long value) {
if (swapFree == null && value == null) {
return;
}
if (swapFree == null || !swapFree.equals(value)) {
swapFree = value;
onPropertyChanged(new PropertyChangedEventArgs("SwapFree")); //$NON-NLS-1$
}
}
private Integer freeMemory;
public Integer getFreeMemory() {
return freeMemory;
}
public void setFreeMemory(Integer value) {
if (freeMemory == null && value == null) {
return;
}
if (freeMemory == null || !freeMemory.equals(value)) {
freeMemory = value;
onPropertyChanged(new PropertyChangedEventArgs("FreeMemory")); //$NON-NLS-1$
}
}
private Integer usedMemory;
public Integer getUsedMemory() {
return usedMemory;
}
public void setUsedMemory(Integer value) {
if (usedMemory == null && value == null) {
return;
}
if (usedMemory == null || !usedMemory.equals(value)) {
usedMemory = value;
onPropertyChanged(new PropertyChangedEventArgs("UsedMemory")); //$NON-NLS-1$
}
}
private Long usedSwap;
public Long getUsedSwap() {
return usedSwap;
}
public void setUsedSwap(Long value) {
if (usedSwap == null && value == null) {
return;
}
if (usedSwap == null || !usedSwap.equals(value)) {
usedSwap = value;
onPropertyChanged(new PropertyChangedEventArgs("UsedSwap")); //$NON-NLS-1$
}
}
private Float maxSchedulingMemory;
public Float getMaxSchedulingMemory() {
return maxSchedulingMemory;
}
private Boolean memoryPageSharing;
public Boolean getMemoryPageSharing() {
return memoryPageSharing;
}
public void setMemoryPageSharing(Boolean value) {
if (memoryPageSharing == null && value == null) {
return;
}
if (memoryPageSharing == null || !memoryPageSharing.equals(value)) {
memoryPageSharing = value;
onPropertyChanged(new PropertyChangedEventArgs("MemoryPageSharing")); //$NON-NLS-1$
}
}
private Object automaticLargePage;
public Object getAutomaticLargePage() {
return automaticLargePage;
}
public void setAutomaticLargePage(Object value) {
if (automaticLargePage != value) {
automaticLargePage = value;
onPropertyChanged(new PropertyChangedEventArgs("AutomaticLargePage")); //$NON-NLS-1$
}
}
private String kdumpStatus;
public String getKdumpStatus() {
return kdumpStatus;
}
public void setKdumpStatus(String value) {
if (!Objects.equals(kdumpStatus, value)) {
kdumpStatus = value;
onPropertyChanged(new PropertyChangedEventArgs("KdumpStatus")); //$NON-NLS-1$
}
}
private String hostedEngineHa;
public String getHostedEngineHa() {
return hostedEngineHa;
}
public void setHostedEngineHa(String value) {
if (hostedEngineHa == null && value == null) {
return;
}
if (hostedEngineHa == null || !hostedEngineHa.equals(value)) {
hostedEngineHa = value;
onPropertyChanged(new PropertyChangedEventArgs("HostedEngineHa")); //$NON-NLS-1$
}
}
private Boolean hostedEngineHaIsConfigured;
public Boolean getHostedEngineHaIsConfigured() {
return hostedEngineHaIsConfigured;
}
public void setHostedEngineHaIsConfigured(Boolean value) {
if (hostedEngineHaIsConfigured == null && value == null) {
return;
}
if (hostedEngineHaIsConfigured == null || !hostedEngineHaIsConfigured.equals(value)) {
hostedEngineHaIsConfigured = value;
onPropertyChanged(new PropertyChangedEventArgs("HostedEngineHaIsConfigured")); //$NON-NLS-1$
}
}
// Alert section in general tab
private boolean hasAnyAlert;
public boolean getHasAnyAlert() {
return hasAnyAlert;
}
public void setHasAnyAlert(boolean value) {
if (hasAnyAlert != value) {
hasAnyAlert = value;
onPropertyChanged(new PropertyChangedEventArgs("HasAnyAlert")); //$NON-NLS-1$
}
}
private boolean hasUpgradeAlert;
public boolean getHasUpgradeAlert() {
return hasUpgradeAlert;
}
public void setHasUpgradeAlert(boolean value) {
if (hasUpgradeAlert != value) {
hasUpgradeAlert = value;
onPropertyChanged(new PropertyChangedEventArgs("HasUpgradeAlert")); //$NON-NLS-1$
}
}
private boolean hasManualFenceAlert;
public boolean getHasManualFenceAlert() {
return hasManualFenceAlert;
}
public void setHasManualFenceAlert(boolean value) {
if (hasManualFenceAlert != value) {
hasManualFenceAlert = value;
onPropertyChanged(new PropertyChangedEventArgs("HasManualFenceAlert")); //$NON-NLS-1$
}
}
private boolean hasNoPowerManagementAlert;
public boolean getHasNoPowerManagementAlert() {
return hasNoPowerManagementAlert;
}
public void setHasNoPowerManagementAlert(boolean value) {
if (hasNoPowerManagementAlert != value) {
hasNoPowerManagementAlert = value;
onPropertyChanged(new PropertyChangedEventArgs("HasNoPowerManagementAlert")); //$NON-NLS-1$
}
}
private boolean hasGlusterDisconnectedAlert;
public boolean getHasGlusterDisconnectedAlert() {
return hasGlusterDisconnectedAlert;
}
public void setHasGlusterDisconnectedAlert(boolean value) {
if (hasGlusterDisconnectedAlert != value) {
hasGlusterDisconnectedAlert = value;
onPropertyChanged(new PropertyChangedEventArgs("HasGlusterDisconnectedAlert")); //$NON-NLS-1$
}
}
private boolean hasReinstallAlertNonResponsive;
public boolean getHasReinstallAlertNonResponsive() {
return hasReinstallAlertNonResponsive;
}
public void setHasReinstallAlertNonResponsive(boolean value) {
if (hasReinstallAlertNonResponsive != value) {
hasReinstallAlertNonResponsive = value;
onPropertyChanged(new PropertyChangedEventArgs("HasReinstallAlertNonResponsive")); //$NON-NLS-1$
}
}
private boolean hasReinstallAlertInstallFailed;
public boolean getHasReinstallAlertInstallFailed() {
return hasReinstallAlertInstallFailed;
}
public void setHasReinstallAlertInstallFailed(boolean value) {
if (hasReinstallAlertInstallFailed != value) {
hasReinstallAlertInstallFailed = value;
onPropertyChanged(new PropertyChangedEventArgs("HasReinstallAlertInstallFailed")); //$NON-NLS-1$
}
}
private boolean hasReinstallAlertMaintenance;
public boolean getHasReinstallAlertMaintenance() {
return hasReinstallAlertMaintenance;
}
public void setHasReinstallAlertMaintenance(boolean value) {
if (hasReinstallAlertMaintenance != value) {
hasReinstallAlertMaintenance = value;
onPropertyChanged(new PropertyChangedEventArgs("HasReinstallAlertMaintenance")); //$NON-NLS-1$
}
}
private boolean hasNICsAlert;
public boolean getHasNICsAlert() {
return hasNICsAlert;
}
public void setHasNICsAlert(boolean value) {
if (hasNICsAlert != value) {
hasNICsAlert = value;
onPropertyChanged(new PropertyChangedEventArgs("HasNICsAlert")); //$NON-NLS-1$
}
}
private NonOperationalReason nonOperationalReasonEntity;
public NonOperationalReason getNonOperationalReasonEntity() {
return nonOperationalReasonEntity;
}
public void setNonOperationalReasonEntity(NonOperationalReason value) {
if (nonOperationalReasonEntity != value) {
nonOperationalReasonEntity = value;
onPropertyChanged(new PropertyChangedEventArgs("NonOperationalReasonEntity")); //$NON-NLS-1$
}
}
private Date bootTime;
public Date getBootTime() {
return bootTime;
}
public void setBootTime(Long value) {
/* Factor by 1000 since Date works with millis since epoch and we store seconds (as provided by machines) */
if (value == null) {
if (bootTime == null) {
return;
}
bootTime = null;
} else {
if (bootTime == null) {
bootTime = new Date(value * 1000);
} else if ((bootTime.getTime() / 1000) != value) {
bootTime.setTime(value * 1000);
} else {
return;
}
}
onPropertyChanged(new PropertyChangedEventArgs("bootTime")); //$NON-NLS-1$
}
private Integer logicalCores;
public Integer getLogicalCores() {
return logicalCores;
}
public void setLogicalCores(Integer value) {
if (logicalCores == null && value == null) {
return;
} if (logicalCores == null || !logicalCores.equals(value)) {
logicalCores = value;
onPropertyChanged(new PropertyChangedEventArgs("logicalCores")); //$NON-NLS-1$
}
}
private String onlineCores;
public String getOnlineCores() {
return onlineCores;
}
public void setOnlineCores(String value) {
if (onlineCores == null && value == null) {
return;
} if (onlineCores == null || !onlineCores.equals(value)) {
onlineCores = value;
onPropertyChanged(new PropertyChangedEventArgs("onlineCores")); //$NON-NLS-1$
}
}
private String selinuxEnforceMode;
public String getSelinuxEnforceMode() {
return selinuxEnforceMode;
}
public void setSelinuxEnforceMode(String newMode) {
if (!Objects.equals(selinuxEnforceMode, newMode)) {
selinuxEnforceMode = newMode;
onPropertyChanged(new PropertyChangedEventArgs("selinuxEnforceMode")); //$NON-NLS-1$
}
}
private String clusterCompatibilityVersion;
public String getClusterCompatibilityVersion() {
return clusterCompatibilityVersion;
}
public void setClusterCompatibilityVersion(String clusterCompatibilityVersion) {
if (!Objects.equals(this.clusterCompatibilityVersion, clusterCompatibilityVersion)) {
this.clusterCompatibilityVersion = clusterCompatibilityVersion;
onPropertyChanged(new PropertyChangedEventArgs("clusterCompatibilityVersion")); //$NON-NLS-1$
}
}
private boolean hostDevicePassthroughSupport;
public boolean isHostDevicePassthroughSupport() {
return hostDevicePassthroughSupport;
}
public void setHostDevicePassthroughSupport(boolean value) {
if (hostDevicePassthroughSupport != value) {
hostDevicePassthroughSupport = value;
onPropertyChanged(new PropertyChangedEventArgs("hostDevicePassthroughSupport")); //$NON-NLS-1$
}
}
static {
requestEditEventDefinition = new EventDefinition("RequestEditEvent", HostGeneralModel.class); //$NON-NLS-1$
requestGOToEventsTabEventDefinition = new EventDefinition("RequestGOToEventsTabEvent", HostGeneralModel.class); //$NON-NLS-1$
}
public HostGeneralModel() {
setRequestEditEvent(new Event<>(requestEditEventDefinition));
setRequestGOToEventsTabEvent(new Event<>(requestGOToEventsTabEventDefinition));
setTitle(constants.generalTitle());
setHelpTag(HelpTag.general);
setHashName("general"); //$NON-NLS-1$
setSaveNICsConfigCommand(new UICommand("SaveNICsConfig", this)); //$NON-NLS-1$
setEditHostCommand(new UICommand("EditHost", this)); //$NON-NLS-1$
setUpgradeHostCommand(new UICommand("Upgrade", this)); //$NON-NLS-1$
setGoToEventsCommand(new UICommand("GoToEvents", this)); //$NON-NLS-1$
setRestartGlusterCommand(new UICommand("RestartGluster", this)); //$NON-NLS-1$
}
public void saveNICsConfig() {
Frontend.getInstance().runMultipleAction(VdcActionType.CommitNetworkChanges,
new ArrayList<>(Arrays.asList(new VdcActionParametersBase[]{new VdsActionParameters(getEntity().getId())})),
result -> {
},
null);
}
public void editHost() {
// Let's the parent model know about request.
getRequestEditEvent().raise(this, EventArgs.EMPTY);
}
public void restartGluster() {
// call restart gluster
GlusterServiceParameters parameters =
new GlusterServiceParameters(getEntity().getClusterId(),
getEntity().getId(),
ServiceType.GLUSTER,
"restart"); //$NON-NLS-1$
Frontend.getInstance().runAction(VdcActionType.ManageGlusterService, parameters);
}
public void cancel() {
setWindow(null);
}
@Override
protected void onEntityChanged() {
super.onEntityChanged();
if (getEntity() != null) {
updateAlerts();
updateMemory();
updateSwapUsed();
updateProperties();
}
}
@Override
protected void entityPropertyChanged(Object sender, PropertyChangedEventArgs e) {
super.entityPropertyChanged(sender, e);
if (e.propertyName.equals("net_config_dirty") || e.propertyName.equals("status") //$NON-NLS-1$ //$NON-NLS-2$
|| e.propertyName.equals("spm_status") || e.propertyName.equals("vm_active")) { //$NON-NLS-1$ //$NON-NLS-2$
updateUpgradeAlert = true;
updateAlerts();
}
if (e.propertyName.equals("usage_mem_percent") || e.propertyName.equals("physical_mem_mb")) { //$NON-NLS-1$ //$NON-NLS-2$
updateMemory();
}
if (e.propertyName.equals("swap_total") || e.propertyName.equals("swap_free")) { //$NON-NLS-1$ //$NON-NLS-2$
updateSwapUsed();
}
}
private void updateProperties() {
VDS vds = getEntity();
setOS(vds.getHostOs());
setOsPrettyName(vds.getPrettyName());
setKernelVersion(vds.getKernelVersion());
setKvmVersion(vds.getKvmVersion());
setLibvirtVersion(vds.getLibvirtVersion());
setVdsmVersion(vds.getVersion());
setSpiceVersion(vds.getSpiceVersion());
setGlusterVersion(vds.getGlusterVersion());
setLibrbdVersion(vds.getLibrbdVersion());
setIScsiInitiatorName(vds.getIScsiInitiatorName());
setSpmPriorityValue(vds.getVdsSpmPriority());
setActiveVms(vds.getVmActive());
setPhysicalMemory(vds.getPhysicalMemMb());
setSwapTotal(vds.getSwapTotal());
setSwapFree(vds.getSwapFree());
setSharedMemory(vds.getMemSharedPercent());
setMemoryPageSharing(vds.getKsmState());
setAutomaticLargePage(vds.getTransparentHugePagesState());
setBootTime(vds.getBootTime());
setKdumpStatus(EnumTranslator.getInstance().translate(vds.getKdumpStatus()));
setSelinuxEnforceMode(EnumTranslator.getInstance().translate(vds.getSELinuxEnforceMode()));
setClusterCompatibilityVersion(vds.getSupportedClusterLevels());
setHostDevicePassthroughSupport(vds.isHostDevicePassthroughEnabled());
if (!vds.getHighlyAvailableIsConfigured()) {
setHostedEngineHaIsConfigured(false);
setHostedEngineHa(constants.bracketedNotAvailableLabel());
} else {
setHostedEngineHaIsConfigured(true);
if (!vds.getHighlyAvailableIsActive()) {
setHostedEngineHa(constants.haNotActive());
} else if (vds.getHighlyAvailableGlobalMaintenance()) {
setHostedEngineHa(constants.haGlobalMaintenance());
} else if (vds.getHighlyAvailableLocalMaintenance()) {
setHostedEngineHa(constants.haLocalMaintenance());
} else {
setHostedEngineHa(messages.haActive(vds.getHighlyAvailableScore()));
}
}
setLogicalCores(vds.getCpuThreads());
setOnlineCores(vds.getOnlineCpus() == null ? vds.getOnlineCpus() : vds.getOnlineCpus().replaceAll(",", ", ")); //$NON-NLS-1$ //$NON-NLS-2$
}
private void updateAlerts() {
setHasAnyAlert(false);
setHasUpgradeAlert(false);
setHasManualFenceAlert(false);
setHasNoPowerManagementAlert(false);
setHasReinstallAlertNonResponsive(false);
setHasReinstallAlertInstallFailed(false);
setHasReinstallAlertMaintenance(false);
setHasNICsAlert(false);
setHasGlusterDisconnectedAlert(false);
// Check the network alert presense.
setHasNICsAlert(getEntity().getNetConfigDirty() == null ? false : getEntity().getNetConfigDirty());
// Check manual fence alert presense.
if (getEntity().getStatus() == VDSStatus.NonResponsive
&& !getEntity().isPmEnabled()
&& ((getEntity().getVmActive() == null ? 0 : getEntity().getVmActive()) > 0 || getEntity().getSpmStatus() == VdsSpmStatus.SPM)) {
setHasManualFenceAlert(true);
}
else if (!getEntity().isPmEnabled()) {
setHasNoPowerManagementAlert(true);
}
// Check the reinstall alert presence.
if (getEntity().getStatus() == VDSStatus.NonResponsive) {
setHasReinstallAlertNonResponsive(true);
}
else if (getEntity().getStatus() == VDSStatus.InstallFailed) {
setHasReinstallAlertInstallFailed(true);
}
else if (getEntity().getStatus() == VDSStatus.Maintenance) {
setHasReinstallAlertMaintenance(true);
}
if (getEntity().getClusterSupportsGlusterService()
&& !(getEntity().getStatus() == VDSStatus.Installing
|| getEntity().getStatus() == VDSStatus.Initializing)
&& getEntity().getGlusterPeerStatus() != PeerStatus.CONNECTED) {
setHasGlusterDisconnectedAlert(true);
}
setNonOperationalReasonEntity(getEntity().getNonOperationalReason() == NonOperationalReason.NONE ?
null : getEntity().getNonOperationalReason());
updateActionAvailability();
setHasUpgradeAlert(getEntity().isUpdateAvailable() && getEntity().getStatus() != VDSStatus.Installing);
setHasAnyAlert();
}
private void updateActionAvailability() {
getEditHostCommand().setIsExecutionAllowed(canExecuteCommand(VdcActionType.UpdateVds));
getUpgradeHostCommand().setIsExecutionAllowed(getEntity().isUpdateAvailable()
&& canExecuteCommand(VdcActionType.UpgradeHost));
}
private boolean canExecuteCommand(VdcActionType actionType) {
return VdcActionUtils.canExecute(new ArrayList<>(Arrays.asList(new VDS[]{getEntity()})),
VDS.class,
actionType);
}
public void setHasAnyAlert() {
setHasAnyAlert(getHasNICsAlert() || getHasUpgradeAlert() || getHasManualFenceAlert()
|| getHasNoPowerManagementAlert() || getHasReinstallAlertNonResponsive()
|| getHasReinstallAlertInstallFailed() || getHasReinstallAlertMaintenance()
|| getHasGlusterDisconnectedAlert());
}
private void goToEvents() {
this.getRequestGOToEventsTabEvent().raise(this, null);
}
private void updateMemory() {
setFreeMemory(null);
setUsedMemory(null);
if (getEntity().getPhysicalMemMb() != null && getEntity().getUsageMemPercent() != null) {
setUsedMemory((int) Math.round(getEntity().getPhysicalMemMb() * (getEntity().getUsageMemPercent() / 100.0)));
setFreeMemory(getEntity().getPhysicalMemMb() - getUsedMemory());
}
}
private void updateSwapUsed() {
setUsedSwap(null);
if (getEntity().getSwapTotal() != null && getEntity().getSwapFree() != null) {
setUsedSwap(getEntity().getSwapTotal() - getEntity().getSwapFree());
}
}
@Override
public void executeCommand(UICommand command) {
super.executeCommand(command);
if (command == getSaveNICsConfigCommand()) {
saveNICsConfig();
}
else if (command == getEditHostCommand()) {
editHost();
}
else if (command == getGoToEventsCommand()) {
goToEvents();
}
else if ("Cancel".equals(command.getName())) { //$NON-NLS-1$
cancel();
} else if (command == getUpgradeHostCommand()) {
upgrade();
} else if (command == getRestartGlusterCommand()) {
restartGluster();
}
}
private void upgrade() {
if (getWindow() != null) {
return;
}
final VDS host = getEntity();
Model model = createUpgradeModel(host);
model.initialize();
model.getCommands().add(UICommand.createCancelUiCommand("Cancel", this)); // $NON-NLS-1$
setWindow(model);
}
public static Model createUpgradeModel(final VDS host) {
Model model;
if (host.isOvirtVintageNode()) {
model = new UpgradeModel(host);
} else {
model = new UpgradeConfirmationModel(host);
}
return model;
}
}