[ONOS-4127] Backup metric service to ganglia monitoring server

- Initial implementation of metric service reporter
- Unit test for metric service reporter
- Bump up metric lib from 3.1.0 to 3.1.2

Change-Id: Ia178df759d671dfc15cffaacb09d5279ad3d9ad8
diff --git a/utils/misc/pom.xml b/utils/misc/pom.xml
index 25c404b..28573b5 100644
--- a/utils/misc/pom.xml
+++ b/utils/misc/pom.xml
@@ -31,6 +31,10 @@
 
     <description>Miscellaneous ON.Lab utilities</description>
 
+    <properties>
+        <metrics.version>3.1.2</metrics.version>
+    </properties>
+
     <dependencies>
         <dependency>
             <groupId>com.google.guava</groupId>
@@ -71,12 +75,12 @@
         <dependency>
             <groupId>io.dropwizard.metrics</groupId>
             <artifactId>metrics-core</artifactId>
-            <version>3.1.0</version>
+            <version>${metrics.version}</version>
         </dependency>
         <dependency>
             <groupId>io.dropwizard.metrics</groupId>
             <artifactId>metrics-json</artifactId>
-            <version>3.1.0</version>
+            <version>${metrics.version}</version>
         </dependency>
         <dependency>
             <groupId>org.apache.felix</groupId>
diff --git a/utils/misc/src/main/java/org/onlab/metrics/MetricsManager.java b/utils/misc/src/main/java/org/onlab/metrics/MetricsManager.java
index 6c9314a..64bf9ee 100644
--- a/utils/misc/src/main/java/org/onlab/metrics/MetricsManager.java
+++ b/utils/misc/src/main/java/org/onlab/metrics/MetricsManager.java
@@ -102,6 +102,16 @@
     }
 
     /**
+     * Fetches existing metric registry.
+     *
+     * @return metric registry
+     */
+    @Override
+    public MetricRegistry getMetricRegistry() {
+        return metricsRegistry;
+    }
+
+    /**
      * Generates a name for a Metric from its component and feature.
      *
      * @param component component the metric is defined in
diff --git a/utils/misc/src/main/java/org/onlab/metrics/MetricsService.java b/utils/misc/src/main/java/org/onlab/metrics/MetricsService.java
index 4f0d67a..7688da6 100644
--- a/utils/misc/src/main/java/org/onlab/metrics/MetricsService.java
+++ b/utils/misc/src/main/java/org/onlab/metrics/MetricsService.java
@@ -23,6 +23,7 @@
 import com.codahale.metrics.Meter;
 import com.codahale.metrics.Metric;
 import com.codahale.metrics.MetricFilter;
+import com.codahale.metrics.MetricRegistry;
 import com.codahale.metrics.Timer;
 
 /**
@@ -39,6 +40,13 @@
     MetricsComponent registerComponent(String name);
 
     /**
+     * Fetches existing metric registry.
+     *
+     * @return metric registry
+     */
+    MetricRegistry getMetricRegistry();
+
+    /**
      * Creates a Counter metric.
      *
      * @param component component the Counter is defined in
diff --git a/utils/misc/src/test/java/org/onlab/metrics/MetricsServiceAdapter.java b/utils/misc/src/test/java/org/onlab/metrics/MetricsServiceAdapter.java
index 9593feb..59e6116 100644
--- a/utils/misc/src/test/java/org/onlab/metrics/MetricsServiceAdapter.java
+++ b/utils/misc/src/test/java/org/onlab/metrics/MetricsServiceAdapter.java
@@ -19,6 +19,7 @@
 import com.codahale.metrics.Counter;
 import com.codahale.metrics.Histogram;
 import com.codahale.metrics.Meter;
+import com.codahale.metrics.MetricRegistry;
 import com.codahale.metrics.Timer;
 import com.codahale.metrics.Gauge;
 import com.codahale.metrics.Metric;
@@ -39,6 +40,11 @@
     }
 
     @Override
+    public MetricRegistry getMetricRegistry() {
+        return null;
+    }
+
+    @Override
     public Counter createCounter(MetricsComponent component,
                                  MetricsFeature feature, String metricName) {
         return null;