[ONOS-4722] cherry-picked GoldenEye:Fix exception on learning unknown PCE-initiated LSP from PCC

Change-Id: I8abc003aeb187f18e51de533f0c51e265dfd8661
diff --git a/apps/pce/app/src/main/java/org/onosproject/pce/pceservice/BasicPceccHandler.java b/apps/pce/app/src/main/java/org/onosproject/pce/pceservice/BasicPceccHandler.java
index 732a0b3..3d981e4 100644
--- a/apps/pce/app/src/main/java/org/onosproject/pce/pceservice/BasicPceccHandler.java
+++ b/apps/pce/app/src/main/java/org/onosproject/pce/pceservice/BasicPceccHandler.java
@@ -150,7 +150,7 @@
 
                     // Push into destination device
                     // Destination device IN port is link.dst().port()
-                    installLocalLabelRule(dstDeviceId, labelId, dstPort, tunnel.tunnelId(), isLastLabelToPush,
+                    installLocalLabelRule(dstDeviceId, labelId, dstPort, tunnel.tunnelId(), false,
                                           Long.valueOf(LabelType.IN_LABEL.value), Objective.Operation.ADD);
 
                     // Push into source device
diff --git a/apps/pce/app/src/main/java/org/onosproject/pce/pceservice/PceManager.java b/apps/pce/app/src/main/java/org/onosproject/pce/pceservice/PceManager.java
index c0326b6..a28a26e 100644
--- a/apps/pce/app/src/main/java/org/onosproject/pce/pceservice/PceManager.java
+++ b/apps/pce/app/src/main/java/org/onosproject/pce/pceservice/PceManager.java
@@ -116,6 +116,7 @@
 import static org.onosproject.incubator.net.tunnel.Tunnel.State.INIT;
 import static org.onosproject.incubator.net.tunnel.Tunnel.State.ESTABLISHED;
 import static org.onosproject.incubator.net.tunnel.Tunnel.State.UNSTABLE;
+import static org.onosproject.incubator.net.tunnel.Tunnel.State.FAILED;
 import static org.onosproject.pce.pceservice.LspType.WITH_SIGNALLING;
 import static org.onosproject.pce.pceservice.LspType.SR_WITHOUT_SIGNALLING;
 import static org.onosproject.pce.pceservice.LspType.WITHOUT_SIGNALLING_AND_WITHOUT_SR;
@@ -603,6 +604,18 @@
             PceccTunnelInfo pceccTunnelInfo = new PceccTunnelInfo(null, consumerId);
             pceStore.addTunnelInfo(updatedTunnelId, pceccTunnelInfo);
         }
+
+        // For CR cases, download labels and send update message.
+        if (lspType == WITHOUT_SIGNALLING_AND_WITHOUT_SR) {
+            Tunnel tunnelForlabelDownload = new DefaultTunnel(null, tunnel.src(), tunnel.dst(), MPLS, INIT, null,
+                                                              updatedTunnelId, tunnel.tunnelName(), computedPath,
+                                                              labelStack, annotationBuilder.build());
+
+            if (!crHandler.allocateLabel(tunnelForlabelDownload)) {
+                log.error("Unable to allocate labels for the tunnel {}.", tunnel.toString());
+            }
+        }
+
         return true;
     }
 
@@ -1154,6 +1167,11 @@
                                                                   links.get(links.size() - 1).dst().deviceId(),
                                                                   tunnel.tunnelName().value(), constraints, lspType));
                 }
+
+                if (tunnel.state() == FAILED) {
+                    // Check whether this ONOS instance is master, if yes, recompute and send update.
+                    checkForMasterAndUpdateTunnel(tunnel.path().src().deviceId(), tunnel);
+                }
                 break;
 
             case TUNNEL_REMOVED:
diff --git a/providers/pcep/tunnel/src/main/java/org/onosproject/provider/pcep/tunnel/impl/LspType.java b/protocols/pcep/api/src/main/java/org/onosproject/pcep/controller/LspType.java
similarity index 95%
rename from providers/pcep/tunnel/src/main/java/org/onosproject/provider/pcep/tunnel/impl/LspType.java
rename to protocols/pcep/api/src/main/java/org/onosproject/pcep/controller/LspType.java
index 8efa5f2..876f531 100644
--- a/providers/pcep/tunnel/src/main/java/org/onosproject/provider/pcep/tunnel/impl/LspType.java
+++ b/protocols/pcep/api/src/main/java/org/onosproject/pcep/controller/LspType.java
@@ -14,7 +14,7 @@
  * limitations under the License.
  */
 
-package org.onosproject.provider.pcep.tunnel.impl;
+package org.onosproject.pcep.controller;
 
 /**
  * Representation of LSP type.
diff --git a/protocols/pcep/api/src/main/java/org/onosproject/pcep/controller/PcepEventListener.java b/protocols/pcep/api/src/main/java/org/onosproject/pcep/controller/PcepEventListener.java
index c7c347a..c75d7db 100644
--- a/protocols/pcep/api/src/main/java/org/onosproject/pcep/controller/PcepEventListener.java
+++ b/protocols/pcep/api/src/main/java/org/onosproject/pcep/controller/PcepEventListener.java
@@ -37,13 +37,4 @@
      * @param endOfSyncAction the action that needs to be taken for the tunnel
      */
     void handleEndOfSyncAction(Tunnel tunnel, PcepLspSyncAction endOfSyncAction);
-
-    /**
-     * Handles sending PCEP message to client on end of LSPDB sync.
-     *
-     * @param pccId id of the pcc
-     * @param msg the message to be sent
-     * @param endOfSyncAction the action that needs to be taken in the message
-     */
-    void handleEndOfSyncAction(PccId pccId, PcepMessage msg, PcepLspSyncAction endOfSyncAction);
 }
diff --git a/protocols/pcep/ctl/src/main/java/org/onosproject/pcep/controller/impl/PcepClientControllerImpl.java b/protocols/pcep/ctl/src/main/java/org/onosproject/pcep/controller/impl/PcepClientControllerImpl.java
index 46768a7..f1458ab 100644
--- a/protocols/pcep/ctl/src/main/java/org/onosproject/pcep/controller/impl/PcepClientControllerImpl.java
+++ b/protocols/pcep/ctl/src/main/java/org/onosproject/pcep/controller/impl/PcepClientControllerImpl.java
@@ -49,6 +49,7 @@
 import org.onosproject.pcep.controller.PcepNodeListener;
 import org.onosproject.pcep.controller.PcepPacketListener;
 import org.onosproject.pcep.controller.PcepSyncStatus;
