import org.opendaylight.controller.sal.binding.api.data.DataProviderService;
import org.opendaylight.yang.gen.v1.urn.opendaylight.flow.inventory.rev130819.FlowCapableNode;
import org.opendaylight.yang.gen.v1.urn.opendaylight.flow.inventory.rev130819.FlowCapableNodeConnector;
+import org.opendaylight.yang.gen.v1.urn.opendaylight.flow.inventory.rev130819.meters.Meter;
+import org.opendaylight.yang.gen.v1.urn.opendaylight.flow.inventory.rev130819.meters.MeterKey;
import org.opendaylight.yang.gen.v1.urn.opendaylight.flow.inventory.rev130819.tables.Table;
import org.opendaylight.yang.gen.v1.urn.opendaylight.flow.inventory.rev130819.tables.TableKey;
import org.opendaylight.yang.gen.v1.urn.opendaylight.flow.inventory.rev130819.tables.table.Flow;
import org.opendaylight.yang.gen.v1.urn.opendaylight.flow.statistics.rev130819.AggregateFlowStatisticsData;
import org.opendaylight.yang.gen.v1.urn.opendaylight.flow.statistics.rev130819.FlowStatisticsData;
import org.opendaylight.yang.gen.v1.urn.opendaylight.flow.table.statistics.rev131215.FlowTableStatisticsData;
-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.QueueKey;
+import org.opendaylight.yang.gen.v1.urn.opendaylight.group.statistics.rev131111.NodeGroupStatistics;
+import org.opendaylight.yang.gen.v1.urn.opendaylight.group.statistics.rev131111.group.statistics.GroupStatistics;
+import org.opendaylight.yang.gen.v1.urn.opendaylight.group.types.rev131018.groups.Group;
+import org.opendaylight.yang.gen.v1.urn.opendaylight.group.types.rev131018.groups.GroupKey;
import org.opendaylight.yang.gen.v1.urn.opendaylight.inventory.rev130819.Nodes;
import org.opendaylight.yang.gen.v1.urn.opendaylight.inventory.rev130819.node.NodeConnector;
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.inventory.rev130819.nodes.NodeKey;
+import org.opendaylight.yang.gen.v1.urn.opendaylight.meter.statistics.rev131111.NodeMeterStatistics;
import org.opendaylight.yang.gen.v1.urn.opendaylight.port.statistics.rev131214.FlowCapableNodeConnectorStatisticsData;
-import org.opendaylight.yang.gen.v1.urn.opendaylight.queue.statistics.rev131216.FlowCapableNodeConnectorQueueStatisticsData;
import org.opendaylight.yangtools.yang.binding.InstanceIdentifier;
import org.osgi.framework.BundleContext;
}
- public void _queueStats(CommandInterpreter ci) {
- boolean isFound = false;
- List<Node> nodes = getNodes();
- for (Iterator<Node> iterator = nodes.iterator(); iterator.hasNext();) {
- NodeKey nodeKey = iterator.next().getKey();
- InstanceIdentifier<Node> nodeRef = InstanceIdentifier.builder(Nodes.class).child(Node.class, nodeKey)
- .toInstance();
- Node node = (Node) dataProviderService.readOperationalData(nodeRef);
- List<NodeConnector> ports = node.getNodeConnector();
- for (Iterator<NodeConnector> iterator2 = ports.iterator(); iterator2.hasNext();) {
- NodeConnectorKey nodeConnectorKey = iterator2.next().getKey();
- InstanceIdentifier<FlowCapableNodeConnector> connectorRef = InstanceIdentifier.builder(Nodes.class)
- .child(Node.class, nodeKey).child(NodeConnector.class, nodeConnectorKey)
- .augmentation(FlowCapableNodeConnector.class).toInstance();
- FlowCapableNodeConnector nodeConnector = (FlowCapableNodeConnector) dataProviderService
- .readOperationalData(connectorRef);
- // queue list is always empty, bug 307 is raised.
- List<Queue> queueList = nodeConnector.getQueue();
-
- for (Iterator<Queue> iterator3 = queueList.iterator(); iterator3.hasNext();) {
- QueueKey queueKey = iterator3.next().getKey();
- InstanceIdentifier<Queue> queueRef = InstanceIdentifier.builder(Nodes.class)
- .child(Node.class, nodeKey).child(NodeConnector.class, nodeConnectorKey)
- .augmentation(FlowCapableNodeConnector.class).child(Queue.class, queueKey).toInstance();
- Queue queue = (Queue) dataProviderService.readOperationalData(queueRef);
- FlowCapableNodeConnectorQueueStatisticsData data = queue
- .getAugmentation(FlowCapableNodeConnectorQueueStatisticsData.class);
- if (null != data) {
- isFound = true;
- }
- }
- }
- }
-
- if (isFound) {
- ci.println("queueStats - Success");
- } else {
- ci.println("queueStats - Failed");
- ci.println("System fetchs stats data in 50 seconds interval, so pls wait and try again.");
- }
-
- }
+
public void _tableStats(CommandInterpreter ci) {
int tableCount = 0;
}
+ public void _groupStats(CommandInterpreter ci) {
+ int groupCount = 0;
+ int groupStatsCount = 0;
+ List<Node> nodes = getNodes();
+ for (Iterator<Node> iterator = nodes.iterator(); iterator.hasNext();) {
+ NodeKey nodeKey = iterator.next().getKey();
+ InstanceIdentifier<FlowCapableNode> nodeRef = InstanceIdentifier.builder(Nodes.class).child(Node.class, nodeKey).augmentation(FlowCapableNode.class).toInstance();
+ FlowCapableNode node = (FlowCapableNode)dataProviderService.readOperationalData(nodeRef);
+
+ List<Group> groups = node.getGroup();
+ for (Iterator<Group> iterator2 = groups.iterator(); iterator2.hasNext();) {
+ groupCount++;
+ GroupKey groupKey = iterator2.next().getKey();
+ InstanceIdentifier<Group> groupRef = InstanceIdentifier.builder(Nodes.class).child(Node.class, nodeKey).augmentation(FlowCapableNode.class).child(Group.class, groupKey).toInstance();
+ Group group = (Group)dataProviderService.readOperationalData(groupRef);
+ NodeGroupStatistics data = group.getAugmentation(NodeGroupStatistics.class);
+ if(null != data)
+ {
+ groupStatsCount++;
+ }
+ }
+ }
+
+ if(groupCount == groupStatsCount)
+ {
+ ci.println("---------------------groupStats - Success-------------------------------");
+ }
+ else
+ {
+ ci.println("------------------------------groupStats - Failed--------------------------");
+ ci.println("System fetchs stats data in 50 seconds interval, so pls wait and try again.");
+ }
+ }
+
+ public void _meterStats(CommandInterpreter ci) {
+ int meterCount = 0;
+ int meterStatsCount = 0;
+ List<Node> nodes = getNodes();
+ for (Iterator<Node> iterator = nodes.iterator(); iterator.hasNext();) {
+ NodeKey nodeKey = iterator.next().getKey();
+ InstanceIdentifier<FlowCapableNode> nodeRef = InstanceIdentifier.builder(Nodes.class).child(Node.class, nodeKey).augmentation(FlowCapableNode.class).toInstance();
+ FlowCapableNode node = (FlowCapableNode)dataProviderService.readOperationalData(nodeRef);
+
+ List<Meter> meters = node.getMeter();
+ for (Iterator<Meter> iterator2 = meters.iterator(); iterator2.hasNext();) {
+ meterCount++;
+ MeterKey meterKey = iterator2.next().getKey();
+ InstanceIdentifier<Meter> meterRef = InstanceIdentifier.builder(Nodes.class).child(Node.class, nodeKey).augmentation(FlowCapableNode.class).child(Meter.class, meterKey).toInstance();
+ Meter meter = (Meter)dataProviderService.readOperationalData(meterRef);
+ NodeMeterStatistics data = meter.getAugmentation(NodeMeterStatistics.class);
+ if(null != data)
+ {
+ meterStatsCount++;
+ }
+ }
+ }
+
+ if(meterCount == meterStatsCount)
+ {
+ ci.println("---------------------------meterStats - Success-------------------------------------");
+ }
+ else
+ {
+ ci.println("----------------------------meterStats - Failed-------------------------------------");
+ ci.println("System fetchs stats data in 50 seconds interval, so pls wait and try again.");
+ }
+ }
+
+
public void _aggregateStats(CommandInterpreter ci) {
int aggregateFlowCount = 0;
int aggerateFlowStatsCount = 0;