Search in sources :

Example 1 with Decode

use of org.opennms.netmgt.xml.eventconf.Decode in project opennms by OpenNMS.

the class EventExpander method expandEvent.

/**
 * <p>
 * This method is invoked to check and configure a received event. The event
 * configuration manager is consulted to find the appropriate configuration
 * that is used to expand the event. In addition, the security parameters
 * from the configuration manager is consulted to ensure that secure files
 * are cleared out if necessary.
 * </p>
 *
 * <p>
 * Any secure fields that exists in the incoming event are cleared during
 * expansion.
 * </p>
 *
 * @param e
 *            The event to expand if necessary.
 */
public void expandEvent(Event e) {
    org.opennms.netmgt.xml.eventconf.Event econf = lookup(m_eventConfDao, e);
    if (econf != null) {
        if (m_eventConfDao.isSecureTag("mask")) {
            e.setMask(null);
        }
        if (e.getMask() == null && econf.getMask() != null) {
            e.setMask(transform(econf.getMask()));
        }
        // 
        if (e.getUei() == null) {
            e.setUei(econf.getUei());
        }
        // 
        if (e.getSnmp() == null && econf.getSnmp() != null) {
            e.setSnmp(transform(econf.getSnmp()));
        }
        // 
        if (m_eventConfDao.isSecureTag("descr")) {
            e.setDescr(null);
        }
        if (e.getDescr() == null && econf.getDescr() != null) {
            e.setDescr(econf.getDescr());
        }
        // 
        if (m_eventConfDao.isSecureTag("logmsg")) {
            e.setLogmsg(null);
        }
        if (e.getLogmsg() == null && econf.getLogmsg() != null) {
            e.setLogmsg(transform(econf.getLogmsg()));
        }
        // 
        if (m_eventConfDao.isSecureTag("severity")) {
            e.setSeverity(null);
        }
        if (e.getSeverity() == null && econf.getSeverity() != null) {
            e.setSeverity(econf.getSeverity());
        }
        // 
        if (m_eventConfDao.isSecureTag("correlation")) {
            e.setCorrelation(null);
        }
        if (e.getCorrelation() == null && econf.getCorrelation() != null) {
            e.setCorrelation(transform(econf.getCorrelation()));
        }
        // 
        if (m_eventConfDao.isSecureTag("operinstruct")) {
            e.setOperinstruct(null);
        }
        if (e.getOperinstruct() == null && econf.getOperinstruct() != null) {
            e.setOperinstruct(econf.getOperinstruct());
        }
        // 
        if (m_eventConfDao.isSecureTag("autoaction")) {
            e.removeAllAutoaction();
        }
        if (e.getAutoactionCount() == 0 && econf.getAutoactions().size() > 0) {
            econf.getAutoactions().forEach(aa -> {
                e.addAutoaction(transform(aa));
            });
        }
        // 
        if (m_eventConfDao.isSecureTag("operaction")) {
            e.removeAllOperaction();
        }
        if (e.getOperactionCount() == 0 && econf.getOperactions().size() > 0) {
            econf.getOperactions().forEach(oa -> {
                e.addOperaction(transform(oa));
            });
        }
        // 
        if (m_eventConfDao.isSecureTag("autoacknowledge")) {
            e.setAutoacknowledge(null);
        }
        if (e.getAutoacknowledge() == null && econf.getAutoacknowledge() != null) {
            e.setAutoacknowledge(transform(econf.getAutoacknowledge()));
        }
        // 
        if (m_eventConfDao.isSecureTag("loggroup")) {
            e.removeAllLoggroup();
        }
        if (e.getLoggroupCount() == 0 && econf.getLoggroups().size() > 0) {
            e.setLoggroup(econf.getLoggroups());
        }
        // 
        if (m_eventConfDao.isSecureTag("tticket")) {
            e.setTticket(null);
        }
        if (e.getTticket() == null && econf.getTticket() != null) {
            e.setTticket(transform(econf.getTticket()));
        }
        // 
        if (m_eventConfDao.isSecureTag("forward")) {
            e.removeAllForward();
        }
        if (e.getForwardCount() == 0 && econf.getForwards().size() > 0) {
            econf.getForwards().forEach(fc -> {
                e.addForward(transform(fc));
            });
        }
        // 
        if (m_eventConfDao.isSecureTag("script")) {
            e.removeAllScript();
        }
        if (e.getScriptCount() == 0 && econf.getScripts().size() > 0) {
            econf.getScripts().forEach(sc -> {
                e.addScript(transform(sc));
            });
        }
        // 
        if (m_eventConfDao.isSecureTag("mouseovertext")) {
            e.setMouseovertext(null);
        }
        if (e.getMouseovertext() == null && econf.getMouseovertext() != null) {
            e.setMouseovertext(econf.getMouseovertext());
        }
        if (e.getAlarmData() == null && econf.getAlarmData() != null) {
            AlarmData alarmData = new AlarmData();
            final org.opennms.netmgt.xml.eventconf.AlarmData econfAlarmData = econf.getAlarmData();
            alarmData.setAlarmType(econfAlarmData.getAlarmType());
            alarmData.setReductionKey(econfAlarmData.getReductionKey());
            alarmData.setAutoClean(econfAlarmData.getAutoClean());
            alarmData.setX733AlarmType(econfAlarmData.getX733AlarmType());
            alarmData.setX733ProbableCause(econfAlarmData.getX733ProbableCause());
            alarmData.setClearKey(econfAlarmData.getClearKey());
            List<org.opennms.netmgt.xml.eventconf.UpdateField> updateFieldList = econfAlarmData.getUpdateFields();
            if (updateFieldList.size() > 0) {
                List<UpdateField> updateFields = new ArrayList<>(updateFieldList.size());
                for (org.opennms.netmgt.xml.eventconf.UpdateField econfUpdateField : updateFieldList) {
                    UpdateField eventField = new UpdateField();
                    eventField.setFieldName(econfUpdateField.getFieldName());
                    eventField.setUpdateOnReduction(econfUpdateField.getUpdateOnReduction());
                    updateFields.add(eventField);
                }
                alarmData.setUpdateField(updateFields);
            }
            e.setAlarmData(alarmData);
        }
        if (econf.getParameters() != null && econf.getParameters().size() > 0) {
            if (e.getParmCollection() == null) {
                e.setParmCollection(new ArrayList<>(econf.getParameters().size()));
            }
            for (Parameter p : econf.getParameters()) {
                if (EventUtils.getParm(e, p.getName()) == null) {
                    Parm parm = new Parm();
                    parm.setParmName(p.getName());
                    Value v = new Value();
                    v.setContent(p.getValue());
                    v.setType("string");
                    v.setEncoding("text");
                    v.setExpand(p.getExpand());
                    parm.setValue(v);
                    e.addParm(parm);
                } else {
                    LOG.warn("expandEvent: the event {} already has a parameter named {}, the original content will be preserved. Check the event definition and rename the optional parameter.", e.getUei(), p.getName());
                }
            }
        }
    }
    Map<String, Map<String, String>> decode = new HashMap<String, Map<String, String>>();
    if (econf != null && econf.getVarbindsdecodes().size() > 0) {
        for (final Varbindsdecode element : econf.getVarbindsdecodes()) {
            List<Decode> decodeArray = element.getDecodes();
            Map<String, String> valueMap = new HashMap<String, String>();
            for (final Decode element2 : decodeArray) {
                valueMap.put(element2.getVarbindvalue(), element2.getVarbinddecodedstring());
            }
            decode.put(element.getParmid(), valueMap);
        }
    }
    // end fill of event using econf
    // do the event parm expansion
    expandParms(e, decode);
}
Also used : HashMap(java.util.HashMap) Varbindsdecode(org.opennms.netmgt.xml.eventconf.Varbindsdecode) UpdateField(org.opennms.netmgt.xml.event.UpdateField) ArrayList(java.util.ArrayList) Decode(org.opennms.netmgt.xml.eventconf.Decode) Parm(org.opennms.netmgt.xml.event.Parm) Value(org.opennms.netmgt.xml.event.Value) Parameter(org.opennms.netmgt.xml.eventconf.Parameter) HashMap(java.util.HashMap) Map(java.util.Map) AlarmData(org.opennms.netmgt.xml.event.AlarmData)