+import org.onosproject.pcep.controller.SrpIdGenerators;
 import org.onosproject.pcep.controller.driver.PcepAgent;
 import org.onosproject.pcepio.exceptions.PcepParseException;
 import org.onosproject.pcepio.protocol.PcInitiatedLspRequest;
@@ -61,6 +62,7 @@
 import org.onosproject.pcepio.protocol.PcepLspObject;
 import org.onosproject.pcepio.protocol.PcepMessage;
 import org.onosproject.pcepio.protocol.PcepReportMsg;
+import org.onosproject.pcepio.protocol.PcepSrpObject;
 import org.onosproject.pcepio.protocol.PcepStateReport;
 import org.onosproject.pcepio.types.PcepValueType;
 import org.onosproject.pcepio.types.StatefulIPv4LspIdentifiersTlv;
@@ -74,7 +76,6 @@
 import static org.onosproject.pcep.controller.PcepSyncStatus.IN_SYNC;
 import static org.onosproject.pcep.controller.PcepLspSyncAction.REMOVE;
 import static org.onosproject.pcep.controller.PcepLspSyncAction.SEND_UPDATE;
-import static org.onosproject.pcep.controller.PcepLspSyncAction.SEND_DELETE;
 import static org.onosproject.pcep.controller.PcepLspSyncAction.UNSTABLE;
 import static org.onosproject.pcepio.types.PcepErrorDetailInfo.ERROR_TYPE_19;
 import static org.onosproject.pcepio.types.PcepErrorDetailInfo.ERROR_VALUE_5;
