Added Compatibility for Switch Manager and Topology Manager
[controller.git] / opendaylight / md-sal / compatibility / flow-management-compatibility / src / main / java / org / opendaylight / controller / md / frm / compatibility / FlowConfigMapping.xtend
diff --git a/opendaylight/md-sal/compatibility/flow-management-compatibility/src/main/java/org/opendaylight/controller/md/frm/compatibility/FlowConfigMapping.xtend b/opendaylight/md-sal/compatibility/flow-management-compatibility/src/main/java/org/opendaylight/controller/md/frm/compatibility/FlowConfigMapping.xtend
new file mode 100644 (file)
index 0000000..e4d9173
--- /dev/null
@@ -0,0 +1,60 @@
+package org.opendaylight.controller.md.frm.compatibility
+
+import org.opendaylight.controller.forwardingrulesmanager.FlowConfig
+import org.opendaylight.yang.gen.v1.urn.opendaylight.flow.config.rev130819.flows.FlowBuilder
+
+import static extension org.opendaylight.controller.sal.compatibility.NodeMapping.*
+import static org.opendaylight.controller.sal.compatibility.MDFlowMapping.*
+import static org.opendaylight.controller.sal.compatibility.ToSalConversionsUtils.*
+
+import org.opendaylight.yang.gen.v1.urn.opendaylight.flow.config.rev130819.flows.FlowKey
+import org.opendaylight.yang.gen.v1.urn.opendaylight.flow.config.rev130819.flows.Flow
+import org.opendaylight.yangtools.yang.binding.InstanceIdentifier
+import org.opendaylight.yangtools.yang.binding.InstanceIdentifier.IdentifiableItem
+import org.opendaylight.yangtools.yang.binding.Identifiable
+
+class FlowConfigMapping {
+
+    static def toConfigurationFlow(FlowConfig sourceCfg) {
+        val source = flowAdded(sourceCfg.flow);
+        val it = new FlowBuilder();
+        instructions = source.instructions;
+        cookie = source.cookie;
+        hardTimeout = source.hardTimeout
+        idleTimeout = source.idleTimeout
+        match = source.match
+        node = source.node
+        key = new FlowKey(sourceCfg.name,node);
+        return it.build();
+    }
+
+    static def toFlowConfig(Flow sourceCfg) {
+        val flow = toFlow(sourceCfg);
+        val it = new FlowConfig;
+        name = sourceCfg.key.id
+        node = sourceCfg.node.toADNode();
+
+        return it
+    }
+
+    static def toFlowConfig(InstanceIdentifier<?> identifier) {
+        val it = new FlowConfig()
+        val FlowKey key = ((identifier.path.get(2) as IdentifiableItem<Flow,FlowKey>).key)
+        name = key.id;
+        node = key.node.toADNode();
+
+        return it;
+    }
+
+    static def boolean isFlowPath(InstanceIdentifier<?> path) {
+        if(path.path.size < 2) return false;
+        if (path.path.get(2) instanceof IdentifiableItem<?,?>) {
+            val IdentifiableItem<?,? extends Identifiable<?>> item = path.path.get(2) as IdentifiableItem<?,? extends Identifiable<?>>;
+            val Identifiable<?> key = item.key;
+            if (key instanceof FlowKey) {
+                return true;
+            }
+        }
+        return false;
+    }
+}