package org.opendaylight.controller.md.statistics.manager;
import org.opendaylight.controller.sal.binding.api.data.DataModificationTransaction;
-import org.opendaylight.controller.sal.binding.api.data.DataProviderService;
import org.opendaylight.yang.gen.v1.urn.opendaylight.inventory.rev130819.node.NodeConnector;
import org.opendaylight.yang.gen.v1.urn.opendaylight.inventory.rev130819.node.NodeConnectorBuilder;
import org.opendaylight.yang.gen.v1.urn.opendaylight.inventory.rev130819.node.NodeConnectorKey;
-import org.opendaylight.yang.gen.v1.urn.opendaylight.inventory.rev130819.nodes.Node;
import org.opendaylight.yang.gen.v1.urn.opendaylight.port.statistics.rev131214.FlowCapableNodeConnectorStatisticsData;
import org.opendaylight.yang.gen.v1.urn.opendaylight.port.statistics.rev131214.FlowCapableNodeConnectorStatisticsDataBuilder;
+import org.opendaylight.yang.gen.v1.urn.opendaylight.port.statistics.rev131214.GetAllNodeConnectorsStatisticsInputBuilder;
+import org.opendaylight.yang.gen.v1.urn.opendaylight.port.statistics.rev131214.OpendaylightPortStatisticsService;
import org.opendaylight.yang.gen.v1.urn.opendaylight.port.statistics.rev131214.flow.capable.node.connector.statistics.FlowCapableNodeConnectorStatisticsBuilder;
import org.opendaylight.yang.gen.v1.urn.opendaylight.port.statistics.rev131214.node.connector.statistics.and.port.number.map.NodeConnectorStatisticsAndPortNumberMap;
import org.opendaylight.yangtools.yang.binding.InstanceIdentifier;
final class NodeConnectorStatsTracker extends AbstractStatsTracker<NodeConnectorStatisticsAndPortNumberMap, NodeConnectorStatisticsAndPortNumberMap> {
private static final Logger logger = LoggerFactory.getLogger(NodeConnectorStatsTracker.class);
+ private final OpendaylightPortStatisticsService portStatsService;
- NodeConnectorStatsTracker(InstanceIdentifier<Node> nodeIdentifier, DataProviderService dps, long lifetimeNanos) {
- super(nodeIdentifier, dps, lifetimeNanos);
+ NodeConnectorStatsTracker(final OpendaylightPortStatisticsService portStatsService, final FlowCapableContext context) {
+ super(context);
+ this.portStatsService = portStatsService;
}
@Override
- protected void cleanupSingleStat(DataModificationTransaction trans, NodeConnectorStatisticsAndPortNumberMap item) {
+ protected void cleanupSingleStat(final DataModificationTransaction trans, final NodeConnectorStatisticsAndPortNumberMap item) {
// TODO Auto-generated method stub
}
@Override
- protected NodeConnectorStatisticsAndPortNumberMap updateSingleStat(DataModificationTransaction trans, NodeConnectorStatisticsAndPortNumberMap item) {
+ protected NodeConnectorStatisticsAndPortNumberMap updateSingleStat(final DataModificationTransaction trans, final NodeConnectorStatisticsAndPortNumberMap item) {
FlowCapableNodeConnectorStatisticsBuilder statisticsBuilder
= new FlowCapableNodeConnectorStatisticsBuilder();
statisticsBuilder.setBytes(item.getBytes());
statisticsDataBuilder.setFlowCapableNodeConnectorStatistics(statisticsBuilder.build());
- InstanceIdentifier<NodeConnector> nodeConnectorRef = getNodeIdentifierBuilder()
- .child(NodeConnector.class, new NodeConnectorKey(item.getNodeConnectorId())).build();
+ final NodeConnectorKey key = new NodeConnectorKey(item.getNodeConnectorId());
+ final InstanceIdentifier<NodeConnector> nodeConnectorRef = getNodeIdentifier().child(NodeConnector.class, key);
// FIXME: can we bypass this read?
NodeConnector nodeConnector = (NodeConnector)trans.readOperationalData(nodeConnectorRef);
if(nodeConnector != null){
final FlowCapableNodeConnectorStatisticsData stats = statisticsDataBuilder.build();
logger.debug("Augmenting port statistics {} to port {}",stats,nodeConnectorRef.toString());
- NodeConnectorBuilder nodeConnectorBuilder = new NodeConnectorBuilder();
- nodeConnectorBuilder.addAugmentation(FlowCapableNodeConnectorStatisticsData.class, stats);
+ NodeConnectorBuilder nodeConnectorBuilder = new NodeConnectorBuilder()
+ .setKey(key).setId(item.getNodeConnectorId())
+ .addAugmentation(FlowCapableNodeConnectorStatisticsData.class, stats);
trans.putOperationalData(nodeConnectorRef, nodeConnectorBuilder.build());
}
return item;
}
+
+ @Override
+ public void request() {
+ if (portStatsService != null) {
+ final GetAllNodeConnectorsStatisticsInputBuilder input = new GetAllNodeConnectorsStatisticsInputBuilder();
+ input.setNode(getNodeRef());
+
+ requestHelper(portStatsService.getAllNodeConnectorsStatistics(input.build()));
+ }
+ }
}