Add optional 'name' field in BGP speaker config

Change-Id: If6f4567cd1a7c29b0424cc84bef050efe392544c
diff --git a/apps/routing-api/src/main/java/org/onosproject/routing/config/BgpConfig.java b/apps/routing-api/src/main/java/org/onosproject/routing/config/BgpConfig.java
index 19107be..2f1ede7 100644
--- a/apps/routing-api/src/main/java/org/onosproject/routing/config/BgpConfig.java
+++ b/apps/routing-api/src/main/java/org/onosproject/routing/config/BgpConfig.java
@@ -20,9 +20,10 @@
 import com.google.common.collect.Sets;
 import org.onlab.packet.IpAddress;
 import org.onosproject.core.ApplicationId;
-import org.onosproject.net.config.Config;
 import org.onosproject.net.ConnectPoint;
+import org.onosproject.net.config.Config;
 
+import java.util.Optional;
 import java.util.Set;
 
 import static com.google.common.base.Preconditions.checkNotNull;
@@ -34,6 +35,7 @@
 
     public static final String SPEAKERS = "bgpSpeakers";
     public static final String CONNECT_POINT = "connectPoint";
+    public static final String NAME = "name";
     public static final String PEERS = "peers";
 
     // TODO add methods for updating config
@@ -50,9 +52,17 @@
         speakersNode.forEach(jsonNode -> {
             Set<IpAddress> listenAddresses = Sets.newHashSet();
             jsonNode.path(PEERS).forEach(addressNode ->
-                    listenAddresses.add(IpAddress.valueOf(addressNode.asText()))
+                            listenAddresses.add(IpAddress.valueOf(addressNode.asText()))
             );
-            speakers.add(new BgpSpeakerConfig(
+
+            Optional<String> name;
+            if (jsonNode.get(NAME) == null) {
+                name = Optional.empty();
+            } else {
+                name = Optional.of(jsonNode.get(NAME).asText());
+            }
+
+            speakers.add(new BgpSpeakerConfig(name,
                     ConnectPoint.deviceConnectPoint(jsonNode.path(CONNECT_POINT).asText()),
                     listenAddresses));
         });
@@ -65,14 +75,21 @@
      */
     public static class BgpSpeakerConfig {
 
+        private Optional<String> name;
         private ConnectPoint connectPoint;
         private Set<IpAddress> peers;
 
-        public BgpSpeakerConfig(ConnectPoint connectPoint, Set<IpAddress> peers) {
+        public BgpSpeakerConfig(Optional<String> name, ConnectPoint connectPoint,
+                                Set<IpAddress> peers) {
+            this.name = checkNotNull(name);
             this.connectPoint = checkNotNull(connectPoint);
             this.peers = checkNotNull(peers);
         }
 
+        public Optional<String> name() {
+            return name;
+        }
+
         public ConnectPoint connectPoint() {
             return connectPoint;
         }