mirror of
https://github.com/opennetworkinglab/onos.git
synced 2026-05-04 19:56:49 +02:00
ONOS-6625: Remove meters from device not present in onos
Change-Id: I857daf1176a2242b88c5acd9d6aae82331327dd4
This commit is contained in:
parent
af75c13b9b
commit
205af45f1c
@ -248,23 +248,34 @@ public class MeterManager
|
||||
|
||||
@Override
|
||||
public void pushMeterMetrics(DeviceId deviceId, Collection<Meter> meterEntries) {
|
||||
//FIXME: FOLLOWING CODE CANNOT BE TESTED UNTIL SOMETHING THAT
|
||||
//FIXME: IMPLEMENTS METERS EXISTS
|
||||
Collection<Meter> allMeters = store.getAllMeters(deviceId);
|
||||
|
||||
Map<MeterId, Meter> meterEntriesMap = meterEntries.stream()
|
||||
.collect(Collectors.toMap(Meter::id, Meter -> Meter));
|
||||
|
||||
// Look for meters defined in onos and missing in the device (restore)
|
||||
allMeters.stream().forEach(m -> {
|
||||
if ((m.state().equals(MeterState.PENDING_ADD) ||
|
||||
m.state().equals(MeterState.ADDED)) &&
|
||||
!meterEntriesMap.containsKey(m.id())) {
|
||||
// The meter is missing in the device. Reinstall!
|
||||
log.debug("Adding meter missing in device {} {}", deviceId, m);
|
||||
provider().performMeterOperation(deviceId,
|
||||
new MeterOperation(m, MeterOperation.Type.ADD));
|
||||
}
|
||||
});
|
||||
|
||||
// Look for meters defined in the device and not in onos (remove)
|
||||
meterEntriesMap.entrySet().stream()
|
||||
.filter(md -> !allMeters.stream().anyMatch(m -> m.id().equals(md.getKey())))
|
||||
.forEach(mio -> {
|
||||
// The meter is missin in onos. Uninstall!
|
||||
log.debug("Remove meter in device not in onos {} {}", deviceId, mio.getKey());
|
||||
Meter meter = mio.getValue();
|
||||
provider().performMeterOperation(deviceId,
|
||||
new MeterOperation(meter, MeterOperation.Type.REMOVE));
|
||||
});
|
||||
|
||||
meterEntries.stream()
|
||||
.filter(m -> allMeters.stream()
|
||||
.anyMatch(sm -> sm.deviceId().equals(deviceId) && sm.id().equals(m.id())))
|
||||
|
||||
Loading…
x
Reference in New Issue
Block a user