From db2e8814774e513f2cd632ea58abb3613538f2c6 Mon Sep 17 00:00:00 2001 From: Michal Rehak Date: Tue, 3 Nov 2015 15:54:21 +0100 Subject: [PATCH] BUG-4565: queue stats error - queues do not have any other inspect message but statistics query, here 1 parent was missing when writing queue stats into DS/operational - addapted data assembly in order to create queue node - added TODO: we need to clean existing queues before writing fresh ones - fixed test Change-Id: Icfcb692100b2a0aa666c2e578b09cd903e59fd80 Signed-off-by: Michal Rehak (cherry picked from commit b706170bb88018010bde3d8bd84ef1bbf4662943) --- .../impl/statistics/StatisticsGatheringUtils.java | 10 ++++++++-- .../impl/statistics/StatisticsGatheringUtilsTest.java | 7 +++---- 2 files changed, 11 insertions(+), 6 deletions(-) diff --git a/openflowplugin-impl/src/main/java/org/opendaylight/openflowplugin/impl/statistics/StatisticsGatheringUtils.java b/openflowplugin-impl/src/main/java/org/opendaylight/openflowplugin/impl/statistics/StatisticsGatheringUtils.java index b3952c61af..b6ce236a5e 100644 --- a/openflowplugin-impl/src/main/java/org/opendaylight/openflowplugin/impl/statistics/StatisticsGatheringUtils.java +++ b/openflowplugin-impl/src/main/java/org/opendaylight/openflowplugin/impl/statistics/StatisticsGatheringUtils.java @@ -51,6 +51,7 @@ import org.opendaylight.yang.gen.v1.urn.opendaylight.flow.table.statistics.rev13 import org.opendaylight.yang.gen.v1.urn.opendaylight.flow.table.statistics.rev131215.flow.table.statistics.FlowTableStatistics; import org.opendaylight.yang.gen.v1.urn.opendaylight.flow.table.statistics.rev131215.flow.table.statistics.FlowTableStatisticsBuilder; import org.opendaylight.yang.gen.v1.urn.opendaylight.flow.types.port.rev130925.queues.Queue; +import org.opendaylight.yang.gen.v1.urn.opendaylight.flow.types.port.rev130925.queues.QueueBuilder; import org.opendaylight.yang.gen.v1.urn.opendaylight.flow.types.port.rev130925.queues.QueueKey; import org.opendaylight.yang.gen.v1.urn.opendaylight.group.statistics.rev131111.GroupDescStatsUpdated; import org.opendaylight.yang.gen.v1.urn.opendaylight.group.statistics.rev131111.GroupStatisticsUpdated; @@ -259,6 +260,7 @@ public final class StatisticsGatheringUtils { } private static void processQueueStatistics(final Iterable data, final DeviceContext deviceContext) { + // TODO: clean all queues of all node-connectors before writing up-to-date stats final InstanceIdentifier nodeIdent = deviceContext.getDeviceState().getNodeInstanceIdentifier(); for (final QueueStatisticsUpdate queueStatisticsUpdate : data) { for (final QueueIdAndStatisticsMap queueStat : queueStatisticsUpdate.getQueueIdAndStatisticsMap()) { @@ -273,8 +275,12 @@ public final class StatisticsGatheringUtils { .child(NodeConnector.class, new NodeConnectorKey(queueStat.getNodeConnectorId())) .augmentation(FlowCapableNodeConnector.class) .child(Queue.class, qKey); - final InstanceIdentifier queueStatIdent = queueIdent.augmentation(FlowCapableNodeConnectorQueueStatisticsData.class); - deviceContext.writeToTransaction(LogicalDatastoreType.OPERATIONAL, queueStatIdent, statBuild.build()); + final QueueBuilder queueBuilder = new QueueBuilder() + .setKey(qKey) + .setQueueId(queueStat.getQueueId()) + // node-connector-id is already contained in parent node and the port-id here is of incompatible format + .addAugmentation(FlowCapableNodeConnectorQueueStatisticsData.class, statBuild.build()); + deviceContext.writeToTransaction(LogicalDatastoreType.OPERATIONAL, queueIdent, queueBuilder.build()); } } } diff --git a/openflowplugin-impl/src/test/java/org/opendaylight/openflowplugin/impl/statistics/StatisticsGatheringUtilsTest.java b/openflowplugin-impl/src/test/java/org/opendaylight/openflowplugin/impl/statistics/StatisticsGatheringUtilsTest.java index 86448ab68c..c0871b26a8 100644 --- a/openflowplugin-impl/src/test/java/org/opendaylight/openflowplugin/impl/statistics/StatisticsGatheringUtilsTest.java +++ b/openflowplugin-impl/src/test/java/org/opendaylight/openflowplugin/impl/statistics/StatisticsGatheringUtilsTest.java @@ -392,15 +392,14 @@ public class StatisticsGatheringUtilsTest { fireAndCheck(type, statsData); - InstanceIdentifier queuePath = dummyNodePath + KeyedInstanceIdentifier queuePath = dummyNodePath .child(NodeConnector.class, new NodeConnectorKey(new NodeConnectorId("openflow:" + DUMMY_NODE_ID_VALUE + ":11"))) .augmentation(FlowCapableNodeConnector.class) - .child(Queue.class, new QueueKey(new QueueId(queueIdValue))) - .augmentation(FlowCapableNodeConnectorQueueStatisticsData.class); + .child(Queue.class, new QueueKey(new QueueId(queueIdValue))); verify(deviceContext).writeToTransaction( Matchers.eq(LogicalDatastoreType.OPERATIONAL), Matchers.eq(queuePath), - Matchers.any(FlowCapableNodeConnectorQueueStatisticsData.class)); + Matchers.any(Queue.class)); } @Test -- 2.36.6