Added metered annotation to link

Change-Id: Ief7410d442e8e1c556cc97c0578aa5d717a7b127
diff --git a/core/api/src/main/java/org/onosproject/net/config/basics/BasicLinkConfig.java b/core/api/src/main/java/org/onosproject/net/config/basics/BasicLinkConfig.java
index ff4edb0..8ee0c1b 100644
--- a/core/api/src/main/java/org/onosproject/net/config/basics/BasicLinkConfig.java
+++ b/core/api/src/main/java/org/onosproject/net/config/basics/BasicLinkConfig.java
@@ -48,6 +48,7 @@
     public static final String FLAPPING = "flapping";
     public static final String IS_DURABLE = "durable";
     public static final String IS_BIDIRECTIONAL = "bidirectional";
+    public static final String IS_METERED = "metered";
 
     @Override
     public boolean isValid() {
@@ -55,12 +56,13 @@
         type();
 
         return hasOnlyFields(ALLOWED, TYPE, METRIC, LATENCY, BANDWIDTH, JITTER, DELAY, LOSS, AVAILABILITY, FLAPPING,
-                IS_DURABLE, IS_BIDIRECTIONAL) &&
+                IS_DURABLE, IS_BIDIRECTIONAL, IS_METERED) &&
                 isBoolean(ALLOWED, OPTIONAL) && isNumber(METRIC, OPTIONAL) &&
                 isNumber(LATENCY, OPTIONAL) && isNumber(BANDWIDTH, OPTIONAL) && isDecimal(JITTER, OPTIONAL) &&
                 isDecimal(DELAY, OPTIONAL) && isDecimal(LOSS, OPTIONAL) && isDecimal(AVAILABILITY, OPTIONAL) &&
                 isDecimal(FLAPPING, OPTIONAL) &&
-                isBoolean(IS_BIDIRECTIONAL, OPTIONAL);
+                isBoolean(IS_BIDIRECTIONAL, OPTIONAL) &&
+                isBoolean(IS_METERED, OPTIONAL);
     }
 
     /**
@@ -307,6 +309,29 @@
     }
 
     /**
+     * Returns if link is metered in the network model or not.
+     *
+     * @return true for metered, false otherwise
+     */
+    public Boolean isMetered() {
+        JsonNode res = object.path(IS_METERED);
+        if (res.isMissingNode()) {
+            return true;
+        }
+        return res.asBoolean();
+    }
+
+    /**
+     * Sets durability for this link.
+     *
+     * @param isMetered true for metered, false otherwise
+     * @return this BasicLinkConfig
+     */
+    public BasicLinkConfig isMetered(Boolean isMetered) {
+        return (BasicLinkConfig) setOrClear(IS_METERED, isMetered);
+    }
+
+    /**
      * Create a {@link BasicLinkConfig} instance.
      * <p>
      * Note: created instance needs to be initialized by #init(..) before using.