Example 2 with Decode

use of org.opennms.netmgt.xml.eventconf.Decode in project opennms by OpenNMS.

the class JsmiMibParser method getTrapVarbindsDecode.

/**
 * Gets the trap varbinds decode.
 *
 * @param trap the trap object
 * @return the trap varbinds decode
 */
protected List<Varbindsdecode> getTrapVarbindsDecode(Notification trap) {
    Map<String, Varbindsdecode> decode = new LinkedHashMap<String, Varbindsdecode>();
    int vbNum = 1;
    for (SmiVariable var : trap.getObjects()) {
        String parmName = "parm[#" + vbNum + "]";
        SmiPrimitiveType type = var.getType().getPrimitiveType();
        if (type.equals(SmiPrimitiveType.ENUM)) {
            SortedMap<BigInteger, String> map = new TreeMap<BigInteger, String>();
            SmiType t = var.getType();
            while (t.getEnumValues() == null) {
                t = t.getBaseType();
            }
            List<SmiNamedNumber> enumValues = t.getEnumValues();
            if (enumValues != null) {
                for (SmiNamedNumber v : enumValues) {
                    map.put(v.getValue(), v.getId());
                }
                for (Entry<BigInteger, String> entry : map.entrySet()) {
                    if (!decode.containsKey(parmName)) {
                        Varbindsdecode newVarbind = new Varbindsdecode();
                        newVarbind.setParmid(parmName);
                        decode.put(newVarbind.getParmid(), newVarbind);
                    }
                    Decode d = new Decode();
                    d.setVarbinddecodedstring(entry.getValue());
                    d.setVarbindvalue(entry.getKey().toString());
                    decode.get(parmName).addDecode(d);
                }
            }
        }
        vbNum++;
    }
    return new ArrayList<Varbindsdecode>(decode.values());
}
Also used : Varbindsdecode(org.opennms.netmgt.xml.eventconf.Varbindsdecode) ArrayList(java.util.ArrayList) Decode(org.opennms.netmgt.xml.eventconf.Decode) SmiNamedNumber(org.jsmiparser.smi.SmiNamedNumber) TreeMap(java.util.TreeMap) LinkedHashMap(java.util.LinkedHashMap) SmiVariable(org.jsmiparser.smi.SmiVariable) SmiPrimitiveType(org.jsmiparser.smi.SmiPrimitiveType) BigInteger(java.math.BigInteger) SmiType(org.jsmiparser.smi.SmiType)

