package org.ovirt.engine.core.bll.network.cluster.helper;
import java.util.Objects;
import org.ovirt.engine.core.bll.common.predicates.ActiveVmAttachedToClusterPredicate;
import org.ovirt.engine.core.common.AuditLogType;
import org.ovirt.engine.core.common.businessentities.Cluster;
import org.ovirt.engine.core.common.businessentities.network.NetworkCluster;
import org.ovirt.engine.core.dal.dbbroker.auditloghandling.AuditLogDirector;
import org.ovirt.engine.core.dal.dbbroker.auditloghandling.AuditLogableBase;
import org.ovirt.engine.core.dao.ClusterDao;
import org.ovirt.engine.core.dao.VmDao;
import org.ovirt.engine.core.dao.network.NetworkClusterDao;
public final class DisplayNetworkClusterHelper {
private final NetworkClusterDao networkClusterDao;
private final ClusterDao clusterDao;
private final NetworkCluster networkCluster;
private final String networkName;
private final AuditLogDirector auditLogDirector;
private final ActiveVmAttachedToClusterPredicate activeVmAttachedToClusterPredicate;
public DisplayNetworkClusterHelper(
NetworkClusterDao networkClusterDao,
VmDao vmDao,
ClusterDao clusterDao,
NetworkCluster networkCluster,
String networkName,
AuditLogDirector auditLogDirector) {
this.networkClusterDao = Objects.requireNonNull(networkClusterDao, "networkClusterDao can not be null");
this.clusterDao = Objects.requireNonNull(clusterDao, "clusterDao cannot be null");
this.networkCluster = Objects.requireNonNull(networkCluster, "networkCluster can not be null");
this.networkName = Objects.requireNonNull(networkName, "networkName can not be null");
this.auditLogDirector = Objects.requireNonNull(auditLogDirector, "auditLogDirector can not be null");
this.activeVmAttachedToClusterPredicate =
new ActiveVmAttachedToClusterPredicate(Objects.requireNonNull(vmDao, "vmDao can not be null"));
}
public boolean isDisplayToBeUpdated() {
final NetworkCluster networkClusterBeforeUpdate = networkClusterDao.get(networkCluster.getId());
return networkClusterBeforeUpdate.isDisplay() != networkCluster.isDisplay();
}
public void warnOnActiveVm() {
if (activeVmAttachedToClusterPredicate.test(networkCluster.getClusterId())) {
AuditLogableBase loggable = createLoggable();
auditLogDirector.log(loggable, AuditLogType.NETWORK_UPDATE_DISPLAY_FOR_CLUSTER_WITH_ACTIVE_VM);
}
}
private AuditLogableBase createLoggable() {
AuditLogableBase loggable = new AuditLogableBase();
loggable.setClusterName(getClusterName());
loggable.addCustomValue("NetworkName", networkName);
return loggable;
}
private String getClusterName() {
final Cluster cluster = clusterDao.get(networkCluster.getClusterId());
return cluster == null ? null : cluster.getName();
}
}