@@ -487,8 +488,10 @@
                     if (lspObj.getCFlag() && !lspObj.getRFlag()) {
                         // For initiated LSP, need to send PCInit delete msg.
                         try {
+                            PcepSrpObject srpobj = pc.factory().buildSrpObject().setSrpID(SrpIdGenerators.create())
+                                    .setRFlag(true).build();
                             PcInitiatedLspRequest releaseLspRequest = pc.factory().buildPcInitiatedLspRequest()
-                                    .setLspObject(lspObj).build();
+                                    .setLspObject(lspObj).setSrpObject(srpobj).build();
                             LinkedList<PcInitiatedLspRequest> llPcInitiatedLspRequestList
                                     = new LinkedList<PcInitiatedLspRequest>();
                             llPcInitiatedLspRequestList.add(releaseLspRequest);
@@ -496,10 +499,7 @@
                             PcepInitiateMsg pcInitiateMsg = pc.factory().buildPcepInitiateMsg()
                                     .setPcInitiatedLspRequestList(llPcInitiatedLspRequestList).build();
 
-                            for (PcepEventListener l : pcepEventListener) {
-                                l.handleEndOfSyncAction(pccId, pcInitiateMsg, SEND_DELETE);
-                            }
-
+                            pc.sendMessage(Collections.singletonList(pcInitiateMsg));
                         } catch (PcepParseException e) {
                             log.error("Exception occured while sending initiate delete message {}", e.getMessage());
                         }
diff --git a/protocols/pcep/ctl/src/test/java/org/onosproject/pcep/controller/impl/PcepClientControllerImplTest.java b/protocols/pcep/ctl/src/test/java/org/onosproject/pcep/controller/impl/PcepClientControllerImplTest.java
new file mode 100644
index 0000000..f87dccb
--- /dev/null
+++ b/protocols/pcep/ctl/src/test/java/org/onosproject/pcep/controller/impl/PcepClientControllerImplTest.java
@@ -0,0 +1,525 @@
+package org.onosproject.pcep.controller.impl;
+
+import static org.onosproject.pcep.controller.PcepLspSyncAction.SEND_UPDATE;
+import static org.onosproject.pcep.controller.PcepLspSyncAction.UNSTABLE;
+
+import java.net.SocketAddress;
+import java.util.ArrayList;
+import java.util.Collection;
+import java.util.Collections;
+import java.util.HashMap;
+import java.util.HashSet;
+import java.util.List;
+
+import org.jboss.netty.buffer.ChannelBuffer;
+import org.jboss.netty.buffer.ChannelBuffers;
+import org.jboss.netty.channel.Channel;
+import org.jboss.netty.channel.ChannelConfig;
+import org.jboss.netty.channel.ChannelFactory;
+import org.jboss.netty.channel.ChannelFuture;
+import org.jboss.netty.channel.ChannelPipeline;
+import org.junit.After;
+import org.junit.Before;
+import org.junit.Test;
+import org.onlab.packet.IpAddress;
+import org.onosproject.core.ApplicationId;
+import org.onosproject.incubator.net.tunnel.DefaultTunnel;
+import org.onosproject.incubator.net.tunnel.Tunnel;
+import org.onosproject.incubator.net.tunnel.TunnelEndPoint;
+import org.onosproject.incubator.net.tunnel.TunnelId;
+import org.onosproject.incubator.net.tunnel.TunnelListener;
+import org.onosproject.incubator.net.tunnel.TunnelName;
+import org.onosproject.incubator.net.tunnel.TunnelService;
+import org.onosproject.incubator.net.tunnel.TunnelSubscription;
+import org.onosproject.incubator.net.tunnel.Tunnel.Type;
+import org.onosproject.net.Annotations;
+import org.onosproject.net.DeviceId;
+import org.onosproject.net.ElementId;
+import org.onosproject.net.Path;
+import org.onosproject.pcep.controller.ClientCapability;
+import org.onosproject.pcep.controller.PccId;
+import org.onosproject.pcep.controller.PcepEventListener;
+import org.onosproject.pcep.controller.PcepLspSyncAction;
+import org.onosproject.pcep.controller.PcepPacketStats;
+import org.onosproject.pcep.controller.PcepSyncStatus;
+import org.onosproject.pcepio.exceptions.PcepOutOfBoundMessageException;
+import org.onosproject.pcepio.exceptions.PcepParseException;
+import org.onosproject.pcepio.protocol.PcepFactories;
+import org.onosproject.pcepio.protocol.PcepInitiateMsg;
+import org.onosproject.pcepio.protocol.PcepMessage;
+import org.onosproject.pcepio.protocol.PcepMessageReader;
+import org.onosproject.pcepio.protocol.PcepVersion;
+import com.google.common.collect.ImmutableSet;
+
+import static org.hamcrest.MatcherAssert.assertThat;
+import static org.hamcrest.core.Is.is;
+
+public class PcepClientControllerImplTest {
+    PcepClientControllerImpl controllerImpl = new PcepClientControllerImpl();
+    TunnelService tunnelService = new MockTunnelService();
+    private PcepEventListener listener;
+    private Channel channel;
+
+    @Before
+    public void startUp() {
+        controllerImpl.tunnelService = tunnelService;
+        listener = new PcepEventListenerAdapter();
+        controllerImpl.addEventListener(listener);
+        channel = new MockChannel();
+    }
+
+    @After
+    public void tearDown() {
+        controllerImpl.removeEventListener(listener);
+        listener = null;
+        controllerImpl.tunnelService = null;
+    }
+
+    @Test
+    public void tunnelProviderAddedTest1() throws PcepParseException, PcepOutOfBoundMessageException {
+        PccId pccId = PccId.pccId(IpAddress.valueOf("1.1.1.1"));
+
+        byte[] reportMsg = new byte[] {0x20, 0x0a, 0x00, (byte) 0x50, 0x21, 0x10, 0x00, 0x14, 0x00, 0x00, 0x00, 0x00,
+                                        0x00, 0x00, 0x00, 0x01, // SRP object
+                                        0x00, 0x1c, 0x00, 0x04, // PATH-SETUP-TYPE TLV
+                                        0x00, 0x00, 0x00, 0x00, 0x20, 0x10, 0x00, 0x24, // LSP object
+                                        0x00, 0x00, 0x10, (byte) 0xAB,
+                                        0x00, 0x11, 0x00, 0x02, 0x54, 0x31, 0x00, 0x00, // symbolic path tlv
+                                        0x00, 0x12, 0x00, 0x10, // IPv4-LSP-IDENTIFIER-TLV
+                                        0x01, 0x01, 0x01, 0x01, 0x00, 0x01, 0x00, 0x01, 0x01, 0x01, 0x01, 0x01, 0x05,
+                                        0x05, 0x05, 0x05,
+
+                                        0x07, 0x10, 0x00, 0x14, // ERO object
+                                        0x01, 0x08, (byte) 0x01, 0x01, // ERO IPv4 sub objects
+                                        0x01, 0x01, 0x04, 0x00,
+                                        0x01, 0x08, (byte) 0x05, 0x05, 0x05, 0x05, 0x04, 0x00, };
+
+        ChannelBuffer buffer = ChannelBuffers.dynamicBuffer();
+        buffer.writeBytes(reportMsg);
+
+        PcepMessageReader<PcepMessage> reader = PcepFactories.getGenericReader();
+        PcepMessage message = reader.readFrom(buffer);
+
+        PcepClientImpl pc = new PcepClientImpl();
+        PcepPacketStats pktStats = new PcepPacketStatsImpl();
+
+        pc.init(pccId, PcepVersion.PCEP_1, pktStats);
+        pc.setChannel(channel);
+        pc.setAgent(controllerImpl.agent);
+        pc.setConnected(true);
+        pc.setCapability(new ClientCapability(true, true, true, true, true));
+
+        controllerImpl.agent.addConnectedClient(pccId, pc);
+        controllerImpl.processClientMessage(pccId, message);
+
+        pc.setLspDbSyncStatus(PcepSyncStatus.SYNCED);
+        pc.setLabelDbSyncStatus(PcepSyncStatus.IN_SYNC);
+        pc.setLabelDbSyncStatus(PcepSyncStatus.SYNCED);
+
+        List<PcepMessage> deleteMsgs = ((MockChannel) channel).msgsWritten();
+        assertThat(deleteMsgs.size(), is(1));
+
+        for (PcepMessage msg : deleteMsgs) {
+            assertThat(((PcepInitiateMsg) msg).getPcInitiatedLspRequestList().getFirst().getSrpObject().getRFlag(),
+                       is(true));
+        }
+    }
+
+    @Test
+    public void tunnelProviderAddedTest2() throws PcepParseException, PcepOutOfBoundMessageException {
+        PccId pccId = PccId.pccId(IpAddress.valueOf("1.1.1.1"));
+
+        byte[] reportMsg = new byte[] {0x20, 0x0a, 0x00, (byte) 0x50, 0x21, 0x10, 0x00, 0x14, 0x00, 0x00, 0x00, 0x00,
+                                        0x00, 0x00, 0x00, 0x01, // SRP object
+                                        0x00, 0x1c, 0x00, 0x04, // PATH-SETUP-TYPE TLV
+                                        0x00, 0x00, 0x00, 0x00, 0x20, 0x10, 0x00, 0x24, 0x00, // LSP object
+                                        0x00, 0x10, (byte) 0xAB,
+                                        0x00, 0x11, 0x00, 0x02, 0x54, 0x31, 0x00, 0x00, // symbolic path tlv
+                                        0x00, 0x12, 0x00, 0x10, // IPv4-LSP-IDENTIFIER-TLV
+                                        0x01, 0x01, 0x01, 0x01, 0x00, 0x01, 0x00, 0x01, 0x01, 0x01, 0x01, 0x01, 0x05,
+                                        0x05, 0x05, 0x05,
+
+                                        0x07, 0x10, 0x00, 0x14, // ERO object
+                                        0x01, 0x08, (byte) 0x01, 0x01, 0x01, 0x01, 0x04, 0x00, // ERO IPv4 sub objects
+                                        0x01, 0x08, (byte) 0x05, 0x05, 0x05, 0x05, 0x04, 0x00, };
+
+        ChannelBuffer buffer = ChannelBuffers.dynamicBuffer();
+        buffer.writeBytes(reportMsg);
+
+        PcepMessageReader<PcepMessage> reader = PcepFactories.getGenericReader();
+        PcepMessage message = reader.readFrom(buffer);
+
+        PcepClientImpl pc = new PcepClientImpl();
+        PcepPacketStats pktStats = new PcepPacketStatsImpl();
+
+        pc.init(pccId, PcepVersion.PCEP_1, pktStats);
+        pc.setChannel(channel);
+        pc.setAgent(controllerImpl.agent);
+        pc.setConnected(true);
+        pc.setCapability(new ClientCapability(true, true, true, true, true));
+
+        controllerImpl.agent.addConnectedClient(pccId, pc);
+        controllerImpl.processClientMessage(pccId, message);
+
+        pc.setLspDbSyncStatus(PcepSyncStatus.SYNCED);
+        pc.setLabelDbSyncStatus(PcepSyncStatus.IN_SYNC);
+        pc.setLabelDbSyncStatus(PcepSyncStatus.SYNCED);
+    }
+
+    class PcepEventListenerAdapter implements PcepEventListener {
+
+        public List<PcepMessage> handledMsg = new ArrayList<>();
+        public List<Tunnel> tunnelsToBeUpdatedToNw = new ArrayList<>();
+        public List<Tunnel> deletedFromNwTunnels = new ArrayList<>();
+
+        @Override
+        public void handleMessage(PccId pccId, PcepMessage msg) {
+            handledMsg.add(msg);
+        }
+
+        @Override
+        public void handleEndOfSyncAction(Tunnel tunnel, PcepLspSyncAction endOfSyncAction) {
+            if (endOfSyncAction == SEND_UPDATE) {
+                tunnelsToBeUpdatedToNw.add(tunnel);
+                return;
+            } else if (endOfSyncAction == UNSTABLE) {
+                deletedFromNwTunnels.add(tunnel);
+            }
+        }
+    }
+
+    class MockChannel implements Channel {
+        private List<PcepMessage> msgOnWire = new ArrayList<>();
+
+        @Override
+        public ChannelFuture write(Object o) {
+            if (o instanceof List<?>) {
+                @SuppressWarnings("unchecked")
+                List<PcepMessage> msgs = (List<PcepMessage>) o;
+                for (PcepMessage msg : msgs) {
+                    if (msg instanceof PcepInitiateMsg) {
+                        msgOnWire.add(msg);
+                    }
+                }
+            }
+            return null;
+        }
+
+        public List<PcepMessage> msgsWritten() {
+            return msgOnWire;
+        }
+
+        @Override
+        public int compareTo(Channel o) {
+            // TODO Auto-generated method stub
+            return 0;
+        }
+
+        @Override
+        public Integer getId() {
+            // TODO Auto-generated method stub
+            return null;
+        }
+
+        @Override
+        public ChannelFactory getFactory() {
+            // TODO Auto-generated method stub
+            return null;
+        }
+
+        @Override
+        public Channel getParent() {
+            // TODO Auto-generated method stub
+            return null;
+        }
+
+        @Override
+        public ChannelConfig getConfig() {
+            // TODO Auto-generated method stub
+            return null;
+        }
+
+        @Override
+        public ChannelPipeline getPipeline() {
+            // TODO Auto-generated method stub
+            return null;
+        }
+
+        @Override
+        public boolean isOpen() {
+            // TODO Auto-generated method stub
+            return false;
+        }
+
+        @Override
+        public boolean isBound() {
+            // TODO Auto-generated method stub
+            return false;
+        }
+
+        @Override
+        public boolean isConnected() {
+            // TODO Auto-generated method stub
+            return false;
+        }
+
+        @Override
+        public SocketAddress getLocalAddress() {
+            // TODO Auto-generated method stub
+            return null;
+        }
+
+        @Override
+        public SocketAddress getRemoteAddress() {
+            // TODO Auto-generated method stub
+            return null;
+        }
+
+        @Override
+        public ChannelFuture write(Object message, SocketAddress remoteAddress) {
+            // TODO Auto-generated method stub
+            return null;
+        }
+
+        @Override
+        public ChannelFuture bind(SocketAddress localAddress) {
+            // TODO Auto-generated method stub
+            return null;
+        }
+
+        @Override
+        public ChannelFuture connect(SocketAddress remoteAddress) {
+            // TODO Auto-generated method stub
+            return null;
+        }
+
+        @Override
+        public ChannelFuture disconnect() {
+            // TODO Auto-generated method stub
+            return null;
+        }
+
+        @Override
+        public ChannelFuture unbind() {
+            // TODO Auto-generated method stub
+            return null;
+        }
+
+        @Override
+        public ChannelFuture close() {
+            // TODO Auto-generated method stub
+            return null;
+        }
+
+        @Override
+        public ChannelFuture getCloseFuture() {
+            // TODO Auto-generated method stub
+            return null;
+        }
+
+        @Override
+        public int getInterestOps() {
+            // TODO Auto-generated method stub
+            return 0;
+        }
+
+        @Override
+        public boolean isReadable() {
+            // TODO Auto-generated method stub
+            return false;
+        }
+
+        @Override
+        public boolean isWritable() {
+            // TODO Auto-generated method stub
+            return false;
+        }
+
+        @Override
+        public ChannelFuture setInterestOps(int interestOps) {
+            // TODO Auto-generated method stub
+            return null;
+        }
+
+        @Override
+        public ChannelFuture setReadable(boolean readable) {
+            // TODO Auto-generated method stub
+            return null;
+        }
+
+        @Override
+        public boolean getUserDefinedWritability(int index) {
+            // TODO Auto-generated method stub
+            return false;
+        }
+
+        @Override
+        public void setUserDefinedWritability(int index, boolean isWritable) {
+            // TODO Auto-generated method stub
+
+        }
+
+        @Override
+        public Object getAttachment() {
+            // TODO Auto-generated method stub
+            return null;
+        }
+
+        @Override
+        public void setAttachment(Object attachment) {
+            // TODO Auto-generated method stub
+
+        }
+    }
+
+    class MockTunnelService implements TunnelService {
+        private HashMap<TunnelId, Tunnel> tunnelIdAsKeyStore = new HashMap<TunnelId, Tunnel>();
+        private int tunnelIdCounter = 0;
+
+        @Override
+        public TunnelId setupTunnel(ApplicationId producerId, ElementId srcElementId, Tunnel tunnel, Path path) {
+            TunnelId tunnelId = TunnelId.valueOf(String.valueOf(++tunnelIdCounter));
+            Tunnel tunnelToInsert = new DefaultTunnel(tunnel.providerId(), tunnel.src(), tunnel.dst(), tunnel.type(),
+                                                      tunnel.state(), tunnel.groupId(), tunnelId, tunnel.tunnelName(),
+                                                      path, tunnel.annotations());
+            tunnelIdAsKeyStore.put(tunnelId, tunnelToInsert);
+            return tunnelId;
+        }
+
+        @Override
+        public Tunnel queryTunnel(TunnelId tunnelId) {
+            for (TunnelId tunnelIdKey : tunnelIdAsKeyStore.keySet()) {
+                if (tunnelIdKey.equals(tunnelId)) {
+                    return tunnelIdAsKeyStore.get(tunnelId);
+                }
+            }
+            return null;
+        }
+
+        @Override
+        public Collection<Tunnel> queryTunnel(TunnelEndPoint src, TunnelEndPoint dst) {
+            Collection<Tunnel> result = new HashSet<Tunnel>();
+            Tunnel tunnel = null;
+            for (TunnelId tunnelId : tunnelIdAsKeyStore.keySet()) {
+                tunnel = tunnelIdAsKeyStore.get(tunnelId);
+
+                if ((null != tunnel) && (src.equals(tunnel.src())) && (dst.equals(tunnel.dst()))) {
+                    result.add(tunnel);
+                }
+            }
+
+            return result.size() == 0 ? Collections.emptySet() : ImmutableSet.copyOf(result);
+        }
+
+        @Override
+        public Collection<Tunnel> queryTunnel(Tunnel.Type type) {
+            Collection<Tunnel> result = new HashSet<Tunnel>();
+
+            for (TunnelId tunnelId : tunnelIdAsKeyStore.keySet()) {
+                result.add(tunnelIdAsKeyStore.get(tunnelId));
+            }
+
+            return result.size() == 0 ? Collections.emptySet() : ImmutableSet.copyOf(result);
+        }
+
+        @Override
+        public Collection<Tunnel> queryAllTunnels() {
+            Collection<Tunnel> result = new HashSet<Tunnel>();
+
+            for (TunnelId tunnelId : tunnelIdAsKeyStore.keySet()) {
+                result.add(tunnelIdAsKeyStore.get(tunnelId));
+            }
+
+            return result.size() == 0 ? Collections.emptySet() : ImmutableSet.copyOf(result);
+        }
+
+        @Override
+        public void addListener(TunnelListener listener) {
+            // TODO Auto-generated method stub
+
+        }
+
+        @Override
+        public void removeListener(TunnelListener listener) {
+            // TODO Auto-generated method stub
+
+        }
+
+        @Override
+        public Tunnel borrowTunnel(ApplicationId consumerId, TunnelId tunnelId, Annotations... annotations) {
+            // TODO Auto-generated method stub
+            return null;
+        }
+
+        @Override
+        public Collection<Tunnel> borrowTunnel(ApplicationId consumerId, TunnelName tunnelName,
+                                               Annotations... annotations) {
+            // TODO Auto-generated method stub
+            return null;
+        }
+
+        @Override
+        public Collection<Tunnel> borrowTunnel(ApplicationId consumerId, TunnelEndPoint src, TunnelEndPoint dst,
+                                               Annotations... annotations) {
+            // TODO Auto-generated method stub
+            return null;
+        }
+
+        @Override
+        public Collection<Tunnel> borrowTunnel(ApplicationId consumerId, TunnelEndPoint src, TunnelEndPoint dst,
+                                               Type type, Annotations... annotations) {
+            // TODO Auto-generated method stub
+            return null;
+        }
+
+        @Override
+        public boolean downTunnel(ApplicationId producerId, TunnelId tunnelId) {
+            // TODO Auto-generated method stub
+            return false;
+        }
+
+        @Override
+        public boolean returnTunnel(ApplicationId consumerId, TunnelId tunnelId, Annotations... annotations) {
+            // TODO Auto-generated method stub
+            return false;
+        }
+
+        @Override
+        public boolean returnTunnel(ApplicationId consumerId, TunnelName tunnelName, Annotations... annotations) {
+            // TODO Auto-generated method stub
+            return false;
+        }
+
+        @Override
+        public boolean returnTunnel(ApplicationId consumerId, TunnelEndPoint src, TunnelEndPoint dst, Type type,
+                                    Annotations... annotations) {
+            // TODO Auto-generated method stub
+            return false;
+        }
+
+        @Override
+        public boolean returnTunnel(ApplicationId consumerId, TunnelEndPoint src, TunnelEndPoint dst,
+                                    Annotations... annotations) {
+            // TODO Auto-generated method stub
+            return false;
+        }
+
+        @Override
+        public Collection<TunnelSubscription> queryTunnelSubscription(ApplicationId consumerId) {
+            // TODO Auto-generated method stub
+            return null;
+        }
+
+        @Override
+        public int tunnelCount() {
+            // TODO Auto-generated method stub
+            return 0;
+        }
+
+        @Override
+        public Iterable<Tunnel> getTunnels(DeviceId deviceId) {
+            // TODO Auto-generated method stub
+            return null;
+        }
+    }
+}
\ No newline at end of file
diff --git a/protocols/pcep/pcepio/src/main/java/org/onosproject/pcepio/types/NexthopIPv4addressTlv.java b/protocols/pcep/pcepio/src/main/java/org/onosproject/pcepio/types/NexthopIPv4addressTlv.java
index ba5dd1a..1f7bebb 100644
--- a/protocols/pcep/pcepio/src/main/java/org/onosproject/pcepio/types/NexthopIPv4addressTlv.java
+++ b/protocols/pcep/pcepio/src/main/java/org/onosproject/pcepio/types/NexthopIPv4addressTlv.java
@@ -36,7 +36,7 @@
         0                   1                   2                     3
         0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1
        +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
-       | Type=TBD                      | Length = 8                    |
+       | Type=TBD                      |          Length = 4           |
        +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
        |                     nexthop IPv4 address                      |
        +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
@@ -46,7 +46,7 @@
      */
     protected static final Logger log = LoggerFactory.getLogger(NexthopIPv4addressTlv.class);
 
-    public static final short TYPE = 2; //to be defined
+    public static final short TYPE = (short) 65289; //to be defined
     //Length is header + value
     public static final short LENGTH = 8;
     public static final short VALUE_LENGTH = 4;
@@ -93,7 +93,7 @@
 
     @Override
     public short getLength() {
-        return LENGTH;
+        return VALUE_LENGTH;
     }
 
     @Override
@@ -117,7 +117,7 @@
     public int write(ChannelBuffer c) {
         int iStartIndex = c.writerIndex();
         c.writeShort(TYPE);
-        c.writeShort(LENGTH);
+        c.writeShort(VALUE_LENGTH);
         c.writeInt(rawValue);
         return c.writerIndex() - iStartIndex;
     }
@@ -136,7 +136,7 @@
     public String toString() {
         return MoreObjects.toStringHelper(getClass())
                 .add("Type", TYPE)
-                .add("Length", LENGTH)
+                .add("Length", VALUE_LENGTH)
                 .add("Ipv4Address ", rawValue)
                 .toString();
     }
diff --git a/providers/bgpcep/flow/src/main/java/org/onosproject/provider/bgpcep/flow/impl/BgpcepFlowRuleProvider.java b/providers/bgpcep/flow/src/main/java/org/onosproject/provider/bgpcep/flow/impl/BgpcepFlowRuleProvider.java
index 6f0f10a..4369f48 100644
--- a/providers/bgpcep/flow/src/main/java/org/onosproject/provider/bgpcep/flow/impl/BgpcepFlowRuleProvider.java
+++ b/providers/bgpcep/flow/src/main/java/org/onosproject/provider/bgpcep/flow/impl/BgpcepFlowRuleProvider.java
@@ -82,15 +82,21 @@
 import org.onosproject.pcepio.protocol.PcepUpdateRequest;
 import org.onosproject.pcepio.types.IPv4SubObject;
 import org.onosproject.pcepio.types.NexthopIPv4addressTlv;
+import org.onosproject.pcepio.types.PathSetupTypeTlv;
 import org.onosproject.pcepio.types.PcepLabelDownload;
 import org.onosproject.pcepio.types.PcepLabelMap;
 import org.onosproject.pcepio.types.PcepValueType;
 import org.onosproject.pcepio.types.StatefulIPv4LspIdentifiersTlv;
+import org.onosproject.pcepio.types.SymbolicPathNameTlv;
+import org.onosproject.pcep.controller.LspType;
 import org.onosproject.pcep.controller.SrpIdGenerators;
 import org.onosproject.pcep.controller.PcepAnnotationKeys;
 import org.osgi.service.component.ComponentContext;
 import org.slf4j.Logger;
 
+import static org.onosproject.pcep.controller.PcepAnnotationKeys.DELEGATE;
+import static org.onosproject.pcep.controller.PcepAnnotationKeys.LSP_SIG_TYPE;
+import static org.onosproject.pcep.controller.PcepAnnotationKeys.PCE_INIT;
 import static org.onosproject.pcep.controller.PcepSyncStatus.IN_SYNC;
 import static org.onosproject.pcep.controller.PcepSyncStatus.SYNCED;
 import static org.onosproject.net.flow.criteria.Criterion.Type.EXTENSION;
@@ -447,20 +453,34 @@
 
         srpObj = getSrpObject(pc, type, false);
 
-        String lspId = tunnel.annotations().value(PcepAnnotationKeys.PLSP_ID);
-        String plspId = tunnel.annotations().value(PcepAnnotationKeys.LOCAL_LSP_ID);
+        String lspId = tunnel.annotations().value(PcepAnnotationKeys.LOCAL_LSP_ID);
+        String plspId = tunnel.annotations().value(PcepAnnotationKeys.PLSP_ID);
         String tunnelIdentifier = tunnel.annotations().value(PcepAnnotationKeys.PCC_TUNNEL_ID);
 
         LinkedList<PcepValueType> tlvs = new LinkedList<>();
         StatefulIPv4LspIdentifiersTlv lspIdTlv = new StatefulIPv4LspIdentifiersTlv(((IpTunnelEndPoint) tunnel.src())
-                .ip().getIp4Address().toInt(), Short.valueOf(lspId), Short.valueOf(tunnelIdentifier), 0,
+                .ip().getIp4Address().toInt(), Short.valueOf(lspId), Short.valueOf(tunnelIdentifier),
+                ((IpTunnelEndPoint) tunnel.src()).ip().getIp4Address().toInt(),
                 ((IpTunnelEndPoint) tunnel.dst()).ip().getIp4Address().toInt());
         tlvs.add(lspIdTlv);
 
+        if (tunnel.tunnelName().value() != null) {
+            SymbolicPathNameTlv pathNameTlv = new SymbolicPathNameTlv(tunnel.tunnelName().value().getBytes());
+            tlvs.add(pathNameTlv);
+        }
+
+        boolean delegated = (tunnel.annotations().value(DELEGATE) == null) ? false
+                                                                           : Boolean.valueOf(tunnel.annotations()
+                                                                                   .value(DELEGATE));
+        boolean initiated = (tunnel.annotations().value(PCE_INIT) == null) ? false
+                                                                           : Boolean.valueOf(tunnel.annotations()
+                                                                                   .value(PCE_INIT));
+
         lspObj = pc.factory().buildLspObject()
                 .setRFlag(false)
                 .setAFlag(true)
-                .setDFlag(true)
+                .setDFlag(delegated)
+                .setCFlag(initiated)
                 .setPlspId(Integer.valueOf(plspId))
                 .setOptionalTlv(tlvs)
                 .build();
@@ -495,9 +515,15 @@
             return;
         }
 
