package org.ovirt.engine.core.bll;
import org.ovirt.engine.core.common.businessentities.StorageDomainStatus;
import org.ovirt.engine.core.common.businessentities.VDSStatus;
import org.ovirt.engine.core.common.businessentities.VMStatus;
import org.ovirt.engine.core.common.queries.GetSystemStatisticsQueryParameters;
import org.ovirt.engine.core.compat.StringHelper;
import org.ovirt.engine.core.dal.dbbroker.DbFacade;
public class GetSystemStatisticsQuery<P extends GetSystemStatisticsQueryParameters> extends QueriesCommandBase<P> {
public GetSystemStatisticsQuery(P parameters) {
super(parameters);
}
public java.util.HashMap<String, Integer> getSystemStatistics() {
//
// int max = (Parameters as GetSystemStatisticsQueryParameters).Max;
// Dictionary<String, Int32> res = new Dictionary<String, Int32>();
// QueriesCommandBase query;
// List<IVdcQueryable> tmp;
// query = CommandsFactory.CreateQueryCommand(
// VdcQueryType.Search, new SearchParameters("vms:",
// SearchType.VM){MaxCount = max});
// query.Execute();
// tmp = (List<IVdcQueryable>)query.QueryReturnValue.ReturnValue;
// int total_vms = tmp.Count;
// query = CommandsFactory.CreateQueryCommand(
// VdcQueryType.Search, new SearchParameters("vms: status != down",
// SearchType.VM) { MaxCount = max });
// query.Execute();
// tmp = (List<IVdcQueryable>)query.QueryReturnValue.ReturnValue;
// int active_vms = tmp.Count;
// List<DbUser> users = DbFacade.Instance.GetAllFromUsers();
// int total_users = users.Count, active_users = 0;
// foreach (DbUser user in users)
// {
// if (user.IsLogedin)
// {
// active_users++;
// }
// }
// query = CommandsFactory.CreateQueryCommand(
// VdcQueryType.Search, new SearchParameters("Hosts", SearchType.VDS) {
// MaxCount = max });
// query.Execute();
// tmp = (List<IVdcQueryable>)query.QueryReturnValue.ReturnValue;
// int total_vds = tmp.Count, active_vds = 0;
// foreach (VDS vds in tmp)
// {
// if ((vds.status == VDSStatus.Up) || (vds.status ==
// VDSStatus.PreparingForMaintenance))
// {
// active_vds++;
// }
// }
//
java.util.HashMap<String, Integer> res = new java.util.HashMap<String, Integer>();
// VMs:
int total_vms = DbFacade.getInstance().GetSystemStatisticsValue("VM", "");
String[] activeVmStatuses = { (String.valueOf(VMStatus.Up.getValue())),
(String.valueOf(VMStatus.PoweringUp.getValue())),
(String.valueOf(VMStatus.PoweredDown.getValue())),
(String.valueOf(VMStatus.MigratingTo.getValue())),
(String.valueOf(VMStatus.WaitForLaunch.getValue())),
(String.valueOf(VMStatus.RebootInProgress.getValue())),
(String.valueOf(VMStatus.PoweringDown.getValue())),
(String.valueOf(VMStatus.Paused.getValue())),
(String.valueOf(VMStatus.Unknown.getValue())) };
int active_vms = DbFacade.getInstance()
.GetSystemStatisticsValue("VM", StringHelper.join(",", activeVmStatuses));
int down_vms = (total_vms - active_vms) < 0 ? 0 : (total_vms - active_vms);
// Hosts:
int total_vds = DbFacade.getInstance().GetSystemStatisticsValue("HOST", "");
String[] activeVdsStatuses = { (String.valueOf(VDSStatus.Up.getValue())),
(String.valueOf(VDSStatus.PreparingForMaintenance.getValue()))};
int active_vds = DbFacade.getInstance().GetSystemStatisticsValue("HOST",
StringHelper.join(",", activeVdsStatuses));
int maintenance_vds = DbFacade.getInstance().GetSystemStatisticsValue("HOST",
(String.valueOf(VDSStatus.Maintenance.getValue())));
int down_vds = (total_vds - active_vds - maintenance_vds) < 0 ? 0 : (total_vds - active_vds - maintenance_vds);
// Users:
int total_users = DbFacade.getInstance().GetSystemStatisticsValue("USER", "");
int active_users = DbFacade.getInstance().GetSystemStatisticsValue("USER", "1");
// Storage Domains:
int total_storage_domains = DbFacade.getInstance().GetSystemStatisticsValue("TSD", "");
int active_storage_domains = DbFacade.getInstance().GetSystemStatisticsValue("ASD",
(Integer.toString(StorageDomainStatus.Active.getValue())));
res.put("total_vms", total_vms);
res.put("active_vms", active_vms);
res.put("down_vms", down_vms);
res.put("total_vds", total_vds);
res.put("active_vds", active_vds);
res.put("maintenance_vds", maintenance_vds);
res.put("down_vds", down_vds);
res.put("total_users", total_users);
res.put("active_users", active_users);
res.put("total_storage_domains", total_storage_domains);
res.put("active_storage_domains", active_storage_domains);
return res;
}
@Override
protected void executeQueryCommand() {
getQueryReturnValue().setReturnValue(getSystemStatistics());
}
}