TE Topoplogy subsystem I2RS API changes

This submission contains the following:

1. Major changes in apps/tetopology. The changes are mainly introduced
   to support new searching keys in TE Topology.

2. Add RESTCONF notification support in the TE Provider. i.e., for
   south-bound RESTCONF communication with the domain controller.

Change-Id: I6786959deb66c98626edc65ff52694dcf08981a3
diff --git a/apps/tenbi/utils/src/main/java/org/onosproject/teyang/utils/topology/NodeConverter.java b/apps/tenbi/utils/src/main/java/org/onosproject/teyang/utils/topology/NodeConverter.java
index 9f85e79..b0daeee 100644
--- a/apps/tenbi/utils/src/main/java/org/onosproject/teyang/utils/topology/NodeConverter.java
+++ b/apps/tenbi/utils/src/main/java/org/onosproject/teyang/utils/topology/NodeConverter.java
@@ -15,502 +15,71 @@
  */
 package org.onosproject.teyang.utils.topology;
 
-import static com.google.common.base.Preconditions.checkNotNull;
-
-import java.util.List;
-
-import org.onosproject.tetopology.management.api.KeyId;
-import org.onosproject.tetopology.management.api.node.InterfaceSwitchingCapability;
+import org.onosproject.tetopology.management.api.TeTopologyService;
+import org.onosproject.tetopology.management.api.node.NetworkNode;
 import org.onosproject.tetopology.management.api.node.NetworkNodeKey;
-import org.onosproject.tetopology.management.api.node.TeNetworkTopologyId;
-import org.onosproject.tetopology.management.api.node.TeNode;
-import org.onosproject.tetopology.management.api.node.TerminationCapability;
-import org.onosproject.tetopology.management.api.node.TerminationPoint;
-import org.onosproject.tetopology.management.api.node.TerminationPointKey;
-import org.onosproject.yang.gen.v1.urn.ietf.params.xml.ns.yang.ietf.inet.types.rev20130715.ietfinettypes.DomainName;
 import org.onosproject.yang.gen.v1.urn.ietf.params.xml.ns.yang.ietf.network.rev20151208.ietfnetwork.NetworkId;