+        // set PathSetupTypeTlv of SRP object
+        LinkedList<PcepValueType> llOptionalTlv = new LinkedList<PcepValueType>();
+        LspType lspSigType = LspType.valueOf(tunnel.annotations().value(LSP_SIG_TYPE));
+        llOptionalTlv.add(new PathSetupTypeTlv(lspSigType.type()));
+
         PcepSrpObject srpObj = pc.factory().buildSrpObject()
                                .setRFlag(false)
                                .setSrpID(SrpIdGenerators.create())
+                               .setOptionalTlv(llOptionalTlv)
                                .build();
 
         PcepEroObject eroObj = pc.factory().buildEroObject()
diff --git a/providers/pcep/tunnel/src/main/java/org/onosproject/provider/pcep/tunnel/impl/PcepTunnelProvider.java b/providers/pcep/tunnel/src/main/java/org/onosproject/provider/pcep/tunnel/impl/PcepTunnelProvider.java
index d9eedb4..83fd55c 100644
--- a/providers/pcep/tunnel/src/main/java/org/onosproject/provider/pcep/tunnel/impl/PcepTunnelProvider.java
+++ b/providers/pcep/tunnel/src/main/java/org/onosproject/provider/pcep/tunnel/impl/PcepTunnelProvider.java
@@ -78,6 +78,7 @@
 import org.onosproject.pcep.api.PcepTunnelListener;
 import org.onosproject.pcep.api.PcepTunnelStatistics;
 import org.onosproject.pcep.controller.LspKey;
