2 * ============LICENSE_START=======================================================
4 * ================================================================================
5 * Copyright © 2021 AT&T Intellectual Property. All rights reserved.
6 * ================================================================================
7 * Licensed under the Apache License, Version 2.0 (the "License");
8 * you may not use this file except in compliance with the License.
9 * You may obtain a copy of the License at
10 * http://www.apache.org/licenses/LICENSE-2.0
12 * Unless required by applicable law or agreed to in writing, software
13 * distributed under the License is distributed on an "AS IS" BASIS,
14 * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
15 * See the License for the specific language governing permissions and
16 * limitations under the License.
17 * ============LICENSE_END=========================================================
20 package org.o.ran.oam.nf.oam.adopter.snmp.manager.mapper;
22 import static org.o.ran.oam.nf.oam.adopter.snmp.manager.mapper.SnmpMapperImpl.DEFAULT;
24 import java.util.List;
26 import java.util.Optional;
27 import java.util.stream.Collectors;
28 import lombok.AccessLevel;
29 import lombok.NoArgsConstructor;
30 import org.o.ran.oam.nf.oam.adopter.api.FaultFields;
31 import org.o.ran.oam.nf.oam.adopter.snmp.manager.pojos.TrapsMappingConfiguration;
32 import org.snmp4j.PDU;
33 import org.snmp4j.smi.OID;
34 import org.snmp4j.smi.Variable;
35 import org.snmp4j.smi.VariableBinding;
37 @NoArgsConstructor(access = AccessLevel.PRIVATE)
38 final class FaultFieldsHandler {
39 private static final String SNMP_FAULT = "SNMP_Fault";
40 private static final String SNMP_UNKNOWN = "Unknown";
42 public static FaultFields toFaultFields(final TrapsMappingConfiguration trapsDescription, final PDU pdu) {
43 final FaultFields faultFields = new FaultFields();
44 setMandatoryFields(faultFields, trapsDescription, pdu);
45 setOptionalFields(faultFields, trapsDescription, pdu);
49 private static void setMandatoryFields(final FaultFields faultFields,
50 final TrapsMappingConfiguration trapsDescription, final PDU pdu) {
51 faultFields.setAlarmCondition(trapsDescription.getName());
52 faultFields.setEventSeverity(FaultFields.EventSeverity.fromValue(trapsDescription.getOidEventSeverity()));
53 faultFields.setEventSourceType(Optional.ofNullable(trapsDescription.getEventSourceType()).orElse(SNMP_UNKNOWN));
54 faultFields.setFaultFieldsVersion(FaultFields.FaultFieldsVersion._4_0);
55 final String descOid = trapsDescription.getOidSpecificProblemDesc();
56 faultFields.setSpecificProblem(SNMP_FAULT);
57 if (descOid != null && !DEFAULT.equals(descOid)) {
58 final Variable desc = pdu.getVariable(new OID(descOid));
59 faultFields.setSpecificProblem(desc == null ? SNMP_FAULT : desc.toString());
61 faultFields.setVfStatus(FaultFields.VfStatus.ACTIVE);
64 private static void setOptionalFields(final FaultFields faultFields,
65 final TrapsMappingConfiguration trapsDescription, final PDU pdu) {
66 final List<? extends VariableBinding> variables = pdu.getVariableBindings();
67 final Map<String, String> map = variables.stream()
68 .collect(Collectors.toMap(x -> x.getOid().toString(), x -> x.getVariable().toString()));
70 faultFields.setAlarmAdditionalInformation(map.isEmpty() ? null : map);
71 final String interfaceOid = trapsDescription.getOidAlarmInterfaceName();
72 if (interfaceOid != null) {
73 final Variable desc = pdu.getVariable(new OID(interfaceOid));
74 faultFields.setAlarmInterfaceA(desc == null ? SNMP_FAULT : desc.toString());
76 final String eCategory = trapsDescription.getEventCategory();
77 faultFields.setEventCategory(eCategory);