Adding ConnectPoint info to all the EAPOL logs and use standard form
devId/portNo for easier debugging
Change-Id: I95da74038738c6fd4f611bd2b1d233f7f213beb9
diff --git a/app/src/main/java/org/opencord/olt/impl/OltFlowService.java b/app/src/main/java/org/opencord/olt/impl/OltFlowService.java
index 6ae705a..58344e6 100644
--- a/app/src/main/java/org/opencord/olt/impl/OltFlowService.java
+++ b/app/src/main/java/org/opencord/olt/impl/OltFlowService.java
@@ -167,7 +167,6 @@
protected ApplicationId appId;
protected BaseInformationService<BandwidthProfileInformation> bpService;
protected BaseInformationService<SubscriberAndDeviceInformation> subsService;
- private Set<ConnectPoint> pendingAddEapol = Sets.newConcurrentHashSet();
private Set<SubscriberFlowInfo> pendingEapolForMeters = Sets.newConcurrentHashSet();;
@Activate
@@ -324,14 +323,14 @@
FilteringObjective dhcpUpstream = dhcpUpstreamBuilder.add(new ObjectiveContext() {
@Override
public void onSuccess(Objective objective) {
- log.info("DHCP {} filter for device {} on port {} {}.",
+ log.info("DHCP {} filter for dev/port {}/{} {}.",
(ethType.equals(EthType.EtherType.IPV4.ethType())) ? V4 : V6,
devId, port, (install) ? INSTALLED : REMOVED);
}
@Override
public void onError(Objective objective, ObjectiveError error) {
- log.info("DHCP {} filter for device {} on port {} failed {} because {}",
+ log.error("DHCP {} filter for dev/port {}/{} failed {} because {}",
(ethType.equals(EthType.EtherType.IPV4.ethType())) ? V4 : V6,
devId, port, (install) ? INSTALLATION : REMOVAL,
error);
@@ -406,13 +405,13 @@
.add(new ObjectiveContext() {
@Override
public void onSuccess(Objective objective) {
- log.info("Igmp filter for {} on {} {}.",
+ log.info("Igmp filter for dev/port {}/{} {}.",
devId, port, (install) ? INSTALLED : REMOVED);
}
@Override
public void onError(Objective objective, ObjectiveError error) {
- log.info("Igmp filter for {} on {} failed {} because {}.",
+ log.error("Igmp filter for dev/port {}/{} failed {} because {}.",
devId, port, (install) ? INSTALLATION : REMOVAL,
error);
}
@@ -433,11 +432,12 @@
}
return;
}
-
+ log.info("Processing EAPOL with Bandwidth profile {} on {}/{}", bpId,
+ devId, portNumber);
BandwidthProfileInformation bpInfo = getBandwidthProfileInformation(bpId);
if (bpInfo == null) {
log.warn("Bandwidth profile {} is not found. Authentication flow"
- + " will not be installed", bpId);
+ + " will not be installed on {}/{}", bpId, devId, portNumber);
if (filterFuture != null) {
filterFuture.complete(ObjectiveError.BADPARAMS);
}
@@ -445,27 +445,15 @@
}
ConnectPoint cp = new ConnectPoint(devId, portNumber);
- if (install) {
- boolean added = pendingAddEapol.add(cp);
- if (!added) {
- if (filterFuture != null) {
- log.warn("The eapol flow is processing for the port {}. Ignoring this request", portNumber);
- filterFuture.complete(null);
- }
- return;
- }
- log.info("connectPoint added to pendingAddEapol map {}", cp.toString());
- }
-
DefaultFilteringObjective.Builder filterBuilder = DefaultFilteringObjective.builder();
TrafficTreatment.Builder treatmentBuilder = DefaultTrafficTreatment.builder();
CompletableFuture<Object> meterFuture = new CompletableFuture<>();
-
// check if meter exists and create it only for an install
final MeterId meterId = oltMeterService.getMeterIdFromBpMapping(devId, bpInfo.id());
+ log.info("Meter id {} for Bandwidth profile {} associated to EAPOL on {}", meterId, bpInfo.id(), devId);
if (meterId == null) {
if (install) {
- log.debug("Need to install meter for EAPOL with bwp {}", bpInfo.id());
+ log.debug("Need to install meter for EAPOL with bwp {} on dev/port {}", bpInfo.id(), cp.toString());
SubscriberFlowInfo fi = new SubscriberFlowInfo(devId, null, cp.port(),
new UniTagInformation.Builder()
.setPonCTag(vlanId).build(),
@@ -486,7 +474,7 @@
// Nevertheless we can still delete the flow as we only need the
// correct 'match' to do so.
log.warn("Unknown meter id for bp {}, still proceeding with "
- + "delete of eapol flow for {}/{}", bpInfo.id(), devId, portNumber);
+ + "delete of eapol flow for {}", bpInfo.id(), cp.toString());
SubscriberFlowInfo fi = new SubscriberFlowInfo(devId, null, cp.port(),
new UniTagInformation.Builder()
.setPonCTag(vlanId).build(),
@@ -495,7 +483,7 @@
handleEapol(filterFuture, install, cp, filterBuilder, treatmentBuilder, fi, meterId);
}
} else {
- log.debug("Meter {} was previously created for bp {}", meterId, bpInfo.id());
+ log.debug("Meter {} was previously created for bp {} on {}", meterId, bpInfo.id(), cp.toString());
SubscriberFlowInfo fi = new SubscriberFlowInfo(devId, null, cp.port(),
new UniTagInformation.Builder()
.setPonCTag(vlanId).build(),
@@ -507,19 +495,24 @@
}
meterFuture.thenAcceptAsync(result -> {
//for each pending eapol flow we check if the meter is there.
+ //TODO possibly the iterator gets taken at time t0, while the sub is added at time t1
+ // and thus never considered
Iterator<SubscriberFlowInfo> eapIterator = pendingEapolForMeters.iterator();
while (eapIterator.hasNext()) {
SubscriberFlowInfo fi = eapIterator.next();
+ log.debug("handing pending eapol on {}/{} for {}", fi.getDevId(), fi.getUniPort(), fi);
if (result == null) {
MeterId mId = oltMeterService
.getMeterIdFromBpMapping(devId, fi.getUpBpInfo());
if (mId != null) {
+ log.debug("Meter installation completed for subscriber on {}, handling EAPOL trap flow",
+ cp.toString());
handleEapol(filterFuture, install, cp, filterBuilder, treatmentBuilder, fi, mId);
eapIterator.remove();
}
} else {
- log.warn("Meter installation error while sending eapol trap flow. " +
- "Result {} and MeterId {}", result, meterId);
+ log.warn("Meter installation error while sending EAPOL trap flow to {}. " +
+ "Result {} and MeterId {}", cp.toString(), result, meterId);
eapIterator.remove();
}
oltMeterService.removeFromPendingMeters(devId, bpInfo);
@@ -557,18 +550,17 @@
.add(new ObjectiveContext() {
@Override
public void onSuccess(Objective objective) {
- log.info("Eapol filter {} for {} on {} {} with meter {}.",
+ log.info("Eapol filter {} for {} on {}/{} with meter {}.",
objective.id(), fi.getDevId(), fi.getUniPort(),
(install) ? INSTALLED : REMOVED, mId);
if (filterFuture != null) {
filterFuture.complete(null);
}
- pendingAddEapol.remove(cp);
}
@Override
public void onError(Objective objective, ObjectiveError error) {
- log.error("Eapol filter {} for {} on {} with meter {} " +
+ log.error("Eapol filter {} for {}/{} with meter {} " +
"failed {} because {}", objective.id(),
fi.getDevId(), fi.getUniPort(), mId,
(install) ? INSTALLATION : REMOVAL,
@@ -576,7 +568,6 @@
if (filterFuture != null) {
filterFuture.complete(error);
}
- pendingAddEapol.remove(cp);
}
});
flowObjectiveService.filter(fi.getDevId(), eapol);
@@ -614,13 +605,13 @@
.add(new ObjectiveContext() {
@Override
public void onSuccess(Objective objective) {
- log.info("LLDP filter for device {} on port {} {}.",
+ log.info("LLDP filter for dev/port {}/{} {}.",
devId, port, (install) ? INSTALLED : REMOVED);
}
@Override
public void onError(Objective objective, ObjectiveError error) {
- log.info("LLDP filter for device {} on port {} failed {} because {}",
+ log.error("LLDP filter for dev/port {}/{} failed {} because {}",
devId, port, (install) ? INSTALLATION : REMOVAL,
error);
}
@@ -751,8 +742,6 @@
@Override
public void clearDeviceState(DeviceId deviceId) {
pendingEapolForMeters.removeIf(fi -> fi.getDevId().equals(deviceId));
- pendingAddEapol.removeIf(connectPoint -> connectPoint.deviceId().equals(deviceId));
-
}
private DefaultForwardingObjective.Builder createForwardingObjectiveBuilder(TrafficSelector selector,