Bumping version of YANG Tools to 2.1; adding YANG smoke STC test.

Change-Id: I8bd719351a5dbe6af286779fdc3ac3105c2bbc62
diff --git a/apps/config/pom.xml b/apps/config/pom.xml
index 4377173..49c102c 100755
--- a/apps/config/pom.xml
+++ b/apps/config/pom.xml
@@ -37,7 +37,6 @@
         <dependency>
             <groupId>org.onosproject</groupId>
             <artifactId>onos-yang-model</artifactId>
-            <version>1.12.0-b8</version>
         </dependency>
         <dependency>
             <groupId>org.onosproject</groupId>
diff --git a/apps/netconf/client/src/main/java/org/onosproject/netconf/client/impl/NetconfTranslatorImpl.java b/apps/netconf/client/src/main/java/org/onosproject/netconf/client/impl/NetconfTranslatorImpl.java
index 87ff7b9..b8ecbf2 100644
--- a/apps/netconf/client/src/main/java/org/onosproject/netconf/client/impl/NetconfTranslatorImpl.java
+++ b/apps/netconf/client/src/main/java/org/onosproject/netconf/client/impl/NetconfTranslatorImpl.java
@@ -52,7 +52,7 @@
 import org.onosproject.yang.runtime.DefaultYangSerializerContext;
 import org.onosproject.yang.runtime.YangRuntimeService;
 import org.onosproject.yang.runtime.YangSerializerContext;
-import org.onosproject.yang.runtime.helperutils.SerializerHelper;
+import org.onosproject.yang.runtime.SerializerHelper;
 import org.osgi.service.component.ComponentContext;
 import org.slf4j.Logger;
 import org.slf4j.LoggerFactory;
@@ -71,7 +71,7 @@
 import static com.google.common.base.Preconditions.checkNotNull;
 import static org.onosproject.netconf.TargetConfig.RUNNING;
 import static org.onosproject.yang.model.DataNode.Type.SINGLE_INSTANCE_LEAF_VALUE_NODE;
-import static org.onosproject.yang.runtime.helperutils.SerializerHelper.addDataNode;
+import static org.onosproject.yang.runtime.SerializerHelper.addDataNode;
 
 /*FIXME these imports are not visible using OSGI*/
 
diff --git a/apps/restconf/restconfmgr/pom.xml b/apps/restconf/restconfmgr/pom.xml
index 87509eb..52006b5 100644
--- a/apps/restconf/restconfmgr/pom.xml
+++ b/apps/restconf/restconfmgr/pom.xml
@@ -32,7 +32,6 @@
         <dependency>
             <groupId>org.onosproject</groupId>
             <artifactId>onos-yang-model</artifactId>
-            <version>1.12.0-b8</version>
         </dependency>
         <dependency>
             <groupId>org.onosproject</groupId>
diff --git a/apps/restconf/utils/pom.xml b/apps/restconf/utils/pom.xml
index d85c8fb..7c93887 100644
--- a/apps/restconf/utils/pom.xml
+++ b/apps/restconf/utils/pom.xml
@@ -32,12 +32,10 @@
         <dependency>
             <groupId>org.onosproject</groupId>
             <artifactId>onos-yang-runtime</artifactId>
-            <version>1.12.0-b8</version>
         </dependency>
         <dependency>
             <groupId>org.onosproject</groupId>
             <artifactId>onos-yang-model</artifactId>
-            <version>1.12.0-b8</version>
         </dependency>
         <dependency>
             <groupId>org.onosproject</groupId>