Example 3 with Decode

use of org.opennms.netmgt.xml.eventconf.Decode in project opennms by OpenNMS.

the class DecodeListConverter method convertToModel.

/* (non-Javadoc)
     * @see com.vaadin.data.util.converter.Converter#convertToModel(java.lang.Object, java.lang.Class, java.util.Locale)
     */
@Override
public ArrayList<Decode> convertToModel(String fieldValue, Class<? extends ArrayList<Decode>> targetType, Locale locale) throws ConversionException {
    if (fieldValue == null) {
        return null;
    }
    ArrayList<Decode> list = new ArrayList<>();
    for (String s : fieldValue.split(",")) {
        String[] parts = s.split("=");
        if (parts.length == 2) {
            Decode d = new Decode();
            d.setVarbindvalue(parts[0].trim());
            d.setVarbinddecodedstring(parts[1].trim());
            list.add(d);
        }
    }
    return list;
}
Also used : ArrayList(java.util.ArrayList) Decode(org.opennms.netmgt.xml.eventconf.Decode)

Example 4 with Decode

use of org.opennms.netmgt.xml.eventconf.Decode in project opennms by OpenNMS.

the class SpectrumUtils method translateEventTable.

public Varbindsdecode translateEventTable(EventTable et, String parmId) {
    Varbindsdecode vbd = new Varbindsdecode();
    vbd.setParmid(parmId);
    for (Integer key : et.keySet()) {
        Decode decode = new Decode();
        decode.setVarbindvalue(key.toString());
        decode.setVarbinddecodedstring(et.get(key));
        vbd.addDecode(decode);
    }
    return vbd;
}
Also used : Varbindsdecode(org.opennms.netmgt.xml.eventconf.Varbindsdecode) Decode(org.opennms.netmgt.xml.eventconf.Decode)

