1. move tunnel 3 commands to onos-cli
2. add OCH ODU OMS port type;
3. fix some bugs in pcep tunnel provider and topology provider
4. Optimization of the command line tools of tunnel

Change-Id: I323ede971795c8fe6ecddc40e1061f42a8243867

fix tunnel provider bugs.

Change-Id: I323ede971795c8fe6ecddc40e1061f42a8243867
diff --git a/providers/pcep/topology/src/main/java/org/onosproject/provider/pcep/topology/impl/PcepTopologyProvider.java b/providers/pcep/topology/src/main/java/org/onosproject/provider/pcep/topology/impl/PcepTopologyProvider.java
index 9ef9412..5910202 100644
--- a/providers/pcep/topology/src/main/java/org/onosproject/provider/pcep/topology/impl/PcepTopologyProvider.java
+++ b/providers/pcep/topology/src/main/java/org/onosproject/provider/pcep/topology/impl/PcepTopologyProvider.java
@@ -15,6 +15,10 @@
  */
 package org.onosproject.provider.pcep.topology.impl;
 
+import static com.google.common.base.Preconditions.checkNotNull;
+import static org.onosproject.net.DeviceId.deviceId;
+import static org.onosproject.pcep.api.PcepDpid.uri;
+
 import java.util.ArrayList;
 import java.util.HashSet;
 import java.util.List;
@@ -27,7 +31,6 @@
 import org.apache.felix.scr.annotations.ReferenceCardinality;
 import org.onlab.packet.ChassisId;
 import org.onosproject.cluster.ClusterService;
-import org.onosproject.cluster.NodeId;
 import org.onosproject.mastership.MastershipAdminService;
 import org.onosproject.mastership.MastershipService;
 import org.onosproject.net.ConnectPoint;
@@ -57,6 +60,7 @@
 import org.onosproject.pcep.api.PcepController;
 import org.onosproject.pcep.api.PcepDpid;
 import org.onosproject.pcep.api.PcepLink;
+import org.onosproject.pcep.api.PcepLink.PortType;
 import org.onosproject.pcep.api.PcepLinkListener;
 import org.onosproject.pcep.api.PcepOperator.OperationType;
 import org.onosproject.pcep.api.PcepSwitch;
@@ -64,10 +68,6 @@
 import org.slf4j.Logger;
 import org.slf4j.LoggerFactory;
 
-import static com.google.common.base.Preconditions.checkNotNull;
-import static org.onosproject.net.DeviceId.deviceId;
-import static org.onosproject.pcep.api.PcepDpid.uri;
-
 /**
  * Provider which uses an PCEP controller to detect network infrastructure
  * topology.
@@ -130,7 +130,7 @@
     }
 
     private List<PortDescription> buildPortDescriptions(List<Long> ports,
-                                                        String portType) {
+                                                        PortType portType) {
         final List<PortDescription> portDescs = new ArrayList<>();
         for (long port : ports) {
             portDescs.add(buildPortDescription(port, portType));
@@ -138,11 +138,11 @@
         return portDescs;
     }
 
-    private PortDescription buildPortDescription(long port, String portType) {
+    private PortDescription buildPortDescription(long port, PortType portType) {
         final PortNumber portNo = PortNumber.portNumber(port);
         final boolean enabled = true;
         DefaultAnnotations extendedAttributes = DefaultAnnotations.builder()
-                .set("portType", portType).build();
+                .set("portType", String.valueOf(portType)).build();
         return new DefaultPortDescription(portNo, enabled, extendedAttributes);
     }
 
@@ -246,14 +246,22 @@
             PcepSwitch sw = controller.getSwitch(dpid);
             checkNotNull(sw, "device should not null.");
             // The default device type is switch.
-            Device.Type deviceType = Device.Type.SWITCH;
             ChassisId cId = new ChassisId(dpid.value());
+            Device.Type deviceType = null;
 
-            // Device subType: ROADM,OTN,ROUTER.
-            DefaultAnnotations extendedAttributes = DefaultAnnotations
-                    .builder()
-                    .set("subType", String.valueOf(sw.getDeviceSubType()))
-                    .build();
+            switch (sw.getDeviceType()) {
+            case ROADM:
+                deviceType = Device.Type.ROADM;
+                break;
+            case OTN:
+                deviceType = Device.Type.SWITCH;
+                break;
+            case ROUTER:
+                deviceType = Device.Type.ROUTER;
+                break;
+            default:
+                deviceType = Device.Type.OTHER;
+            }
 
             DeviceDescription description = new DefaultDeviceDescription(
                                                                          devicdId.uri(),
@@ -262,12 +270,7 @@
                                                                          sw.hardwareDescription(),
                                                                          sw.softwareDescription(),
                                                                          sw.serialNumber(),
-                                                                         cId,
-                                                                         extendedAttributes);
-            NodeId localNode = clusterService.getLocalNode().id();
-            mastershipAdminService.setRole(localNode, devicdId,
-                                           MastershipRole.MASTER);
-            mastershipService.relinquishMastership(devicdId);
+                                                                         cId);
             deviceProviderService.deviceConnected(devicdId, description);
 
         }
@@ -322,19 +325,15 @@
     @Override
     public void triggerProbe(DeviceId deviceId) {
         // TODO Auto-generated method stub
-
     }
 
     @Override
     public void roleChanged(DeviceId deviceId, MastershipRole newRole) {
-        // NodeId localNode = clusterService.getLocalNode().id();
-        // mastershipService.setRole(localNode, deviceId, newRole);
-
     }
 
     @Override
     public boolean isReachable(DeviceId deviceId) {
         // TODO Auto-generated method stub
-        return false;
+        return true;
     }
 }