DO-NOT-MERGE-YET: Port description is not getting udpated when port removed from...
[openflowplugin.git] / openflowplugin / src / main / java / org / opendaylight / openflowplugin / openflow / md / core / translator / PortStatusMessageToNodeConnectorUpdatedTranslator.java
index b8ab73e32487dff270ebce2280a5ec6634a84bfe..e061643c7cc02a3cebb1fc1c5caaf7f5ca755131 100644 (file)
@@ -16,6 +16,7 @@ import org.opendaylight.openflowplugin.api.openflow.md.core.IMDMessageTranslator
 import org.opendaylight.openflowplugin.api.openflow.md.core.SwitchConnectionDistinguisher;
 import org.opendaylight.openflowplugin.api.openflow.md.core.session.SessionContext;
 import org.opendaylight.openflowplugin.openflow.md.util.PortTranslatorUtil;
+import org.opendaylight.yang.gen.v1.urn.opendaylight.openflow.common.types.rev130731.PortReason;
 import org.opendaylight.yang.gen.v1.urn.opendaylight.openflow.protocol.rev130731.OfHeader;
 import org.opendaylight.yang.gen.v1.urn.opendaylight.openflow.protocol.rev130731.PortStatusMessage;
 import org.opendaylight.yangtools.yang.binding.DataObject;
@@ -23,7 +24,7 @@ import org.slf4j.Logger;
 import org.slf4j.LoggerFactory;
 
 /**
- * translates {@link PortStatusMessage} from OF-API model to MD-SAL model, 
+ * translates {@link PortStatusMessage} from OF-API model to MD-SAL model,
  * supports OF-{1.0; 1.3}
  */
 public class PortStatusMessageToNodeConnectorUpdatedTranslator implements IMDMessageTranslator<OfHeader, List<DataObject>> {
@@ -39,8 +40,14 @@ public class PortStatusMessageToNodeConnectorUpdatedTranslator implements IMDMes
             BigInteger datapathId = sc.getFeatures().getDatapathId();
             Long portNo = port.getPortNo();
             Short version = port.getVersion();
-            LOG.debug("PortStatusMessage: version {}  dataPathId {} portNo {}",version, datapathId,portNo);
-            list.add(PortTranslatorUtil.translatePort(version, datapathId, portNo, port));
+            if(port.getReason() == PortReason.OFPPRDELETE){
+                LOG.debug("PortStatusMessage: version {}  dataPathId {} portNo {} reason {}",version, datapathId,portNo,port.getReason());
+                list.add(PortTranslatorUtil.translatePortRemoved(version, datapathId, portNo, port));
+
+            }else{
+                LOG.debug("PortStatusMessage: version {}  dataPathId {} portNo {}",version, datapathId,portNo);
+                list.add(PortTranslatorUtil.translatePort(version, datapathId, portNo, port));
+            }
             return list;
         } else {
             // TODO - Do something smarter than returning null if translation fails... what Exception should we throw here?