/* * Copyright (c) 2015 Dell Inc. and others. All rights reserved. * * This program and the accompanying materials are made available under the * terms of the Eclipse Public License v1.0 which accompanies this distribution, * and is available at http://www.eclipse.org/legal/epl-v10.html */ package org.opendaylight.tsdr.datastorage; import java.util.ArrayList; import java.util.HashMap; import java.util.List; /** * This class contains a hashmap that stores the metrics name and the method for * obtaining the metrics from OpenFlow statistics data structures passed from * Data Collection service. * @author <a href="mailto:yuling_c@dell.com">YuLing Chen</a> * * Created: March 15, 2015 */ public class TSDRMetricsMap { public static HashMap<String, List<TSDRMetricsStruct>> tsdrMetricsMap = new HashMap<String, List<TSDRMetricsStruct>>(); /* * Constants of the keys in the tsdrMetricsMap. */ public static final String FlowMetrics = "FlowMetrics"; public static final String FlowTableMetrics = "FlowTableMetrics"; public static final String PortMetrics = "PortMetrics"; public static final String GroupMetrics = "GroupMetrics"; public static final String QueueMetrics = "QueueMetrics"; /* * Constants of the metric names */ //flow metrics public static final String PACKET_COUNT_FLOW = "PacketCount"; public static final String BYTE_COUNT_FLOW = "ByteCount"; //flow table metrics public static final String PACKETS_MATCHED_FLOWTABLE = "PacketsMatched"; public static final String ACTIVE_FLOWS_FLOWTABLE = "AcrtiveFlows"; public static final String PACKETS_LOOKED_UP_FLOWTABLE = "PacketsLookedUp"; //port metrics public static final String COLLISION_COUNT_PORT = "CollisionCount"; public static final String RECEIVE_CRC_ERROR_PORT = "ReceiveCRCError"; public static final String RECEIVED_DROPS_PORT = "ReceivedDrops"; public static final String RECEIVED_ERRORS_PORT = "ReceivedErrors"; public static final String RECEIVE_FRAME_ERROR_PORT = "ReceiveFrameError"; public static final String RECEIVE_OVERRUN_ERROR_PORT = "ReceiveOverRunError"; public static final String TRANSMIT_DROPS_PORT = "TransmitDrops"; public static final String TRANSMIT_ERRORS_PORT = "TransmitErrors"; public static final String RECEIVED_PACKETS_PORT = "ReceivedPackets"; public static final String TRANSMITTED_PACKETS_PORT = "TransmittedPackets"; public static final String RECEIVED_BYTES_PORT = "ReceivedBytes"; public static final String TRANSMITTED_BYTES_PORT = "TransmittedBytes"; public static final String DURATION_IN_SECONDS_PORT = "DurationInSeconds"; public static final String DURATION_IN_NANOSEC_PORT = "DurationInNanoSeconds"; //group metrics public static final String PACKET_COUNT_GROUP = "PacketCount"; public static final String BYTE_COUNT_GROUP = "ByteCount"; public static final String REF_COUNT_GROUP = "RefCount"; //queue metrics public static final String TRANSMISSION_ERRORS_QUEUE = "TransmissionErrors"; public static final String TRANSMITTED_BYTES_QUEUE = "TransmittedBytes"; public static final String TRANSMITTED_PACKETS_QUEUE = "TransmittedPackets"; /* * Constants of method names to obtain the metrics values from the corresponding classes * */ //flow metrics method names public static final String GET_PACKET_COUNT_FLOW = "getPacketCount"; public static final String GET_BYTE_COUNT_FLOW = "getByteCount"; //flow table metrics method names public static final String GET_PACKETS_MATCHED_FLOWTABLE = "getPacketsMatched"; public static final String GET_ACTIVE_FLOWS_FLOWTABLE = "getActiveFlows"; public static final String GET_PACKETS_LOOKED_UP_FLOWTABLE = "getPacketsLookedUp"; //port metrics method names public static final String GET_COLLISION_COUNT_PORT = "getCollisionCount"; public static final String GET_RECEIVE_CRC_ERROR_PORT = "getReceiveCrcError"; public static final String GET_RECEIVED_DROPS_PORT = "getReceiveDrops"; public static final String GET_RECEIVED_ERRORS_PORT = "getReceiveErrors"; public static final String GET_RECEIVE_FRAME_ERROR_PORT = "getReceiveFrameError"; public static final String GET_RECEIVE_OVERRUN_ERROR_PORT = "getReceiveOverRunError"; public static final String GET_TRANSMIT_DROPS_PORT = "getTransmitDrops"; public static final String GET_TRANSMIT_ERRORS_PORT = "getTransmitErrors"; public static final String GET_PACKETS_PORT = "getPackets"; public static final String GET_TRANSMITTED_PORT = "getTransmitted"; public static final String GET_RECEIVED_PORT = "getReceived"; public static final String GET_BYTES_PORT = "getBytes"; public static final String GET_DURATION_PORT = "getDuration"; public static final String GET_DURATION_IN_SECONDS_PORT = "getSecond"; public static final String GET_DURATION_IN_NANO_SEC_PORT = "getNanosecond"; //group metrics method names public static final String GET_BYTE_COUNT_GROUP = "getByteCount"; public static final String GET_PACKET_COUNT_GROUP = "getPacketCount"; public static final String GET_REF_COUNT_GROUP = "getRefCount"; //queue metrics method names public static final String GET_TRANSMISSION_ERRORS_QUEUE = "getTransmissionErrors"; public static final String GET_TRANSMITTED_BYTES_QUEUE = "getTransmittedBytes"; public static final String GET_TRANSMITTED_PACKETS_QUEUE = "getTransmittedPackets"; /* * Initializes the tsdrMetricsMap for each category of tsdr metrics. */ static { List<TSDRMetricsStruct> flowMetricsList = new ArrayList<TSDRMetricsStruct>(); //FlowMetrics flowMetricsList.add(new TSDRMetricsStruct(PACKET_COUNT_FLOW, GET_PACKET_COUNT_FLOW)); flowMetricsList.add(new TSDRMetricsStruct(BYTE_COUNT_FLOW, GET_BYTE_COUNT_FLOW)); tsdrMetricsMap.put(FlowMetrics, flowMetricsList); //FlowTableMetrics List<TSDRMetricsStruct> flowTableMetricsList = new ArrayList<TSDRMetricsStruct>(); flowTableMetricsList.add(new TSDRMetricsStruct(PACKETS_MATCHED_FLOWTABLE, GET_PACKETS_MATCHED_FLOWTABLE)); flowTableMetricsList.add(new TSDRMetricsStruct(ACTIVE_FLOWS_FLOWTABLE, GET_ACTIVE_FLOWS_FLOWTABLE)); flowTableMetricsList.add(new TSDRMetricsStruct(PACKETS_LOOKED_UP_FLOWTABLE, GET_PACKETS_LOOKED_UP_FLOWTABLE)); tsdrMetricsMap.put(FlowTableMetrics, flowTableMetricsList); //PortMetrics List<TSDRMetricsStruct> portMetricsList = new ArrayList<TSDRMetricsStruct>(); portMetricsList.add(new TSDRMetricsStruct(COLLISION_COUNT_PORT, GET_COLLISION_COUNT_PORT)); portMetricsList.add(new TSDRMetricsStruct(RECEIVE_CRC_ERROR_PORT, GET_RECEIVE_CRC_ERROR_PORT)); portMetricsList.add(new TSDRMetricsStruct(RECEIVED_DROPS_PORT, GET_RECEIVED_DROPS_PORT)); portMetricsList.add(new TSDRMetricsStruct(RECEIVED_ERRORS_PORT, GET_RECEIVED_ERRORS_PORT)); portMetricsList.add(new TSDRMetricsStruct(RECEIVE_FRAME_ERROR_PORT, GET_RECEIVE_FRAME_ERROR_PORT)); portMetricsList.add(new TSDRMetricsStruct(RECEIVE_OVERRUN_ERROR_PORT, GET_RECEIVE_OVERRUN_ERROR_PORT)); portMetricsList.add(new TSDRMetricsStruct(TRANSMIT_DROPS_PORT, GET_TRANSMIT_DROPS_PORT)); portMetricsList.add(new TSDRMetricsStruct(TRANSMIT_ERRORS_PORT, GET_TRANSMIT_ERRORS_PORT)); portMetricsList.add(new TSDRMetricsStruct(RECEIVED_PACKETS_PORT, GET_PACKETS_PORT, GET_RECEIVED_PORT)); portMetricsList.add(new TSDRMetricsStruct(TRANSMITTED_PACKETS_PORT, GET_PACKETS_PORT, GET_TRANSMITTED_PORT)); portMetricsList.add(new TSDRMetricsStruct(RECEIVED_BYTES_PORT, GET_BYTES_PORT, GET_RECEIVED_PORT)); portMetricsList.add(new TSDRMetricsStruct(TRANSMITTED_BYTES_PORT, GET_BYTES_PORT, GET_TRANSMITTED_PORT)); portMetricsList.add(new TSDRMetricsStruct(DURATION_IN_SECONDS_PORT, GET_DURATION_PORT, GET_DURATION_IN_SECONDS_PORT)); portMetricsList.add(new TSDRMetricsStruct(DURATION_IN_NANOSEC_PORT, GET_DURATION_PORT, GET_DURATION_IN_NANO_SEC_PORT)); tsdrMetricsMap.put(PortMetrics, portMetricsList); //GroupMetrics List<TSDRMetricsStruct> groupMetricsList = new ArrayList<TSDRMetricsStruct>(); groupMetricsList.add(new TSDRMetricsStruct(BYTE_COUNT_GROUP, GET_BYTE_COUNT_GROUP)); groupMetricsList.add(new TSDRMetricsStruct(PACKET_COUNT_GROUP, GET_PACKET_COUNT_GROUP)); groupMetricsList.add(new TSDRMetricsStruct(REF_COUNT_GROUP, GET_REF_COUNT_GROUP)); tsdrMetricsMap.put(GroupMetrics, groupMetricsList); //QueueMetrics List<TSDRMetricsStruct> queueMetricsList = new ArrayList<TSDRMetricsStruct>(); queueMetricsList.add(new TSDRMetricsStruct(TRANSMISSION_ERRORS_QUEUE, GET_TRANSMISSION_ERRORS_QUEUE)); queueMetricsList.add(new TSDRMetricsStruct(TRANSMITTED_BYTES_QUEUE, GET_TRANSMITTED_BYTES_QUEUE)); queueMetricsList.add(new TSDRMetricsStruct(TRANSMITTED_PACKETS_QUEUE, GET_TRANSMITTED_PACKETS_QUEUE)); tsdrMetricsMap.put(QueueMetrics, queueMetricsList); } /** * Obtain the tsdrMetricsMap. * @return */ public static HashMap<String, List<TSDRMetricsStruct>> getTsdrMetricsMap() { return tsdrMetricsMap; } }