Support injecting novaMetadataIp and novaMetadataPort through cfg

Change-Id: Ida449424235b70a791e8ed1d423f021f6d6726f7
diff --git a/apps/openstacknode/app/src/main/java/org/onosproject/openstacknode/codec/NeutronConfigCodec.java b/apps/openstacknode/app/src/main/java/org/onosproject/openstacknode/codec/NeutronConfigCodec.java
index 5acf180..48ca3ac 100644
--- a/apps/openstacknode/app/src/main/java/org/onosproject/openstacknode/codec/NeutronConfigCodec.java
+++ b/apps/openstacknode/app/src/main/java/org/onosproject/openstacknode/codec/NeutronConfigCodec.java
@@ -16,11 +16,12 @@
 
 package org.onosproject.openstacknode.codec;
 
+import com.fasterxml.jackson.databind.JsonNode;
 import com.fasterxml.jackson.databind.node.ObjectNode;
 import org.onosproject.codec.CodecContext;
 import org.onosproject.codec.JsonCodec;
-import org.onosproject.openstacknode.api.NeutronConfig;
 import org.onosproject.openstacknode.api.DefaultNeutronConfig;
+import org.onosproject.openstacknode.api.NeutronConfig;
 
 import static org.onlab.util.Tools.nullIsIllegal;
 
@@ -31,14 +32,26 @@
 
     private static final String USE_METADATA_PROXY = "useMetadataProxy";
     private static final String METADATA_PROXY_SECRET = "metadataProxySecret";
+    private static final String NOVA_METADATA_IP = "novaMetadataIp";
+    private static final String NOVA_METADATA_PORT = "novaMetadataPort";
 
-    private static final String MISSING_MESSAGE = " is required in OpenstackNode";
+    private static final String MISSING_MESSAGE = " is required in NeutronConfig";
 
     @Override
     public ObjectNode encode(NeutronConfig entity, CodecContext context) {
-        return context.mapper().createObjectNode()
-                .put(USE_METADATA_PROXY, entity.useMetadataProxy())
+        ObjectNode node = context.mapper().createObjectNode();
+        node.put(USE_METADATA_PROXY, entity.useMetadataProxy())
                 .put(METADATA_PROXY_SECRET, entity.metadataProxySecret());
+
+        if (entity.novaMetadataIp() != null) {
+            node.put(NOVA_METADATA_IP, entity.novaMetadataIp());
+        }
+
+        if (entity.novaMetadataPort() != null) {
+            node.put(NOVA_METADATA_PORT, entity.novaMetadataPort());
+        }
+
+        return node;
     }
 
     @Override
@@ -53,9 +66,22 @@
         String metadataProxySecret = nullIsIllegal(json.get(METADATA_PROXY_SECRET).asText(),
                 METADATA_PROXY_SECRET + MISSING_MESSAGE);
 
-        return DefaultNeutronConfig.builder()
+        NeutronConfig.Builder builder = DefaultNeutronConfig.builder()
                 .useMetadataProxy(useMetadataProxy)
-                .metadataProxySecret(metadataProxySecret)
-                .build();
+                .metadataProxySecret(metadataProxySecret);
+
+        JsonNode novaMetadataIp = json.get(NOVA_METADATA_IP);
+
+        if (novaMetadataIp != null) {
+            builder.novaMetadataIp(novaMetadataIp.asText());
+        }
+
+        JsonNode novaMetadataPort = json.get(NOVA_METADATA_PORT);
+
+        if (novaMetadataPort != null) {
+            builder.novaMetadataPort(novaMetadataPort.asInt());
+        }
+
+        return builder.build();
     }
 }