+import org.onosproject.pcep.controller.LspType;
 import org.onosproject.pcep.controller.PccId;
 import org.onosproject.pcep.controller.PcepClient;
 import org.onosproject.pcep.controller.PcepClientController;
@@ -140,8 +141,9 @@
 import static org.onosproject.net.DeviceId.deviceId;
 import static org.onosproject.net.PortNumber.portNumber;
 import static org.onosproject.pcep.api.PcepDpid.uri;
-import static org.onosproject.provider.pcep.tunnel.impl.LspType.WITH_SIGNALLING;
-import static org.onosproject.provider.pcep.tunnel.impl.LspType.SR_WITHOUT_SIGNALLING;
+import static org.onosproject.pcep.controller.LspType.WITH_SIGNALLING;
+import static org.onosproject.pcep.controller.LspType.SR_WITHOUT_SIGNALLING;
+import static org.onosproject.pcep.controller.LspType.WITHOUT_SIGNALLING_AND_WITHOUT_SR;
 import static org.onosproject.pcep.controller.PcepAnnotationKeys.BANDWIDTH;
 import static org.onosproject.pcep.controller.PcepAnnotationKeys.LOCAL_LSP_ID;
 import static org.onosproject.pcep.controller.PcepAnnotationKeys.LSP_SIG_TYPE;