diff --git a/drivers/huawei/driver/pom.xml b/drivers/huawei/driver/pom.xml
new file mode 100644
index 0000000..fc26a56
--- /dev/null
+++ b/drivers/huawei/driver/pom.xml
@@ -0,0 +1,78 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!--
+  ~ Copyright 2017-present Open Networking Laboratory
+  ~
+  ~ Licensed under the Apache License, Version 2.0 (the "License");
+  ~ you may not use this file except in compliance with the License.
+  ~ You may obtain a copy of the License at
+  ~
+  ~     http://www.apache.org/licenses/LICENSE-2.0
+  ~
+  ~ Unless required by applicable law or agreed to in writing, software
+  ~ distributed under the License is distributed on an "AS IS" BASIS,
+  ~ WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+  ~ See the License for the specific language governing permissions and
+  ~ limitations under the License.
+  -->
+<project xmlns="http://maven.apache.org/POM/4.0.0"
+         xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
+         xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
+    <modelVersion>4.0.0</modelVersion>
+
+    <parent>
+        <groupId>org.onosproject</groupId>
+        <artifactId>onos-drivers-huawei</artifactId>
+        <version>1.10.0-SNAPSHOT</version>
+        <relativePath>../pom.xml</relativePath>
+    </parent>
+
+    <artifactId>onos-drivers-huawei-driver</artifactId>
+    <packaging>bundle</packaging>
+
+    <description>Huawei driver implementation</description>
+    <properties>
+        <yang-tool-version>2.0</yang-tool-version>
+    </properties>
+    <dependencies>
+        <dependency>
+            <groupId>org.onosproject</groupId>
+            <artifactId>onos-drivers-utilities</artifactId>
+            <version>${project.version}</version>
+        </dependency>
+        <dependency>
+            <groupId>org.onosproject</groupId>
+            <artifactId>onos-app-l3vpn-netl3vpn</artifactId>
+            <version>${project.version}</version>
+        </dependency>
+        <dependency>
+            <groupId>org.onosproject</groupId>
+            <artifactId>onos-app-l3vpn-yangmodel</artifactId>
+            <version>${project.version}</version>
+        </dependency>
+        <dependency>
+            <groupId>org.onosproject</groupId>
+            <artifactId>onos-yang-model</artifactId>
+            <version>${yang-tool-version}</version>
+        </dependency>
+        <dependency>
+            <groupId>org.onosproject</groupId>
+            <artifactId>onos-drivers-huawei-yangmodel</artifactId>
+            <version>${project.version}</version>
+        </dependency>
+        <dependency>
+            <groupId>org.onosproject</groupId>
+            <artifactId>onos-netconf-api</artifactId>
+            <version>${project.version}</version>
+        </dependency>
+        <dependency>
+            <groupId>org.onosproject</groupId>
+            <artifactId>onos-app-yang</artifactId>
+            <version>${project.version}</version>
+        </dependency>
+        <dependency>
+            <groupId>org.apache.servicemix.bundles</groupId>
+            <artifactId>org.apache.servicemix.bundles.dom4j</artifactId>
+            <version>1.6.1_5</version>
+        </dependency>
+    </dependencies>
+</project>
diff --git a/drivers/huawei/yangmodel/pom.xml b/drivers/huawei/yangmodel/pom.xml
new file mode 100644
index 0000000..cc7198d
--- /dev/null
+++ b/drivers/huawei/yangmodel/pom.xml
@@ -0,0 +1,49 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!--
+  ~ Copyright 2017-present Open Networking Laboratory
+  ~
+  ~ Licensed under the Apache License, Version 2.0 (the "License");
+  ~ you may not use this file except in compliance with the License.
+  ~ You may obtain a copy of the License at
+  ~
+  ~     http://www.apache.org/licenses/LICENSE-2.0
+  ~
+  ~ Unless required by applicable law or agreed to in writing, software
+  ~ distributed under the License is distributed on an "AS IS" BASIS,
+  ~ WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+  ~ See the License for the specific language governing permissions and
+  ~ limitations under the License.
+  -->
+<project xmlns="http://maven.apache.org/POM/4.0.0"
+         xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
+         xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
+    <modelVersion>4.0.0</modelVersion>
+    <dependencies>
+        <dependency>
+            <groupId>org.onosproject</groupId>
+            <artifactId>onos-yang-model</artifactId>
+        </dependency>
+    </dependencies>
+
+    <parent>
+        <groupId>org.onosproject</groupId>
+        <artifactId>onos-drivers-huawei</artifactId>
+        <version>1.10.0-SNAPSHOT</version>
+        <relativePath>../pom.xml</relativePath>
+    </parent>
+
+    <artifactId>onos-drivers-huawei-yangmodel</artifactId>
+    <packaging>bundle</packaging>
+
+    <description>Huawei L3VPN YANG model</description>
+
+    <build>
+        <plugins>
+            <plugin>
+                <groupId>org.onosproject</groupId>
+                <artifactId>onos-yang-compiler-maven-plugin</artifactId>
+            </plugin>
+        </plugins>
+    </build>
+
+</project>
diff --git a/lib/BUCK b/lib/BUCK
index 5fa76c3..91e5ea2 100644
--- a/lib/BUCK
+++ b/lib/BUCK
@@ -1192,55 +1192,55 @@
 
 remote_jar (
   name = 'onos-yang-model',
-  out = 'onos-yang-model-1.12.0-b8.jar',
-  url = 'mvn:org.onosproject:onos-yang-model:jar:1.12.0-b8',
-  sha1 = '272ab5dd687d20d9a483cc58c8f71da31ee8b1b6',
-  maven_coords = 'org.onosproject:onos-yang-model:1.12.0-b8',
+  out = 'onos-yang-model-2.1.jar',
+  url = 'mvn:org.onosproject:onos-yang-model:jar:2.1',
+  sha1 = '9d6007a856b4827ca97144902a5a76e43d35831d',
+  maven_coords = 'org.onosproject:onos-yang-model:2.1',
   visibility = [ 'PUBLIC' ],
 )
 
 remote_jar (
   name = 'onos-yang-compiler-api',
-  out = 'onos-yang-compiler-api-1.12.0-b8.jar',
-  url = 'mvn:org.onosproject:onos-yang-compiler-api:jar:1.12.0-b8',
-  sha1 = '0c0961fb0b55b2ba82e3b69216b2fbb1b35b1d6f',
-  maven_coords = 'org.onosproject:onos-yang-compiler-api:1.12.0-b8',
+  out = 'onos-yang-compiler-api-2.1.jar',
+  url = 'mvn:org.onosproject:onos-yang-compiler-api:jar:2.1',
+  sha1 = 'ceeb6e18a046b94ba5826eecff3ee0ba7630ede3',
+  maven_coords = 'org.onosproject:onos-yang-compiler-api:2.1',
   visibility = [ 'PUBLIC' ],
 )
 
 remote_jar (
   name = 'onos-yang-runtime',
-  out = 'onos-yang-runtime-1.12.0-b8.jar',
-  url = 'mvn:org.onosproject:onos-yang-runtime:jar:1.12.0-b8',
-  sha1 = 'b7f8d35cfe8f57978efc741f56b1431f881a8c83',
-  maven_coords = 'org.onosproject:onos-yang-runtime:1.12.0-b8',
+  out = 'onos-yang-runtime-2.1.jar',
+  url = 'mvn:org.onosproject:onos-yang-runtime:jar:2.1',
+  sha1 = '70324c27c451ef15b2ca792a829c43c633a2e1a2',
+  maven_coords = 'org.onosproject:onos-yang-runtime:2.1',
   visibility = [ 'PUBLIC' ],
 )
 
 remote_jar (
   name = 'onos-yang-serializers-json',
-  out = 'onos-yang-serializers-json-1.12.0-b8.jar',
-  url = 'mvn:org.onosproject:onos-yang-serializers-json:jar:1.12.0-b8',
-  sha1 = '72cb9f767f22c01f0fe7bc1e6d2ba83a20397aa0',
-  maven_coords = 'org.onosproject:onos-yang-serializers-json:1.12.0-b8',
+  out = 'onos-yang-serializers-json-2.1.jar',
+  url = 'mvn:org.onosproject:onos-yang-serializers-json:jar:2.1',
+  sha1 = '82cfd71ff3e5e5f5d512cab758a79537b5b6b097',
+  maven_coords = 'org.onosproject:onos-yang-serializers-json:2.1',
   visibility = [ 'PUBLIC' ],
 )
 
 remote_jar (
   name = 'onos-yang-serializers-xml',
-  out = 'onos-yang-serializers-xml-1.12.0-b8.jar',
-  url = 'mvn:org.onosproject:onos-yang-serializers-xml:jar:1.12.0-b8',
-  sha1 = 'cf5b1e7b85883d13efe35d83330cd8bbe8ba7315',
-  maven_coords = 'org.onosproject:onos-yang-serializers-xml:1.12.0-b8',
+  out = 'onos-yang-serializers-xml-2.1.jar',
+  url = 'mvn:org.onosproject:onos-yang-serializers-xml:jar:2.1',
+  sha1 = '0b4a5fac8c9f37792b1e236403f58b277d00166e',
+  maven_coords = 'org.onosproject:onos-yang-serializers-xml:2.1',
   visibility = [ 'PUBLIC' ],
 )
 
 remote_jar (
   name = 'onos-yang-serializers-utils',
-  out = 'onos-yang-serializers-utils-1.12.0-b8.jar',
-  url = 'mvn:org.onosproject:onos-yang-serializers-utils:jar:1.12.0-b8',
-  sha1 = 'b0d685c517e9b22d93ccefffdab455f3476545ba',
-  maven_coords = 'org.onosproject:onos-yang-serializers-utils:1.12.0-b8',
+  out = 'onos-yang-serializers-utils-2.1.jar',
+  url = 'mvn:org.onosproject:onos-yang-serializers-utils:jar:2.1',
+  sha1 = '31076029d26a02696a3deeaaeb3c96c2032033a5',
+  maven_coords = 'org.onosproject:onos-yang-serializers-utils:2.1',
   visibility = [ 'PUBLIC' ],
 )
 
