/***************************************************************************** * * Copyright (C) Zenoss, Inc. 2011, all rights reserved. * * This content is made available according to terms specified in * License.zenoss under the directory where your Zenoss product is installed. * ****************************************************************************/ package org.zenoss.zep; import org.zenoss.protobufs.zep.Zep.Event; import java.util.List; import java.util.Set; /** * <p>Used to generate clear fingerprints for an event. Events with severity of CLEAR can return * more than one clear fingerprint which will match the fingerprints of all events this event * should clear. Events with other severities should return one fingerprint (returning zero * fingerprints will disable event clearing for the event, and returning more than one fingerprint * will only result in the first fingerprint being used).</p> * * <p>The default implementation uses this clear fingerprint for CLEAR severity events:</p> * * <p>For all of the clear classes in {@link org.zenoss.zep.plugins.EventPreCreateContext#getClearClasses()}, * create a pipe-delimited string of the following fields in order:</p> * * <ul> * <li>event.actor.element_identifier</li> * <li>event.actor.element_sub_identifier</li> * <li>clearClass</li> * <li>event.event_key</li> * </ul> * * <p>and for events which have a element_sub_uuid:</p> * * <ul> * <li>event.actor.element_sub_uuid</li> * <li>clearClass</li> * <li>event.event_key</li> * </ul> * * <p>Using a sub-element UUID for event clearing supports clearing events on components which * can be moved to different devices (i.e. VMotion events for VMware VMs).</p> * * <p>For non-CLEAR events, the fingerprint is created using either the first or second algorithm * above (using the event's event class as the clearClass) depending on the presence of the * <code>event.actor.element_sub_uuid</code>.</p> */ public interface ClearFingerprintGenerator { /** * Generates a clear fingerprint for the specified * non-{@link org.zenoss.protobufs.zep.Zep.EventSeverity#SEVERITY_CLEAR} event. * * @param event Event to generate clear fingerprint from. * @return A clear fingerprint for the event, or null to disable event clearing (not * recommended). */ public String generateClearFingerprint(Event event); /** * Generates clear fingerprint(s) for the specified * {@link org.zenoss.protobufs.zep.Zep.EventSeverity#SEVERITY_CLEAR} event and clear classes. * CLEAR events can return any number of clear fingerprints - these will be used to clear all * of the active events with the same clear fingerprint. A clear event which returns zero clear * fingerprints will be dropped by the system (as it can't clear any associated events). * * @param event Event to generate clear fingerprint from. * @param clearClasses Set of clear classes used to generate fingerprints. * @return A list of clear fingerprint(s) for the specified event and clear classes. */ public List<String> generateClearFingerprints(Event event, Set<String> clearClasses); }