package codeine.mail; import java.util.List; import codeine.api.NodeInfo; import codeine.configuration.Links; import codeine.jsons.global.GlobalConfigurationJsonStore; import codeine.jsons.info.CodeineRuntimeInfo; import codeine.jsons.labels.LabelJsonProvider; import codeine.jsons.nodes.NodeHelper; import codeine.jsons.peer_status.PeerStatus; import codeine.jsons.project.ProjectJson; import codeine.utils.network.InetUtils; import com.google.inject.Inject; public class SendMailDirectly { @Inject private MailStrategy mailsStrategy; @Inject private PeerStatus peerStatus; @Inject private Links links; @Inject private CodeineRuntimeInfo peerRuntimeInfo; @Inject private LabelJsonProvider labelJsonProvider; @Inject private GlobalConfigurationJsonStore globalConfigurationJsonStore; public void sendCollectorResult(List<String> mailingList, String collectorName, boolean results, NodeInfo node, ProjectJson project, String output) { String successString = results ? "OK" : "FAIL"; String version = new NodeHelper().getVersionOrNull(peerStatus.createJson(), project, node); String versionString = null == version ? "" : " version " + labelJsonProvider.labelForVersion(version, project.name()); String subject = "codeine monitor '" + collectorName + "' on " + node.alias() + versionString + " is now " + successString; String hostname = InetUtils.nameWithoutPort(node.name()); String content = "Collector current status: " + links.getPeerMonitorResultLink(hostname + ":" + peerRuntimeInfo.port(), project.name(), collectorName, node.name()) + "\n\n"; content += "Alerts: " + links.getWebServerProjectAlerts(project) + "\n\n"; content += "Collector Output:\n"; content += output + "\n"; mailsStrategy.sendMail(new Mail(mailingList, subject, content, globalConfigurationJsonStore.get().admin_mail())); } }