[ONOS-6551] Tunnel implementation for L3VPN service.

Change-Id: I3171a83305cb7391d80fda94ddf567629a10675e
diff --git a/drivers/huawei/src/main/java/org/onosproject/drivers/huawei/HuaweiL3VpnConfig.java b/drivers/huawei/src/main/java/org/onosproject/drivers/huawei/HuaweiL3VpnConfig.java
index 63519f2..2c08d36 100644
--- a/drivers/huawei/src/main/java/org/onosproject/drivers/huawei/HuaweiL3VpnConfig.java
+++ b/drivers/huawei/src/main/java/org/onosproject/drivers/huawei/HuaweiL3VpnConfig.java
@@ -21,7 +21,8 @@
 import org.onosproject.config.FailedException;
 import org.onosproject.l3vpn.netl3vpn.BgpDriverInfo;
 import org.onosproject.l3vpn.netl3vpn.BgpInfo;
-import org.onosproject.net.behaviour.L3VpnConfig;
+import org.onosproject.l3vpn.netl3vpn.L3VpnConfig;
+import org.onosproject.l3vpn.netl3vpn.TunnelInfo;
 import org.onosproject.net.driver.AbstractHandlerBehaviour;
 import org.onosproject.yang.model.DataNode;
 import org.onosproject.yang.model.ModelObjectData;
@@ -37,6 +38,11 @@
 import static org.onosproject.drivers.huawei.InsConstructionUtil.getCreateVpnIns;
 import static org.onosproject.drivers.huawei.InsConstructionUtil.getDeleteVpnIns;
 import static org.onosproject.drivers.huawei.IntConstructionUtil.getCreateInt;
+import static org.onosproject.drivers.huawei.TnlConstructionUtil.getBindTnl;
+import static org.onosproject.drivers.huawei.TnlConstructionUtil.getCreateTnl;
+import static org.onosproject.drivers.huawei.TnlConstructionUtil.getCreateTnlDev;
+import static org.onosproject.drivers.huawei.TnlConstructionUtil.getCreateTnlPol;
+import static org.onosproject.drivers.huawei.TnlConstructionUtil.getDeleteTnl;
 
 /**
  * Configures l3vpn on Huawei devices.
@@ -74,39 +80,64 @@
     }
 
     @Override
-    public Object createInstance(Object objectData) {
+    public ModelObjectData createInstance(ModelObjectData objectData) {
         if (modelRegistry == null) {
             init();
         }
-        return getCreateVpnIns((ModelObjectData) objectData,
-                               isDevicesPresent());
+        return getCreateVpnIns(objectData, isDevicesPresent());
     }
 
     @Override
-    public Object bindInterface(Object objectData) {
-        return getCreateInt((ModelObjectData) objectData);
+    public ModelObjectData bindInterface(ModelObjectData objectData) {
+        return getCreateInt(objectData);
     }
 
     @Override
-    public Object createBgpInfo(Object bgpInfo, Object bgpConfig) {
-        return getCreateBgp((BgpInfo) bgpInfo, (BgpDriverInfo) bgpConfig);
-    }
-
-
-    @Override
-    public Object deleteInstance(Object objectData) {
-        return getDeleteVpnIns((ModelObjectData) objectData);
+    public ModelObjectData createBgpInfo(BgpInfo bgpInfo,
+                                         BgpDriverInfo bgpConfig) {
+        return getCreateBgp(bgpInfo, bgpConfig);
     }
 
     @Override
-    public Object unbindInterface(Object objectData) {
+    public ModelObjectData createTnlDev(TunnelInfo tnlInfo) {
+        return getCreateTnlDev(tnlInfo);
+    }
+
+    @Override
+    public ModelObjectData createTnlPol(TunnelInfo tnlInfo) {
+        return getCreateTnlPol(tnlInfo);
+    }
+
+    @Override
+    public ModelObjectData createTnl(TunnelInfo tnlInfo) {
+        return getCreateTnl(tnlInfo);
+    }
+
+    @Override
+    public ModelObjectData bindTnl(TunnelInfo tnlInfo) {
+        return getBindTnl(tnlInfo);
+    }
+
+    @Override
+    public ModelObjectData deleteInstance(ModelObjectData objectData) {
+        return getDeleteVpnIns(objectData);
+    }
+
+    @Override
+    public ModelObjectData unbindInterface(ModelObjectData objectData) {
         //TODO:To be committed.
         return null;
     }
 
     @Override
-    public Object deleteBgpInfo(Object bgpInfo, Object bgpConfig) {
-        return getDeleteBgp((BgpInfo) bgpInfo, (BgpDriverInfo) bgpConfig);
+    public ModelObjectData deleteTnl(TunnelInfo tnlInfo) {
+        return getDeleteTnl(tnlInfo);
+    }
+
+    @Override
+    public ModelObjectData deleteBgpInfo(BgpInfo bgpInfo,
+                                         BgpDriverInfo bgpConfig) {
+        return getDeleteBgp(bgpInfo, bgpConfig);
     }
 
     /**