Generic ROADM port models and descriptions

Change-Id: I053d61c7a057d6298b7990373448df28b3aaa5a5
diff --git a/core/store/serializers/src/main/java/org/onosproject/store/serializers/DefaultPortSerializer.java b/core/store/serializers/src/main/java/org/onosproject/store/serializers/DefaultPortSerializer.java
index 5d5a463..60d09fb 100644
--- a/core/store/serializers/src/main/java/org/onosproject/store/serializers/DefaultPortSerializer.java
+++ b/core/store/serializers/src/main/java/org/onosproject/store/serializers/DefaultPortSerializer.java
@@ -15,8 +15,10 @@
  */
 package org.onosproject.store.serializers;
 
+import org.onosproject.net.Annotations;
 import org.onosproject.net.DefaultPort;
 import org.onosproject.net.Element;
+import org.onosproject.net.Port;
 import org.onosproject.net.PortNumber;
 
 import com.esotericsoftware.kryo.Kryo;
@@ -43,15 +45,21 @@
         kryo.writeClassAndObject(output, object.element());
         kryo.writeObject(output, object.number());
         output.writeBoolean(object.isEnabled());
+        kryo.writeObject(output, object.type());
+        output.writeLong(object.portSpeed());
+        kryo.writeClassAndObject(output, object.annotations());
     }
 
     @Override
-    public DefaultPort read(Kryo kryo, Input input,
-            Class<DefaultPort> type) {
+    public DefaultPort read(Kryo kryo, Input input, Class<DefaultPort> aClass) {
         Element element = (Element) kryo.readClassAndObject(input);
         PortNumber number = kryo.readObject(input, PortNumber.class);
         boolean isEnabled = input.readBoolean();
+        Port.Type type = kryo.readObject(input, Port.Type.class);
+        long portSpeed = input.readLong();
+        Annotations annotations = (Annotations) kryo.readClassAndObject(input);
 
-        return new DefaultPort(element, number, isEnabled);
+        return new DefaultPort(element, number, isEnabled, type, portSpeed, annotations);
     }
+
 }
diff --git a/core/store/serializers/src/main/java/org/onosproject/store/serializers/KryoNamespaces.java b/core/store/serializers/src/main/java/org/onosproject/store/serializers/KryoNamespaces.java
index 17eb374..a918e2d 100644
--- a/core/store/serializers/src/main/java/org/onosproject/store/serializers/KryoNamespaces.java
+++ b/core/store/serializers/src/main/java/org/onosproject/store/serializers/KryoNamespaces.java
@@ -28,6 +28,7 @@
 import org.onlab.packet.IpPrefix;
 import org.onlab.packet.MacAddress;
 import org.onlab.packet.VlanId;
+import org.onlab.util.Frequency;
 import org.onlab.util.KryoNamespace;
 import org.onosproject.app.ApplicationState;
 import org.onosproject.cluster.ControllerNode;
@@ -41,6 +42,7 @@
 import org.onosproject.core.DefaultGroupId;
 import org.onosproject.core.Version;
 import org.onosproject.mastership.MastershipTerm;
+import org.onosproject.net.Annotations;
 import org.onosproject.net.ConnectPoint;
 import org.onosproject.net.DefaultAnnotations;
 import org.onosproject.net.DefaultDevice;
@@ -55,6 +57,9 @@
 import org.onosproject.net.HostLocation;
 import org.onosproject.net.Link;
 import org.onosproject.net.LinkKey;
+import org.onosproject.net.OchPort;
+import org.onosproject.net.OduCltPort;
+import org.onosproject.net.OmsPort;
 import org.onosproject.net.Port;
 import org.onosproject.net.PortNumber;
 import org.onosproject.net.device.DefaultDeviceDescription;
@@ -348,8 +353,10 @@
                     AnnotationConstraint.class,
                     BooleanConstraint.class,
                     IntentOperation.class,
-                    FlowRuleExtPayLoad.class
-                    )
+                    FlowRuleExtPayLoad.class,
+                    Frequency.class,
+                    DefaultAnnotations.class
+            )
             .register(new DefaultApplicationIdSerializer(), DefaultApplicationId.class)
             .register(new URISerializer(), URI.class)
             .register(new NodeIdSerializer(), NodeId.class)
@@ -365,6 +372,14 @@
             .register(new DefaultOutboundPacketSerializer(), DefaultOutboundPacket.class)
             .register(Versioned.class)
             .register(DefaultGroupId.class)
+            .register(Annotations.class)
+            .register(OmsPort.class)
+            .register(OchPort.class)
+            .register(OchPort.SignalType.class)
+            .register(OchPort.GridType.class)
+            .register(OchPort.ChannelSpacing.class)
+            .register(OduCltPort.class)
+            .register(OduCltPort.SignalType.class)
             .register(
                     MplsIntent.class,
                     MplsPathIntent.class,
@@ -373,7 +388,7 @@
                     MplsLabel.class,
                     org.onlab.packet.MplsLabel.class,
                     org.onlab.packet.MPLS.class
-                    )
+            )
 
             .build();