Added matching vlan and  push, pop and rewrite VLAN ID treatement in Intent add command. Added MPLS intent support for vlan operations

Change-Id: Ia70f13209adecaebde93a6fe7bd07b8e5a21074d
diff --git a/cli/src/main/java/org/onosproject/cli/net/ConnectivityIntentCommand.java b/cli/src/main/java/org/onosproject/cli/net/ConnectivityIntentCommand.java
index 8bc0bc4..d22f147 100644
--- a/cli/src/main/java/org/onosproject/cli/net/ConnectivityIntentCommand.java
+++ b/cli/src/main/java/org/onosproject/cli/net/ConnectivityIntentCommand.java
@@ -24,6 +24,7 @@
 import org.apache.karaf.shell.commands.Option;
 import org.onlab.packet.Ip6Address;
 import org.onlab.packet.IpAddress;
+import org.onlab.packet.VlanId;
 import org.onlab.util.Bandwidth;
 import org.onosproject.cli.AbstractShellCommand;
 import org.onosproject.core.ApplicationId;
@@ -61,6 +62,10 @@
             required = false, multiValued = false)
     private String ethTypeString = null;
 
+    @Option(name = "-v", aliases = "--vlan", description = "VLAN ID",
+            required = false, multiValued = false)
+    private String vlanString = null;
+
     @Option(name = "--ipProto", description = "IP Protocol",
             required = false, multiValued = false)
     private String ipProtoString = null;
@@ -143,6 +148,17 @@
             required = false, multiValued = false)
     private String setIpDstString = null;
 
+    @Option(name = "--setVlan", description = "Rewrite VLAN ID",
+            required = false, multiValued = false)
+    private String setVlan = null;
+
+    @Option(name = "--popVlan", description = "Pop VLAN Tag",
+            required = false, multiValued = false)
+    private boolean popVlan = false;
+
+    @Option(name = "--pushVlan", description = "Push VLAN ID",
+            required = false, multiValued = false)
+    private String pushVlan = null;
 
     // Priorities
     @Option(name = "-p", aliases = "--priority", description = "Priority",
@@ -202,6 +218,9 @@
         if (ethType != null) {
             selectorBuilder.matchEthType(ethType);
         }
+        if (!isNullOrEmpty(vlanString)) {
+            selectorBuilder.matchVlanId(VlanId.vlanId(Short.parseShort(vlanString)));
+        }
         if (!isNullOrEmpty(srcMacString)) {
             selectorBuilder.matchEthSrc(MacAddress.valueOf(srcMacString));
         }
@@ -289,6 +308,19 @@
             treatmentBuilder.setIpSrc(IpAddress.valueOf(setIpDstString));
             emptyTreatment = false;
         }
+        if (!isNullOrEmpty(setVlan)) {
+            treatmentBuilder.setVlanId(VlanId.vlanId(Short.parseShort(setVlan)));
+            emptyTreatment = false;
+        }
+        if (popVlan) {
+            treatmentBuilder.popVlan();
+            emptyTreatment = false;
+        }
+        if (!isNullOrEmpty(pushVlan)) {
+            treatmentBuilder.pushVlan();
+            treatmentBuilder.setVlanId(VlanId.vlanId(Short.parseShort(pushVlan)));
+            emptyTreatment = false;
+        }
 
         if (emptyTreatment) {
             return DefaultTrafficTreatment.emptyTreatment();