@@ -157,7 +159,6 @@
 import static org.onosproject.incubator.net.tunnel.Tunnel.State.UNSTABLE;
 import static org.onosproject.pcep.controller.PcepLspSyncAction.REMOVE;
 import static org.onosproject.pcep.controller.PcepLspSyncAction.SEND_UPDATE;
-import static org.onosproject.pcep.controller.PcepLspSyncAction.SEND_DELETE;
 import static org.onosproject.pcepio.protocol.ver1.PcepMetricObjectVer1.IGP_METRIC;
 import static org.onosproject.pcepio.protocol.ver1.PcepMetricObjectVer1.TE_METRIC;
 import static org.slf4j.LoggerFactory.getLogger;
@@ -311,7 +312,10 @@
 
         //TODO: tunnel which is passed doesn't have tunnelID
         if (tunnel.annotations().value(PLSP_ID) != null) {
-            updateTunnel(tunnel, path);
+            if (LspType.valueOf(tunnel.annotations().value(LSP_SIG_TYPE)) != WITHOUT_SIGNALLING_AND_WITHOUT_SR) {
+                // For CR LSPs, BGP flow provider will send update message after pushing labels.
+                updateTunnel(tunnel, path);
+            }
             return;
         }
 
@@ -1219,8 +1223,9 @@
 
                 tlv = new StatefulIPv4LspIdentifiersTlv((((IpTunnelEndPoint) tunnel.src())
                         .ip().getIp4Address().toInt()),
-                        localLspId, pccTunnelId, 0, (((IpTunnelEndPoint) tunnel.dst()).ip()
-                        .getIp4Address().toInt()));
+                        localLspId, pccTunnelId,
+                        ((IpTunnelEndPoint) tunnel.src()).ip().getIp4Address().toInt(),
+                        (((IpTunnelEndPoint) tunnel.dst()).ip().getIp4Address().toInt()));
                 llOptionalTlv.add(tlv);
             }
 