diff --git a/lib/deps.json b/lib/deps.json
index 8d1d463..a365106 100644
--- a/lib/deps.json
+++ b/lib/deps.json
@@ -214,12 +214,12 @@
     "onos-yang-datamodel": "mvn:org.onosproject:onos-yang-datamodel:1.11",
     "onos-yang-maven-plugin": "mvn:org.onosproject:onos-yang-maven-plugin:1.11",
     "onos-yang-utils-generator": "mvn:org.onosproject:onos-yang-utils-generator:1.11",
-    "onos-yang-model":"mvn:org.onosproject:onos-yang-model:1.12.0-b8",
-    "onos-yang-compiler-api":"mvn:org.onosproject:onos-yang-compiler-api:1.12.0-b8",
-    "onos-yang-runtime":"mvn:org.onosproject:onos-yang-runtime:1.12.0-b8",
-    "onos-yang-serializers-json":"mvn:org.onosproject:onos-yang-serializers-json:1.12.0-b8",
-    "onos-yang-serializers-xml":"mvn:org.onosproject:onos-yang-serializers-xml:1.12.0-b8",
-    "onos-yang-serializers-utils":"mvn:org.onosproject:onos-yang-serializers-utils:1.12.0-b8",
+    "onos-yang-model":"mvn:org.onosproject:onos-yang-model:2.1",
+    "onos-yang-compiler-api":"mvn:org.onosproject:onos-yang-compiler-api:2.1",
+    "onos-yang-runtime":"mvn:org.onosproject:onos-yang-runtime:2.1",
+    "onos-yang-serializers-json":"mvn:org.onosproject:onos-yang-serializers-json:2.1",
+    "onos-yang-serializers-xml":"mvn:org.onosproject:onos-yang-serializers-xml:2.1",
+    "onos-yang-serializers-utils":"mvn:org.onosproject:onos-yang-serializers-utils:2.1",
     "org.apache.servicemix.bundles.dom4j":"mvn:org.apache.servicemix.bundles:org.apache.servicemix.bundles.dom4j:1.6.1_5",
     "openflowj-3.0": {
       "uri": "mvn:org.projectfloodlight:openflowj:3.0.0-SNAPSHOT",
diff --git a/lib/pom.xml b/lib/pom.xml
index 608149b..a3b9ee9 100644
--- a/lib/pom.xml
+++ b/lib/pom.xml
@@ -40,6 +40,7 @@
         <netty4.version>4.1.5.Final</netty4.version>
         <openflowj.version>3.2.0.onos</openflowj.version>
         <onos-maven-plugin.version>1.10</onos-maven-plugin.version>
+        <onos-yang-tools.version>2.1</onos-yang-tools.version>
         <osgi.version>5.0.0</osgi.version>
         <karaf.version>3.0.8</karaf.version>
         <jersey.version>2.25.1</jersey.version>
@@ -387,6 +388,17 @@
                 <version>${openflowj.version}</version>
                 <scope>provided</scope>
             </dependency>
+
+            <dependency>
+                <groupId>org.onosproject</groupId>
+                <artifactId>onos-yang-model</artifactId>
+                <version>${onos-yang-tools.version}</version>
+            </dependency>
+            <dependency>
+                <groupId>org.onosproject</groupId>
+                <artifactId>onos-yang-runtime</artifactId>
+                <version>${onos-yang-tools.version}</version>
+            </dependency>
         </dependencies>
     </dependencyManagement>
 
@@ -567,6 +579,27 @@
                         </execution>
                     </executions>
                 </plugin>
+
+                <plugin>
+                    <groupId>org.onosproject</groupId>
+                    <artifactId>onos-yang-compiler-maven-plugin</artifactId>
+                    <version>${onos-yang-tools.version}</version>
+                    <executions>
+                        <execution>
+                            <goals>
+                                <goal>yang2java</goal>
+                            </goals>
+                        </execution>
+                    </executions>
+                </plugin>
+                <plugin>
+                    <groupId>org.apache.maven.plugins</groupId>
+                    <artifactId>maven-compiler-plugin</artifactId>
+                    <configuration>
+                        <source>1.7</source>
+                        <target>1.7</target>
+                    </configuration>
+                </plugin>
             </plugins>
         </pluginManagement>
 
diff --git a/tools/dev/bin/patch-yang-libs b/tools/dev/bin/patch-yang-libs
index d6ab3ea..fbf091c 100755
--- a/tools/dev/bin/patch-yang-libs
+++ b/tools/dev/bin/patch-yang-libs
@@ -3,8 +3,8 @@
 # Patches lib/BUCK file to use locally built YANG tools.
 # -----------------------------------------------------------------------------
 
-BVER=1.12.0-b7
-SVER=1.12-SNAPSHOT
+BVER=2.1
+SVER=2.2-SNAPSHOT
 
 YANG_TOOLS_ROOT=~/onos-yang-tools
 
diff --git a/tools/test/scenarios/smoke.xml b/tools/test/scenarios/smoke.xml
index 5cb9e62..5b95e70 100644
--- a/tools/test/scenarios/smoke.xml
+++ b/tools/test/scenarios/smoke.xml
@@ -20,6 +20,7 @@
     <import file="${ONOS_SCENARIOS}/maps-cli.xml"/>
     <import file="${ONOS_SCENARIOS}/dist-test.xml"/>
     <import file="${ONOS_SCENARIOS}/smoke-internal.xml"/>
+    <import file="${ONOS_SCENARIOS}/yang-smoke.xml"/>
 
     <dependency name="Setup" requires="Prerequisites,Net-Prerequisites"/>
     <dependency name="Net-Smoke" requires="Setup"/>
@@ -28,7 +29,8 @@
     <dependency name="Meta-App" requires="Setup"/>
     <dependency name="Netcfg" requires="Setup"/>
     <dependency name="Distributed-Primitives" requires="Setup"/>
+    <dependency name="YANG-Smoke" requires="Setup,~Distributed-Primitives"/>
 
     <import file="${ONOS_SCENARIOS}/wrapup.xml"/>
-    <dependency name="Wrapup" requires="~Setup,~Net-Smoke,~Drivers-Test,~Meta-App,~Netcfg"/>
+    <dependency name="Wrapup" requires="~Setup,~Net-Smoke,~Drivers-Test,~Meta-App,~Netcfg,~YANG-Smoke"/>
 </scenario>
diff --git a/tools/test/scenarios/yang-smoke.xml b/tools/test/scenarios/yang-smoke.xml
new file mode 100644
index 0000000..c55a0ba
--- /dev/null
+++ b/tools/test/scenarios/yang-smoke.xml
@@ -0,0 +1,28 @@
+<!--
+  ~ Copyright 2017-present Open Networking Laboratory
+  ~
+  ~ Licensed under the Apache License, Version 2.0 (the "License");
+  ~ you may not use this file except in compliance with the License.
+  ~ You may obtain a copy of the License at
+  ~
+  ~     http://www.apache.org/licenses/LICENSE-2.0
+  ~
+  ~ Unless required by applicable law or agreed to in writing, software
+  ~ distributed under the License is distributed on an "AS IS" BASIS,
+  ~ WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+  ~ See the License for the specific language governing permissions and
+  ~ limitations under the License.
+  -->
+<scenario name="yang-smoke" description="Basic smoke test for YANG subsystem">
+    <group name="YANG-Smoke">
+        <step name="Activate-YANG-Apps"
+              exec="onos ${OC1} app activate org.onosproject.yang-gui org.onosproject.models.openroadm"/>
+        <group name="Check-YANG-Apps-Activated"
+               requires="Activate-YANG-Apps">
+            <parallel var="${OC#}">
+                <step name="Check-YANG-Apps-Activated-${#}"
+                      exec="onos-check-apps ${#} drivers,yang,yang-gui,models.openroadm includes"/>
+            </parallel>
+        </group>
+    </group>
+</scenario>