package org.ovirt.engine.core.bll; import org.ovirt.engine.core.compat.*; import org.ovirt.engine.core.compat.backendcompat.XmlDocument; import org.ovirt.engine.core.compat.backendcompat.XmlNode; import org.ovirt.engine.core.common.*; import org.ovirt.engine.core.dal.dbbroker.auditloghandling.*; public class InstallerMessages { private Guid _vdsId; public InstallerMessages(Guid vdsId) { _vdsId = vdsId; } public void AddMessage(String message) { if (StringHelper.isNullOrEmpty(message)) { return; } String[] msgs = message.split("[\\n]", -1); if (msgs.length > 1) { for (String msg : msgs) { AddMessage(msg); } return; } if (!StringHelper.isNullOrEmpty(message)) { if (message.charAt(0) == '<') { try { parseMessage(message); } catch (RuntimeException e) { log.errorFormat( "Installation of Host. Received illegal XML from Host. Message: {1}, Exception: {2}", message, e.toString()); } } else { log.info("VDS message: " + message); } } } private void parseMessage(String message) { XmlDocument doc = new XmlDocument(); doc.LoadXml(message); XmlNode node = doc.ChildNodes[0]; if (node != null) { StringBuilder sb = new StringBuilder(); // check status AuditLogType logType; if (node.Attributes.get("status") == null) { logType = AuditLogType.VDS_INSTALL_IN_PROGRESS_WARNING; } else if (node.Attributes.get("status").getValue().equals("OK")) { logType = AuditLogType.VDS_INSTALL_IN_PROGRESS; } else if (node.Attributes.get("status").getValue().equals("WARN")) { logType = AuditLogType.VDS_INSTALL_IN_PROGRESS_WARNING; } else { logType = AuditLogType.VDS_INSTALL_IN_PROGRESS_ERROR; } if ((node.Attributes.get("component") != null) && (!StringHelper.isNullOrEmpty(node.Attributes.get("component").getValue()))) { sb.append("Step: " + node.Attributes.get("component").getValue()); } if ((node.Attributes.get("message") != null) && (!StringHelper.isNullOrEmpty(node.Attributes.get("message").getValue()))) { sb.append("; "); sb.append("Details: " + node.Attributes.get("message").getValue()); sb.append(" "); } if ((node.Attributes.get("result") != null) && (!StringHelper.isNullOrEmpty(node.Attributes.get("result").getValue()))) { sb.append(" (" + node.Attributes.get("result").getValue() + ")"); } AuditLogableBase logable = new AuditLogableBase(_vdsId); logable.AddCustomValue("Message", StringHelper.trimEnd(sb.toString(), ' ')); AuditLogDirector.log(logable, logType); } } private static LogCompat log = LogFactoryCompat.getLog(InstallerMessages.class); }