-import org.onosproject.yang.gen.v1.urn.ietf.params.xml.ns.yang.ietf.network.rev20151208.ietfnetwork.NodeId;
-import org.onosproject.yang.gen.v1.urn.ietf.params.xml.ns.yang.ietf.network.rev20151208
-               .ietfnetwork.networks.network.DefaultNode;
-import org.onosproject.yang.gen.v1.urn.ietf.params.xml.ns.yang.ietf.network.rev20151208
-               .ietfnetwork.networks.network.Node;
-import org.onosproject.yang.gen.v1.urn.ietf.params.xml.ns.yang.ietf.network.rev20151208
-               .ietfnetwork.networks.network.node.DefaultSupportingNode;
-import org.onosproject.yang.gen.v1.urn.ietf.params.xml.ns.yang.ietf.network.rev20151208
-               .ietfnetwork.networks.network.node.SupportingNode;
-import org.onosproject.yang.gen.v1.urn.ietf.params.xml.ns.yang.ietf.network.topology.rev20151208
-               .ietfnetworktopology.TpId;
-import org.onosproject.yang.gen.v1.urn.ietf.params.xml.ns.yang.ietf.network.topology.rev20151208
-               .ietfnetworktopology.networks.network.node.AugmentedNdNode;
-import org.onosproject.yang.gen.v1.urn.ietf.params.xml.ns.yang.ietf.network.topology.rev20151208
-               .ietfnetworktopology.networks.network.node.DefaultAugmentedNdNode;
-import org.onosproject.yang.gen.v1.urn.ietf.params.xml.ns.yang.ietf.te.topology.rev20160708
-               .ietftetopology.networks.network.node.AugmentedNwNode;
-import org.onosproject.yang.gen.v1.urn.ietf.params.xml.ns.yang.ietf.te.topology.rev20160708
-               .ietftetopology.networks.network.node.DefaultAugmentedNwNode;
-import org.onosproject.yang.gen.v1.urn.ietf.params.xml.ns.yang.ietf.te.topology.rev20160708.ietftetopology.tenodeaugment.DefaultTe;
-import org.onosproject.yang.gen.v1.urn.ietf.params.xml.ns.yang.ietf.te.topology.rev20160708.ietftetopology.tenodeaugment.DefaultTe.TeBuilder;
-import org.onosproject.yang.gen.v1.urn.ietf.params.xml.ns.yang.ietf.te.topology.rev20160708.ietftetopology.tenodeaugment.Te;
-import org.onosproject.yang.gen.v1.urn.ietf.params.xml.ns.yang.ietf.te.topology.rev20160708.ietftetopology.tenodeaugment.te.Config;
-import org.onosproject.yang.gen.v1.urn.ietf.params.xml.ns.yang.ietf.te.topology.rev20160708.ietftetopology.tenodeaugment.te.DefaultConfig;
-import org.onosproject.yang.gen.v1.urn.ietf.params.xml.ns.yang.ietf.te.topology.rev20160708.ietftetopology.tenodeaugment.te.DefaultState;
-import org.onosproject.yang.gen.v1.urn.ietf.params.xml.ns.yang.ietf.te.topology.rev20160708.ietftetopology.tenodeaugment.te.DefaultTunnelTerminationPoint;
-import org.onosproject.yang.gen.v1.urn.ietf.params.xml.ns.yang.ietf.te.topology.rev20160708.ietftetopology.tenodeaugment.te.State;
-import org.onosproject.yang.gen.v1.urn.ietf.params.xml.ns.yang.ietf.te.topology.rev20160708.ietftetopology.tenodeaugment.te.TunnelTerminationPoint;
-import org.onosproject.yang.gen.v1.urn.ietf.params.xml.ns.yang.ietf.te.topology.rev20160708.ietftetopology.tenodeconfigattributes.DefaultTeNodeAttributes;
-import org.onosproject.yang.gen.v1.urn.ietf.params.xml.ns.yang.ietf.te.topology.rev20160708.ietftetopology.tenodeconfigattributes.TeNodeAttributes;
-import org.onosproject.yang.gen.v1.urn.ietf.params.xml.ns.yang.ietf.te.topology.rev20160708.ietftetopology.tenodeconnectivitymatrix.ConnectivityMatrix;
-import org.onosproject.yang.gen.v1.urn.ietf.params.xml.ns.yang.ietf.te.topology.rev20160708.ietftetopology.tenodeconnectivitymatrix.DefaultConnectivityMatrix;
-import org.onosproject.yang.gen.v1.urn.ietf.params.xml.ns.yang.ietf.te.topology.rev20160708.ietftetopology.tenodeconnectivitymatrix.connectivitymatrix.DefaultFrom;
-import org.onosproject.yang.gen.v1.urn.ietf.params.xml.ns.yang.ietf.te.topology.rev20160708.ietftetopology.tenodeconnectivitymatrix.connectivitymatrix.DefaultTo;
-import org.onosproject.yang.gen.v1.urn.ietf.params.xml.ns.yang.ietf.te.topology.rev20160708.ietftetopology.tenodeinfoattributes.DefaultUnderlayTopology;
-import org.onosproject.yang.gen.v1.urn.ietf.params.xml.ns.yang.ietf.te.topology.rev20160708.ietftetopology.tenodeinfoattributes.UnderlayTopology;
-import org.onosproject.yang.gen.v1.urn.ietf.params.xml.ns.yang.ietf.te.topology.rev20160708.ietftetopology.tenodetunnelterminationcapability.DefaultTerminationCapability;
-import org.onosproject.yang.gen.v1.urn.ietf.params.xml.ns.yang.ietf.te.topology.rev20160708.ietftetopology.tenodetunnelterminationcapability.DefaultTerminationCapability.TerminationCapabilityBuilder;
-import org.onosproject.yang.gen.v1.urn.ietf.params.xml.ns.yang.ietf.te.types.rev20160705.ietftetypes.TeNodeId;
-import org.onosproject.yang.gen.v1.urn.ietf.params.xml.ns.yang.ietf.te.types.rev20160705.ietftetypes.TeTopologyId;
-
-import com.google.common.collect.Lists;
+import org.onosproject.yang.gen.v1.urn.ietf.params.xml.ns.yang.ietf.network.rev20151208.ietfnetwork.networks.network
+        .Node;
+import org.onosproject.yang.gen.v1.urn.ietf.params.xml.ns.yang.ietf.te.topology.rev20160708.ietftetopology.TeNodeEvent;
 
 /**
  * Node conversion functions.
  */
 public final class NodeConverter {
 
-    private static final String E_NULL_TE_SUBSYSTEM_TE_NODE = "TeSubsystem teNode object cannot be null";
-    private static final String E_NULL_TE_SUBSYSTEM_TE_TUNNEL_TP = "TeSubsystem teTunnelTp object cannot be null";
-    private static final String E_NULL_TE_SUBSYSTEM_NODE = "TeSubsystem ndoe object cannot be null";
-    private static final String E_NULL_YANG_NODE = "Yang node object cannot be null";
+    private static final String E_NULL_TE_SUBSYSTEM_TE_NODE =
+            "TeSubsystem teNode object cannot be null";
+    private static final String E_NULL_TE_SUBSYSTEM_TE_TUNNEL_TP =
+            "TeSubsystem teTunnelTp object cannot be null";
+    private static final String E_NULL_TE_SUBSYSTEM_NODE =
+            "TeSubsystem ndoe object cannot be null";
+    private static final String E_NULL_YANG_NODE =
+            "Yang node object cannot be null";
 
     // no instantiation
     private NodeConverter() {
     }
 
-    /**
-     * TE Node Config object conversion from TE Topology subsystem to YANG.
-     *
-     * @param teSubsystemTeNode TE node object
-     * @return TE Node Config YANG object
-     */
-    private static Config teNode2YangConfig(TeNode teSubsystemTeNode) {
-        checkNotNull(teSubsystemTeNode, E_NULL_TE_SUBSYSTEM_TE_NODE);
-        TeNodeAttributes.TeNodeAttributesBuilder teNodeAttributesConfigBuilder =
-                DefaultTeNodeAttributes.builder()
-                                       .isAbstract(teSubsystemTeNode.isAbstract());
-        if (teSubsystemTeNode.adminStatus() != null) {
-            teNodeAttributesConfigBuilder = teNodeAttributesConfigBuilder
-                    .adminStatus(EnumConverter
-                            .teSubsystem2YangAdminStatus(teSubsystemTeNode
-                            .adminStatus()));
-        }
-
-        if (teSubsystemTeNode.name() != null) {
-            teNodeAttributesConfigBuilder = teNodeAttributesConfigBuilder
-                    .name(DomainName.fromString(teSubsystemTeNode.name()));
-        }
-
-        if (teSubsystemTeNode.underlayTopology() != null) {
-            teNodeAttributesConfigBuilder = teNodeAttributesConfigBuilder
-                    .underlayTopology(teNode2YangUnderlayConfig(teSubsystemTeNode.underlayTopology()));
-        }
-
-        if (teSubsystemTeNode.connectivityMatrices() != null) {
-            ConnectivityMatrix.ConnectivityMatrixBuilder connectivityMatrixConfigBuilder =
-                    DefaultConnectivityMatrix.builder();
-            for (org.onosproject.tetopology.management.api.node.ConnectivityMatrix teCm : teSubsystemTeNode.
-                    connectivityMatrices()) {
-                connectivityMatrixConfigBuilder = connectivityMatrixConfigBuilder
-                        .id(teCm.id())
-                        .isAllowed(teCm.isAllowed())
-                        .from(new DefaultFrom.FromBuilder()
-                                .tpRef(TpId.fromString(teCm.from().tpId()
-                                        .toString()))
-                                .build())
-                        .to(new DefaultTo.ToBuilder()
-                                .tpRef(TpId.fromString(teCm.to().tpId()
-                                        .toString()))
-                                .build());
-                teNodeAttributesConfigBuilder = teNodeAttributesConfigBuilder
-                        .addToConnectivityMatrix(connectivityMatrixConfigBuilder
-                                .build());
-            }
-        }
-
-
-        Config.ConfigBuilder yangConfigBuilder = DefaultConfig.builder();
-        yangConfigBuilder = yangConfigBuilder.teNodeAttributes(teNodeAttributesConfigBuilder.build());
-
-        return yangConfigBuilder.build();
-    }
-
-    private static UnderlayTopology teNode2YangUnderlayConfig(TeNetworkTopologyId underlayTopology) {
-        UnderlayTopology.UnderlayTopologyBuilder underlayConfigBuilder = DefaultUnderlayTopology
-                .builder()
-                .networkIdRef(NetworkId.fromString(underlayTopology.getNetworkId().toString()))
-                .teTopologyIdRef(TeTopologyId
-                        .fromString(underlayTopology
-                                .getTopologyId().topologyId()));
-        return underlayConfigBuilder.build();
-    }
-
-    /**
-     * TE Node State object conversion from TE Topology subsystem to YANG.
-     *
-     * @param teSubsystemTeNode TE node object
-     * @return TE Node State YANG object
-     */
-    private static State teNode2YangState(TeNode teSubsystemTeNode) {
-        checkNotNull(teSubsystemTeNode, E_NULL_TE_SUBSYSTEM_TE_NODE);
-
-        TeNodeAttributes.TeNodeAttributesBuilder teNodeAttributesStateBuilder = DefaultTeNodeAttributes
-                .builder()
-                .isAbstract(teSubsystemTeNode.isAbstract());
-
-        if (teSubsystemTeNode.adminStatus() != null) {
-            teNodeAttributesStateBuilder = teNodeAttributesStateBuilder
-                    .adminStatus(EnumConverter
-                            .teSubsystem2YangAdminStatus(teSubsystemTeNode
-                            .adminStatus()));
-        }
-
-        if (teSubsystemTeNode.name() != null) {
-            teNodeAttributesStateBuilder = teNodeAttributesStateBuilder
-                    .name(DomainName.fromString(teSubsystemTeNode.name()));
-        }
-
-        if (teSubsystemTeNode.underlayTopology() != null) {
-            UnderlayTopology.UnderlayTopologyBuilder underlayStateBuilder = DefaultUnderlayTopology
-                    .builder();
-            underlayStateBuilder = underlayStateBuilder
-                    .networkIdRef(NetworkId.fromString(teSubsystemTeNode
-                                                       .underlayTopology().getNetworkId().toString()))
-                    .teTopologyIdRef(TeTopologyId.fromString(teSubsystemTeNode
-                                                             .underlayTopology().getTopologyId().topologyId()));
-            teNodeAttributesStateBuilder = teNodeAttributesStateBuilder
-                    .underlayTopology(underlayStateBuilder.build());
-        }
-
-        if (teSubsystemTeNode.connectivityMatrices() != null) {
-            ConnectivityMatrix.ConnectivityMatrixBuilder connectivityMatrixStateBuilder = DefaultConnectivityMatrix
-                    .builder();
-            for (org.onosproject.tetopology.management.api.node.ConnectivityMatrix teCm : teSubsystemTeNode
-                    .connectivityMatrices()) {
-                connectivityMatrixStateBuilder = connectivityMatrixStateBuilder
-                        .id(teCm.id())
-                        .isAllowed(teCm.isAllowed())
-                        .from(new DefaultFrom.FromBuilder()
-                                .tpRef(TpId.fromString(teCm.from().tpId()
-                                        .toString()))
-                                .build())
-                        .to(new DefaultTo.ToBuilder()
-                                .tpRef(TpId.fromString(teCm.to().tpId()
-                                        .toString()))
-                                .build());
-                teNodeAttributesStateBuilder = teNodeAttributesStateBuilder
-                        .addToConnectivityMatrix(connectivityMatrixStateBuilder
-                                .build());
-            }
-        }
-
-        State.StateBuilder yangStateBuilder = DefaultState.builder();
-        yangStateBuilder = yangStateBuilder.teNodeAttributes(teNodeAttributesStateBuilder.build());
-
-        if (teSubsystemTeNode.opStatus() != null) {
-            yangStateBuilder = yangStateBuilder.operStatus(EnumConverter
-                    .teSubsystem2YangOperStatus(teSubsystemTeNode
-                            .opStatus()));
-        }
-
-        return yangStateBuilder.build();
-    }
-
-    /**
-     * TE Node TunnelTerminationPoint object conversion from TE Topology subsystem to YANG.
-     *
-     * @param teTunnelTp TE TunnelTerminationPoint object
-     * @return TunnelTerminationPoint YANG object
-     */
-    private static TunnelTerminationPoint teSubsystem2YangTtp(
-                           org.onosproject.tetopology.management.api.node.TunnelTerminationPoint teTunnelTp) {
-        checkNotNull(teTunnelTp, E_NULL_TE_SUBSYSTEM_TE_TUNNEL_TP);
-
-        TunnelTerminationPoint.TunnelTerminationPointBuilder tunnelTpBuilder =
-                DefaultTunnelTerminationPoint.builder().tunnelTpId(teTunnelTp.getTunnelTpId());
-
-        org.onosproject.yang.gen.v1.urn.ietf.params.xml.ns.yang.ietf.te.topology.rev20160708
-                .ietftetopology.tenodeaugment.te.tunnelterminationpoint.
-                Config.ConfigBuilder ttpConfigBuilder =
-        org.onosproject.yang.gen.v1.urn.ietf.params.xml.ns.yang.ietf.te.topology.rev20160708
-                .ietftetopology.tenodeaugment.te.tunnelterminationpoint.DefaultConfig.builder();
-        org.onosproject.yang.gen.v1.urn.ietf.params.xml.ns.yang.ietf.te.topology.rev20160708
-                .ietftetopology.tenodeaugment.te.tunnelterminationpoint.
-                State.StateBuilder ttpStateBuilder =
-        org.onosproject.yang.gen.v1.urn.ietf.params.xml.ns.yang.ietf.te.topology.rev20160708
-                .ietftetopology.tenodeaugment.te.tunnelterminationpoint.DefaultState.builder();
-
-        if (Long.valueOf(teTunnelTp.getInterLayerLockId()) != null) {
-            ttpConfigBuilder = ttpConfigBuilder.interLayerLockId(teTunnelTp.getInterLayerLockId());
-            ttpStateBuilder  = ttpStateBuilder.interLayerLockId(teTunnelTp.getInterLayerLockId());
-        }
-
-        if (teTunnelTp.getSwitchingCapabilities() != null) {
-            // FIXME: switchingCapabilities is a list in
-            // teSubsystem, but is not a list in yang. how to handle
-            // this?
-            for (InterfaceSwitchingCapability iscTe : teTunnelTp.getSwitchingCapabilities()) {
-                // ttpConfigBuilder =
-                // ttpConfigBuilder.switchingCapability(switchingCapability)
-                // ttpStateBuilder =
-                // ttpStateBuilder.switchingCapability(switchingCapability)
-            }
-        }
-
-        if (teTunnelTp.getTerminationCapabilities() != null) {
-            for (TerminationCapability tcap : teTunnelTp.getTerminationCapabilities()) {
-                TerminationCapabilityBuilder tcapBuilder = DefaultTerminationCapability
-                        .builder();
-                // FIXME: at this moment, tcap does not have any getter or setter.
-                // add the following getLinkTpId possibly other attributes to Core data structure
-                // tcapConfigBuilder =
-                // tcapConfigBuilder.linkTp(TpId.fromString(tcap.getLinkTpId.toString()));
-                ttpConfigBuilder = ttpConfigBuilder
-                        .addToTerminationCapability(tcapBuilder.build());
-                ttpStateBuilder = ttpStateBuilder
-                        .addToTerminationCapability(tcapBuilder.build());
-            }
-        }
-
-        tunnelTpBuilder = tunnelTpBuilder.config(ttpConfigBuilder.build())
-                                         .state(ttpStateBuilder.build());
-
-        return tunnelTpBuilder.build();
-    }
 
     /**
      * Node object conversion from TE Topology subsystem to YANG.
      *
-     * @param teSubsystem TE subsystem node object
-     * @return YANG node object
+     * @param teSubsystem TE subsystem node
+     * @return YANG node
      */
     public static Node teSubsystem2YangNode(org.onosproject.tetopology.management.api.node.NetworkNode teSubsystem) {
-        checkNotNull(teSubsystem, E_NULL_TE_SUBSYSTEM_NODE);
-
-        NodeId nodeId = NodeId.fromString(teSubsystem.nodeId().toString());
-        Node.NodeBuilder builder = DefaultNode.builder().nodeId(nodeId);
-
-        if (teSubsystem.getSupportingNodeIds() != null) {
-            List<SupportingNode> sNodes = Lists.newArrayList();
-            SupportingNode.SupportingNodeBuilder spNodeBuilder = DefaultSupportingNode
-                    .builder();
-            for (NetworkNodeKey nodeKey : teSubsystem.getSupportingNodeIds()) {
-                sNodes.add(spNodeBuilder
-                        .networkRef(NetworkId
-                                .fromString(nodeKey.networkId().toString()))
-                        .nodeRef(NodeId.fromString(nodeKey.nodeId().toString()))
-                        .build());
-            }
-            builder = builder.supportingNode(sNodes);
-        }
-
-        if (teSubsystem.getTerminationPoints() != null) {
-            AugmentedNdNode.AugmentedNdNodeBuilder tpAugmentBuilder = DefaultAugmentedNdNode
-                    .builder();
-            List<TerminationPoint> teSubsystemTeTp = teSubsystem
-                    .getTerminationPoints();
-            for (TerminationPoint teTp : teSubsystemTeTp) {
-                tpAugmentBuilder.addToTerminationPoint(TerminationPointConverter
-                        .teSubsystem2YangTerminationPoint(teTp));
-            }
-            builder.addYangAugmentedInfo(tpAugmentBuilder.build(),
-                                         AugmentedNdNode.class);
-        }
-
-        if (teSubsystem.getTe() != null) {
-            AugmentedNwNode.AugmentedNwNodeBuilder nodeAugmentBuilder = DefaultAugmentedNwNode
-                    .builder();
-
-            TeNode teSubsystemTeNode = teSubsystem.getTe();
-
-            TeBuilder yangTeBuilder = DefaultTe.builder();
-
-            if (teSubsystemTeNode.teNodeId() != null) {
-                yangTeBuilder = yangTeBuilder.teNodeId(TeNodeId
-                        .fromString(teSubsystemTeNode.teNodeId().toString()));
-            }
-
-            // Set configuration data
-            // Set state data
-            yangTeBuilder = yangTeBuilder.config(teNode2YangConfig(teSubsystemTeNode))
-                                         .state(teNode2YangState(teSubsystemTeNode));
-
-            if (teSubsystemTeNode.tunnelTerminationPoints() != null) {
-                for (org.onosproject.tetopology.management.api.node.TunnelTerminationPoint
-                        teTunnelTp : teSubsystemTeNode.tunnelTerminationPoints()) {
-                    yangTeBuilder = yangTeBuilder.addToTunnelTerminationPoint(teSubsystem2YangTtp(teTunnelTp));
-                }
-            }
-
-            nodeAugmentBuilder = nodeAugmentBuilder.te(yangTeBuilder.build());
-            builder.addYangAugmentedInfo(nodeAugmentBuilder.build(),
-                                         AugmentedNwNode.class);
-        }
-        return builder.build();
+        //TODO: implementation to be submitted as a separate review
+        return null;
     }
 
     /**
      * Node object conversion from YANG to TE Topology subsystem.
      *
-     * @param yangNode YANG node object
-     * @param yangNetworkId YANG networkId object
-     * @return TE subsystem node object
+     * @param yangNode      Network node in YANG model
+     * @param yangNetworkId YANG network identifier in YANG model
+     * @return TE subsystem node
      */
     public static org.onosproject.tetopology.management.api.node.NetworkNode
-                      yang2TeSubsystemNode(Node yangNode, NetworkId yangNetworkId) {
-        checkNotNull(yangNode, E_NULL_YANG_NODE);
+    yang2TeSubsystemNode(Node yangNode, NetworkId yangNetworkId) {
 
-        org.onosproject.tetopology.management.api.node.DefaultNetworkNode node =
-                new org.onosproject.tetopology.management.api.node.DefaultNetworkNode(
-                       KeyId.keyId(yangNode.nodeId().uri().string()));
+        //TODO: implementation to be submitted as separate review
 
-        if (yangNode.supportingNode() != null) {
-            List<NetworkNodeKey> spNodes = Lists.newArrayList();
-            for (SupportingNode yangSpNode : yangNode.supportingNode()) {
-                NetworkNodeKey nodeKey = new NetworkNodeKey(KeyId.keyId(yangSpNode.nodeRef().uri().toString()),
-                                                            KeyId.keyId(yangSpNode.networkRef().uri().toString()));
-                spNodes.add(nodeKey);
-            }
-            node.setSupportingNodeIds(spNodes);
-        }
-
-        if (yangNode.yangAugmentedInfoMap() != null
-                && !yangNode.yangAugmentedInfoMap().isEmpty()) {
-
-            AugmentedNdNode yangTpNodeAugment = (AugmentedNdNode) yangNode
-                    .yangAugmentedInfo(AugmentedNdNode.class);
-            if (yang2TeSubsystemTpNodeAugment(yangTpNodeAugment) != null) {
-                node.setTerminationPoints(yang2TeSubsystemTpNodeAugment(yangTpNodeAugment));
-            }
-
-            AugmentedNwNode yangNodeAugment = (AugmentedNwNode) yangNode
-                    .yangAugmentedInfo(AugmentedNwNode.class);
-            if (yangNodeAugment != null && yangNodeAugment.te() != null && yangNodeAugment.te().teNodeId() != null) {
-                Te yangNodeAugTe = yangNodeAugment.te();
-                TeNode teNode = yang2TeSubsystemNodeAugment(yangNodeAugTe, yangNetworkId, yangNode.nodeId());
-                node.setTe(teNode);
-            }
-        }
-
-        return node;
+        return null;
     }
 
-    private static TeNode yang2TeSubsystemNodeConnectivityMatrix(TeNode teNode,
-            String networkId, String nodeId, List<ConnectivityMatrix> yangMatrix) {
-        List<org.onosproject.tetopology.management.api.node.ConnectivityMatrix> teCmList =
-                Lists.newArrayList();
-        for (ConnectivityMatrix cmYang : yangMatrix) {
-            Long id = cmYang.id();
-            TerminationPointKey from = new TerminationPointKey(
-                                           KeyId.keyId(networkId),
-                                           KeyId.keyId(nodeId),
-                                           KeyId.keyId(cmYang.from().tpRef().toString()));
-            TerminationPointKey to = new TerminationPointKey(
-                                           KeyId.keyId(networkId),
-                                           KeyId.keyId(nodeId),
-                                           KeyId.keyId(cmYang.to().tpRef().toString()));
-            boolean isAllowed = cmYang.isAllowed();
-            org.onosproject.tetopology.management.api.node.ConnectivityMatrix cmTe =
-                    new org.onosproject.tetopology.management.api.node.ConnectivityMatrix(
-                            id, from, to, isAllowed);
-            teCmList.add(cmTe);
-        }
-        teNode.setConnectivityMatrices(teCmList);
-        return teNode;
+    public static NetworkNodeKey yangNodeEvent2NetworkNodeKey(TeNodeEvent yangNodeEvent) {
+
+        //TODO: implementation to be submitted as separate review
+
+        return null;
     }
 
-    private static TeNode yang2TeSubsystemNodeUnderlayTopology(TeNode teNode,
-                                                               UnderlayTopology ut) {
-        TeNetworkTopologyId underlayTopology =
-                new TeNetworkTopologyId(KeyId.keyId(ut.networkIdRef().toString()),
-                new org.onosproject.tetopology.management.api.TeTopologyId(
-                            ((long) ut.providerIdRef()),
-                            ((long) ut.clientIdRef()),
-                            ut.teTopologyIdRef().toString()));
-        teNode.setUnderlayTopology(underlayTopology);
-        return teNode;
-    }
+    public static NetworkNode yangNodeEvent2NetworkNode(TeNodeEvent yangNodeEvent,
+                                                        TeTopologyService teTopologyService) {
 
-    private static TeNode yang2TeSubsystemTtp(TeNode teNode,
-                                              List<TunnelTerminationPoint> ttps) {
-        List<org.onosproject.tetopology.management.api.node.TunnelTerminationPoint> ttpTeList =
-                Lists.newArrayList();
-        for (TunnelTerminationPoint ttpYang : ttps) {
-            org.onosproject.tetopology.management.api.node.TunnelTerminationPoint ttpTe =
-                    new org.onosproject.tetopology.management.api.node.TunnelTerminationPoint(
-                            ttpYang.tunnelTpId());
-            ttpTe.setInterLayerLockId(ttpYang.config().interLayerLockId());
-            // FIXME: go through
-            // ttpYang.config().switchingCapability() and populate
-            // ttpTe.setSwitchingCapabilities(switchingCapabilities);
-            // FIXME: go through
-            // ttpYang.config().terminationCapability() and populate
-            // ttpTe.setTerminationCapability(terminationCapability);
-            ttpTeList.add(ttpTe);
-        }
-        teNode.setTunnelTerminationPoints(ttpTeList);
+        //TODO: implementation to be submitted as separate review
 
-        return teNode;
-    }
-
-    private static TeNode yang2TeSubsystemNodeAugment(Te yangNodeAugTe,
-            NetworkId yangNetworkId, NodeId yangNodeId) {
-        TeNode teNode = new TeNode(yangNodeAugTe.teNodeId().toString());
-        Config ynodeAugCfg = yangNodeAugTe.config();
-        if (ynodeAugCfg != null) {
-            TeNodeAttributes teNodeAttr = ynodeAugCfg.teNodeAttributes();
-            if (teNodeAttr != null) {
-                teNode.setAbstract(teNodeAttr.isAbstract());
-
-                if (teNodeAttr.adminStatus() != null) {
-                    teNode.setAdminStatus(EnumConverter.yang2TeSubsystemAdminStatus(
-                                                            ynodeAugCfg.teNodeAttributes().adminStatus()));
-                }
-
-                if (yangNodeAugTe.state() != null &&
-                        yangNodeAugTe.state().operStatus() != null) {
-                    teNode.setOpStatus(EnumConverter.yang2TeSubsystemOpStatus(
-                                                         yangNodeAugTe.state().operStatus()));
-                }
-
-                if (teNodeAttr.connectivityMatrix() != null) {
-                    teNode = yang2TeSubsystemNodeConnectivityMatrix(teNode,
-                                                                    yangNetworkId.uri().toString(),
-                                                                    yangNodeId.uri().toString(),
-                                                                    teNodeAttr.connectivityMatrix());
-                }
-
-                if (teNodeAttr.underlayTopology() != null) {
-                    teNode = yang2TeSubsystemNodeUnderlayTopology(teNode,
-                                                                  teNodeAttr.underlayTopology());
-                }
-            }
-        }
-
-        if (yangNodeAugTe.tunnelTerminationPoint() != null) {
-            teNode = yang2TeSubsystemTtp(teNode, yangNodeAugTe.tunnelTerminationPoint());
-        }
-        return teNode;
-    }
-
-    private static List<TerminationPoint> yang2TeSubsystemTpNodeAugment(AugmentedNdNode yangTpNodeAugment) {
-        if (yangTpNodeAugment.terminationPoint() != null) {
-            List<TerminationPoint> teTpList = Lists.newArrayList();
-            for (org.onosproject.yang.gen.v1.urn.ietf.params.xml.ns.yang.ietf.network.topology
-                    .rev20151208.ietfnetworktopology.networks.network.node.augmentedndnode.TerminationPoint
-                    yangTpnode : yangTpNodeAugment.terminationPoint()) {
-                teTpList.add(TerminationPointConverter.yang2teSubsystemTerminationPoint(yangTpnode));
-            }
-            return teTpList;
-        }
         return null;
     }
 }