diff options
author | Michal Cmarada <mcmarada@cisco.com> | 2019-01-04 08:59:46 +0100 |
---|---|---|
committer | Michal Cmarada <mcmarada@cisco.com> | 2019-01-08 13:54:19 +0100 |
commit | 25c01b5d31053e1a8520c54e24e94f0493619a8e (patch) | |
tree | 42a936953157a5c8e5e76ddec6d4a7f14aa13831 /v3po/v3po2vpp/src/main/java/io/fd/hc2vpp/v3po/notification/StatisticsChangeNotificationProducer.java | |
parent | 3fafe6a6a8be55aff4c71b21b6ee34969a4e801b (diff) |
Revert Statistics
This reverts commit 91db56913c9b1fc9292637adf4d96a052a737f61.
This reverts commit cdc4d09c152e985c93016ff61789bc699b97883d.
Change-Id: I06cba1968f7379a7daa98b9e66375a5d4127b499
Signed-off-by: Michal Cmarada <mcmarada@cisco.com>
Diffstat (limited to 'v3po/v3po2vpp/src/main/java/io/fd/hc2vpp/v3po/notification/StatisticsChangeNotificationProducer.java')
-rw-r--r-- | v3po/v3po2vpp/src/main/java/io/fd/hc2vpp/v3po/notification/StatisticsChangeNotificationProducer.java | 158 |
1 files changed, 0 insertions, 158 deletions
diff --git a/v3po/v3po2vpp/src/main/java/io/fd/hc2vpp/v3po/notification/StatisticsChangeNotificationProducer.java b/v3po/v3po2vpp/src/main/java/io/fd/hc2vpp/v3po/notification/StatisticsChangeNotificationProducer.java deleted file mode 100644 index 671b0e275..000000000 --- a/v3po/v3po2vpp/src/main/java/io/fd/hc2vpp/v3po/notification/StatisticsChangeNotificationProducer.java +++ /dev/null @@ -1,158 +0,0 @@ -/* - * Copyright (c) 2019 PANTHEON.tech. - * - * Licensed under the Apache License, Version 2.0 (the "License"); - * you may not use this file except in compliance with the License. - * You may obtain a copy of the License at: - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. - */ - -package io.fd.hc2vpp.v3po.notification; - -import com.google.common.collect.Lists; -import io.fd.hc2vpp.common.translate.util.ByteDataTranslator; -import io.fd.hc2vpp.common.translate.util.JvppReplyConsumer; -import io.fd.hc2vpp.v3po.interfacesstate.cache.InterfaceCacheStatisticsDumpManager; -import io.fd.honeycomb.notification.ManagedNotificationProducer; -import io.fd.honeycomb.notification.NotificationCollector; -import io.fd.vpp.jvpp.VppBaseCallException; -import io.fd.vpp.jvpp.VppCallbackException; -import io.fd.vpp.jvpp.core.callback.VnetPerInterfaceCombinedCountersCallback; -import io.fd.vpp.jvpp.core.dto.VnetPerInterfaceCombinedCounters; -import io.fd.vpp.jvpp.core.dto.WantPerInterfaceCombinedStats; -import io.fd.vpp.jvpp.core.dto.WantPerInterfaceCombinedStatsReply; -import io.fd.vpp.jvpp.core.future.FutureJVppCore; -import java.math.BigInteger; -import java.time.LocalDateTime; -import java.util.ArrayList; -import java.util.Collection; -import java.util.Optional; -import java.util.concurrent.CompletionStage; -import java.util.concurrent.TimeoutException; -import javax.annotation.Nonnull; -import javax.annotation.Nullable; -import org.opendaylight.yang.gen.v1.urn.ietf.params.xml.ns.yang.ietf.yang.types.rev130715.Counter64; -import org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.v3po.rev181128.InterfaceStatisticsChange; -import org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.v3po.rev181128.InterfaceStatisticsChangeBuilder; -import org.opendaylight.yangtools.yang.binding.Notification; -import org.slf4j.Logger; -import org.slf4j.LoggerFactory; - -public class StatisticsChangeNotificationProducer implements ManagedNotificationProducer, JvppReplyConsumer, - ByteDataTranslator { - - private static final Logger LOG = LoggerFactory.getLogger(StatisticsChangeNotificationProducer.class); - - private final FutureJVppCore jvpp; - private InterfaceCacheStatisticsDumpManager ifcStatDumpManager; - - @Nullable - private AutoCloseable notificationListenerReg; - - public StatisticsChangeNotificationProducer(final FutureJVppCore jvpp, - final InterfaceCacheStatisticsDumpManager ifcStatDumpManager) { - - this.jvpp = jvpp; - this.ifcStatDumpManager = ifcStatDumpManager; - } - - @Override - public void start(@Nonnull final NotificationCollector collector) { - LOG.trace("Starting statistics notifications"); - - notificationListenerReg = jvpp.getEventRegistry().registerVnetPerInterfaceCombinedCountersCallback( - new VnetPerInterfaceCombinedCountersCallback() { - @Override - public void onVnetPerInterfaceCombinedCounters( - final VnetPerInterfaceCombinedCounters vnetPerInterfaceCombinedCounters) { - LOG.trace("Statistics notification received: {}", vnetPerInterfaceCombinedCounters); - try { - ifcStatDumpManager.setStatisticsData(vnetPerInterfaceCombinedCounters, LocalDateTime.now(), - vnetPerInterfaceCombinedCounters.data[0].swIfIndex); - collector.onNotification(transformNotification(vnetPerInterfaceCombinedCounters)); - - } catch (Exception e) { - // There is no need to propagate exception to jvpp rx thread in case of unexpected failures. - // We can't do much about it, so lets log the exception. - LOG.warn("Failed to process statistics notification {}", vnetPerInterfaceCombinedCounters, - e); - } - } - - @Override - public void onError(final VppCallbackException e) { - LOG.warn("Statistics notification error received.", e); - } - } - ); - } - - private Notification transformNotification(final VnetPerInterfaceCombinedCounters reading) { - - InterfaceStatisticsChangeBuilder builder = new InterfaceStatisticsChangeBuilder(); - if (reading.data.length > 0) { - builder.setInBroadcastPkts(new Counter64(BigInteger.valueOf(reading.data[0].rxBroadcastPackets))) - .setOutBroadcastPkts(new Counter64(BigInteger.valueOf(reading.data[0].txBroadcastPackets))) - .setInMulticastPkts(new Counter64(BigInteger.valueOf(reading.data[0].rxMulticastPackets))) - .setOutMulticastPkts(new Counter64(BigInteger.valueOf(reading.data[0].txMulticastPackets))) - .setInOctets(new Counter64(BigInteger.valueOf(reading.data[0].rxBytes))) - .setOutOctets(new Counter64(BigInteger.valueOf(reading.data[0].txBytes))); - } - return builder.build(); - } - - @Override - public void stop() { - LOG.trace("Stopping statistics notifications"); - disableIfcNotifications(ifcStatDumpManager.getEnabledInterfaces()); - ifcStatDumpManager.disableAll(); - LOG.debug("Statistics notifications stopped successfully"); - try { - if (notificationListenerReg != null) { - notificationListenerReg.close(); - } - } catch (Exception e) { - LOG.warn("Unable to properly close notification registration: {}", notificationListenerReg, e); - } - } - - @Nonnull - @Override - public Collection<Class<? extends Notification>> getNotificationTypes() { - final ArrayList<Class<? extends Notification>> classes = Lists.newArrayList(); - classes.add(InterfaceStatisticsChange.class); - return classes; - } - - @Override - public void close() throws Exception { - LOG.trace("Closing statistics notifications producer"); - stop(); - } - - private void disableIfcNotifications(final int[] swIfIndexes) { - if (swIfIndexes.length == 0) { - return; - } - WantPerInterfaceCombinedStats request = new WantPerInterfaceCombinedStats(); - request.num = swIfIndexes.length; - request.enableDisable = BYTE_FALSE; - request.pid = 1; - request.swIfs = Optional.of(swIfIndexes).orElse(new int[]{}); - final CompletionStage<WantPerInterfaceCombinedStatsReply> result = - this.jvpp.wantPerInterfaceCombinedStats(request); - try { - getReply(result.toCompletableFuture()); - } catch (VppBaseCallException | TimeoutException e) { - LOG.warn("Unable to disable statistics notifications", e); - throw new IllegalStateException("Unable to disable statistics notifications", e); - } - } -} |