@@ -1229,9 +1234,18 @@
                 llOptionalTlv.add(tlv);
             }
 
+            boolean delegated = (tunnel.annotations().value(DELEGATE) == null) ? false
+                                                                               : Boolean.valueOf(tunnel.annotations()
+                                                                                       .value(DELEGATE));
+            boolean initiated = (tunnel.annotations().value(PCE_INIT) == null) ? false
+                                                                               : Boolean.valueOf(tunnel.annotations()
+                                                                                       .value(PCE_INIT));
+
             // build lsp object
             PcepLspObject lspobj = pc.factory().buildLspObject().setAFlag(true)
                     .setPlspId(Integer.valueOf(tunnel.annotations().value(PLSP_ID)))
+                    .setDFlag(delegated)
+                    .setCFlag(initiated)
                     .setOptionalTlv(llOptionalTlv).build();
             // build ero object
             PcepEroObject eroobj = pc.factory().buildEroObject().setSubObjects(llSubObjects).build();
@@ -1818,36 +1832,6 @@
                 tunnelRemoved(td);
             }
         }
-
-        @Override
-        public void handleEndOfSyncAction(PccId pccId, PcepMessage msg, PcepLspSyncAction endOfSyncAction) {
-            try {
-                if ((msg instanceof PcepInitiateMsg) && (endOfSyncAction == SEND_DELETE)) {
-                    PcepClient pc = pcepClientController.getClient(pccId);
-                    LinkedList<PcInitiatedLspRequest> llPcInitiatedLspRequestList = ((PcepInitiateMsg) msg)
-                            .getPcInitiatedLspRequestList();
-                    PcInitiatedLspRequest pcInitMsg = llPcInitiatedLspRequestList.iterator().next();
-
-                    if (pcInitMsg != null) {
-                        PcepSrpObject srpobj = pc.factory().buildSrpObject().setSrpID(SrpIdGenerators.create())
-                                .setRFlag(true).build();
-
-                        PcInitiatedLspRequest releaseLspRequest = pc.factory().buildPcInitiatedLspRequest()
-                                .setLspObject(pcInitMsg.getLspObject()).setSrpObject(srpobj).build();
-
-                        llPcInitiatedLspRequestList.remove(pcInitMsg);
-                        llPcInitiatedLspRequestList.add(releaseLspRequest);
-
-                        PcepInitiateMsg pcInitiateMsg = pc.factory().buildPcepInitiateMsg()
-                                .setPcInitiatedLspRequestList(llPcInitiatedLspRequestList).build();
-
-                        pc.sendMessage(Collections.singletonList(pcInitiateMsg));
-                    }
-                }
-            } catch (PcepParseException e) {
-                log.error("Exception occured while sending initiate delete message {}", e.getMessage());
-            }
-        }
     }
     @Override
     public Tunnel tunnelQueryById(TunnelId tunnelId) {
diff --git a/providers/pcep/tunnel/src/test/java/org/onosproject/provider/pcep/tunnel/impl/PcepReleaseTunnelProviderTest.java b/providers/pcep/tunnel/src/test/java/org/onosproject/provider/pcep/tunnel/impl/PcepReleaseTunnelProviderTest.java
index e8ed50a..ef96601 100644
--- a/providers/pcep/tunnel/src/test/java/org/onosproject/provider/pcep/tunnel/impl/PcepReleaseTunnelProviderTest.java
+++ b/providers/pcep/tunnel/src/test/java/org/onosproject/provider/pcep/tunnel/impl/PcepReleaseTunnelProviderTest.java
@@ -20,9 +20,9 @@
 import static org.hamcrest.core.Is.is;
 import static org.hamcrest.core.IsNot.not;
 import static org.onosproject.net.DefaultAnnotations.EMPTY;
-import static org.onosproject.provider.pcep.tunnel.impl.LspType.WITH_SIGNALLING;
-import static org.onosproject.provider.pcep.tunnel.impl.LspType.SR_WITHOUT_SIGNALLING;
-import static org.onosproject.provider.pcep.tunnel.impl.LspType.WITHOUT_SIGNALLING_AND_WITHOUT_SR;
+import static org.onosproject.pcep.controller.LspType.WITH_SIGNALLING;
+import static org.onosproject.pcep.controller.LspType.SR_WITHOUT_SIGNALLING;
+import static org.onosproject.pcep.controller.LspType.WITHOUT_SIGNALLING_AND_WITHOUT_SR;
 import static org.onosproject.pcep.controller.PcepAnnotationKeys.LSP_SIG_TYPE;
 
 import java.io.IOException;
diff --git a/providers/pcep/tunnel/src/test/java/org/onosproject/provider/pcep/tunnel/impl/PcepSetupTunnelProviderTest.java b/providers/pcep/tunnel/src/test/java/org/onosproject/provider/pcep/tunnel/impl/PcepSetupTunnelProviderTest.java
index 018f50c..b26a39f 100644
--- a/providers/pcep/tunnel/src/test/java/org/onosproject/provider/pcep/tunnel/impl/PcepSetupTunnelProviderTest.java
+++ b/providers/pcep/tunnel/src/test/java/org/onosproject/provider/pcep/tunnel/impl/PcepSetupTunnelProviderTest.java
@@ -20,9 +20,9 @@
 import static org.hamcrest.core.Is.is;
 import static org.hamcrest.core.IsNot.not;
 import static org.hamcrest.Matchers.nullValue;
-import static org.onosproject.provider.pcep.tunnel.impl.LspType.WITH_SIGNALLING;
-import static org.onosproject.provider.pcep.tunnel.impl.LspType.SR_WITHOUT_SIGNALLING;
-import static org.onosproject.provider.pcep.tunnel.impl.LspType.WITHOUT_SIGNALLING_AND_WITHOUT_SR;
+import static org.onosproject.pcep.controller.LspType.WITH_SIGNALLING;
+import static org.onosproject.pcep.controller.LspType.SR_WITHOUT_SIGNALLING;
+import static org.onosproject.pcep.controller.LspType.WITHOUT_SIGNALLING_AND_WITHOUT_SR;
 import static org.onosproject.pcep.controller.PcepAnnotationKeys.LSP_SIG_TYPE;
 
 import java.io.IOException;
diff --git a/providers/pcep/tunnel/src/test/java/org/onosproject/provider/pcep/tunnel/impl/PcepTunnelAddedTest.java b/providers/pcep/tunnel/src/test/java/org/onosproject/provider/pcep/tunnel/impl/PcepTunnelAddedTest.java
index 537d888..d96e83b 100644
--- a/providers/pcep/tunnel/src/test/java/org/onosproject/provider/pcep/tunnel/impl/PcepTunnelAddedTest.java
+++ b/providers/pcep/tunnel/src/test/java/org/onosproject/provider/pcep/tunnel/impl/PcepTunnelAddedTest.java
@@ -25,7 +25,7 @@
 import static org.onosproject.pcep.controller.PcepAnnotationKeys.PCC_TUNNEL_ID;
 import static org.onosproject.pcep.controller.PcepAnnotationKeys.PLSP_ID;
 import static org.onosproject.pcep.controller.PcepAnnotationKeys.DELEGATE;
-import static org.onosproject.provider.pcep.tunnel.impl.LspType.WITHOUT_SIGNALLING_AND_WITHOUT_SR;
+import static org.onosproject.pcep.controller.LspType.WITHOUT_SIGNALLING_AND_WITHOUT_SR;
 import static org.onosproject.pcep.controller.PcepSyncStatus.SYNCED;
 import static org.onosproject.net.Device.Type.ROUTER;
 import static org.onosproject.net.MastershipRole.MASTER;
diff --git a/providers/pcep/tunnel/src/test/java/org/onosproject/provider/pcep/tunnel/impl/PcepTunnelProviderTest.java b/providers/pcep/tunnel/src/test/java/org/onosproject/provider/pcep/tunnel/impl/PcepTunnelProviderTest.java
index 0e7fc99..7c606cb 100644
--- a/providers/pcep/tunnel/src/test/java/org/onosproject/provider/pcep/tunnel/impl/PcepTunnelProviderTest.java
+++ b/providers/pcep/tunnel/src/test/java/org/onosproject/provider/pcep/tunnel/impl/PcepTunnelProviderTest.java
@@ -19,7 +19,7 @@
 import static org.hamcrest.Matchers.nullValue;
 import static org.hamcrest.core.IsNot.not;
 import static org.onosproject.net.DefaultAnnotations.EMPTY;
-import static org.onosproject.provider.pcep.tunnel.impl.LspType.WITH_SIGNALLING;
+import static org.onosproject.pcep.controller.LspType.WITH_SIGNALLING;
 import static org.onosproject.pcep.controller.PcepAnnotationKeys.LSP_SIG_TYPE;
 
 import java.io.IOException;
diff --git a/providers/pcep/tunnel/src/test/java/org/onosproject/provider/pcep/tunnel/impl/PcepUpdateTunnelProviderTest.java b/providers/pcep/tunnel/src/test/java/org/onosproject/provider/pcep/tunnel/impl/PcepUpdateTunnelProviderTest.java
index 2b85fdf..1e6a919 100644
--- a/providers/pcep/tunnel/src/test/java/org/onosproject/provider/pcep/tunnel/impl/PcepUpdateTunnelProviderTest.java
+++ b/providers/pcep/tunnel/src/test/java/org/onosproject/provider/pcep/tunnel/impl/PcepUpdateTunnelProviderTest.java
@@ -55,9 +55,9 @@
 import org.onosproject.pcepio.protocol.PcepVersion;
 import org.onosproject.pcepio.types.StatefulIPv4LspIdentifiersTlv;
 
-import static org.onosproject.provider.pcep.tunnel.impl.LspType.WITH_SIGNALLING;
-import static org.onosproject.provider.pcep.tunnel.impl.LspType.SR_WITHOUT_SIGNALLING;
-import static org.onosproject.provider.pcep.tunnel.impl.LspType.WITHOUT_SIGNALLING_AND_WITHOUT_SR;
+import static org.onosproject.pcep.controller.LspType.WITH_SIGNALLING;
+import static org.onosproject.pcep.controller.LspType.SR_WITHOUT_SIGNALLING;
+import static org.onosproject.pcep.controller.LspType.WITHOUT_SIGNALLING_AND_WITHOUT_SR;
 /**
  * Test for PCEP update tunnel.
  */