+ @Override
+ public void request() {
+ if (meterStatsService != null) {
+ GetAllMeterConfigStatisticsInputBuilder input = new GetAllMeterConfigStatisticsInputBuilder();
+ input.setNode(getNodeRef());
+
+ requestHelper(meterStatsService.getAllMeterConfigStatistics(input.build()));
+ }
+ }
+
+ @Override
+ public void onDataChanged(DataChangeEvent<InstanceIdentifier<?>, DataObject> change) {
+ final DataModificationTransaction trans = startTransaction();
+
+ for (InstanceIdentifier<?> key : change.getRemovedConfigurationData()) {
+ if (Meter.class.equals(key.getTargetType())) {
+ @SuppressWarnings("unchecked")
+ InstanceIdentifier<Meter> meter = (InstanceIdentifier<Meter>)key;
+
+ InstanceIdentifier<?> nodeMeterStatisticsAugmentation =
+ meter.augmentation(NodeMeterConfigStats.class);
+ trans.removeOperationalData(nodeMeterStatisticsAugmentation);
+ }
+ }
+
+ trans.commit();
+ }
+
+ @Override
+ protected InstanceIdentifier<?> listenPath() {
+ return getNodeIdentifierBuilder().augmentation(FlowCapableNode.class).child(Meter.class).build();
+ }
+
+ @Override
+ protected String statName() {
+ return "Meter Config";
+ }
+
+ @Override
+ public void start(final DataBrokerService dbs) {
+ if (meterStatsService == null) {
+ logger.debug("No Meter Statistics service, not subscribing to meter on node {}", getNodeIdentifier());
+ return;
+ }
+
+ super.start(dbs);
+ }
+
+ @Override
+ protected MeterConfigStats createInvariantKey(MeterConfigStats item) {
+ // No invariant data exist in the meter config stats.
+ return item;
+ }