Example 5 with Decode

use of org.opennms.netmgt.xml.eventconf.Decode in project opennms by OpenNMS.

the class Mib2Events method getTrapVarbindsDecode.

private static List<Varbindsdecode> getTrapVarbindsDecode(MibValueSymbol trapValueSymbol) {
    Map<String, Varbindsdecode> decode = new LinkedHashMap<String, Varbindsdecode>();
    int vbNum = 1;
    for (MibValue vb : getTrapVars(trapValueSymbol)) {
        String parmName = "parm[#" + vbNum + "]";
        SnmpObjectType snmpObjectType = ((SnmpObjectType) ((ObjectIdentifierValue) vb).getSymbol().getType());
        if (snmpObjectType.getSyntax().getClass().equals(IntegerType.class)) {
            IntegerType integerType = (IntegerType) snmpObjectType.getSyntax();
            if (integerType.getAllSymbols().length > 0) {
                SortedMap<Integer, String> map = new TreeMap<Integer, String>();
                for (MibValueSymbol sym : integerType.getAllSymbols()) {
                    map.put(new Integer(sym.getValue().toString()), sym.getName());
                }
                for (Entry<Integer, String> entry : map.entrySet()) {
                    if (!decode.containsKey(parmName)) {
                        Varbindsdecode newVarbind = new Varbindsdecode();
                        newVarbind.setParmid(parmName);
                        decode.put(newVarbind.getParmid(), newVarbind);
                    }
                    Decode d = new Decode();
                    d.setVarbinddecodedstring(entry.getValue());
                    d.setVarbindvalue(entry.getKey().toString());
                    decode.get(parmName).addDecode(d);
                }
            }
        }
        vbNum++;
    }
    return new ArrayList<Varbindsdecode>(decode.values());
}
Also used : Varbindsdecode(org.opennms.netmgt.xml.eventconf.Varbindsdecode) MibValue(net.percederberg.mibble.MibValue) ArrayList(java.util.ArrayList) Decode(org.opennms.netmgt.xml.eventconf.Decode) TreeMap(java.util.TreeMap) LinkedHashMap(java.util.LinkedHashMap) IntegerType(net.percederberg.mibble.type.IntegerType) SnmpObjectType(net.percederberg.mibble.snmp.SnmpObjectType) MibValueSymbol(net.percederberg.mibble.MibValueSymbol)

Aggregations

Decode (org.opennms.netmgt.xml.eventconf.Decode)5 ArrayList (java.util.ArrayList)4 Varbindsdecode (org.opennms.netmgt.xml.eventconf.Varbindsdecode)4 LinkedHashMap (java.util.LinkedHashMap)2 TreeMap (java.util.TreeMap)2 BigInteger (java.math.BigInteger)1 HashMap (java.util.HashMap)1 Map (java.util.Map)1 MibValue (net.percederberg.mibble.MibValue)1 MibValueSymbol (net.percederberg.mibble.MibValueSymbol)1 SnmpObjectType (net.percederberg.mibble.snmp.SnmpObjectType)1 IntegerType (net.percederberg.mibble.type.IntegerType)1 SmiNamedNumber (org.jsmiparser.smi.SmiNamedNumber)1 SmiPrimitiveType (org.jsmiparser.smi.SmiPrimitiveType)1 SmiType (org.jsmiparser.smi.SmiType)1 SmiVariable (org.jsmiparser.smi.SmiVariable)1 AlarmData (org.opennms.netmgt.xml.event.AlarmData)1 Parm (org.opennms.netmgt.xml.event.Parm)1 UpdateField (org.opennms.netmgt.xml.event.UpdateField)1 Value (org.opennms.netmgt.xml.event.Value)1