ONOS-6050 - [PCEP]LspIdentifiers TLV is not been encoded in PCUpd message for PCInit rsvp mode

Change-Id: Id0d19e9e60ebd079cadcffb3d16b0131cd18203b
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 caa317d..a6d2763 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
@@ -1196,28 +1196,27 @@
 
             llOptionalTlv = new LinkedList<PcepValueType>();
 
-            if (lspSigType != WITH_SIGNALLING) {
-                String localLspIdString = tunnel.annotations().value(LOCAL_LSP_ID);
-                String pccTunnelIdString = tunnel.annotations().value(PCC_TUNNEL_ID);
-                short localLspId = 0;
-                short pccTunnelId = 0;
+            // Lsp Identifier tlv is required for all modes of lsp
+            String localLspIdString = tunnel.annotations().value(LOCAL_LSP_ID);
+            String pccTunnelIdString = tunnel.annotations().value(PCC_TUNNEL_ID);
+            short localLspId = 0;
+            short pccTunnelId = 0;
 
-                if (localLspIdString != null) {
-                    localLspId = Short.valueOf(localLspIdString);
-                }
-
-                if (pccTunnelIdString != null) {
-                    pccTunnelId = Short.valueOf(pccTunnelIdString);
-                }
-
-                tlv = new StatefulIPv4LspIdentifiersTlv((((IpTunnelEndPoint) tunnel.src())
-                        .ip().getIp4Address().toInt()),
-                        localLspId, pccTunnelId,
-                        ((IpTunnelEndPoint) tunnel.src()).ip().getIp4Address().toInt(),
-                        (((IpTunnelEndPoint) tunnel.dst()).ip().getIp4Address().toInt()));
-                llOptionalTlv.add(tlv);
+            if (localLspIdString != null) {
+                localLspId = Short.valueOf(localLspIdString);
             }
 
+            if (pccTunnelIdString != null) {
+                pccTunnelId = Short.valueOf(pccTunnelIdString);
+            }
+
+            tlv = new StatefulIPv4LspIdentifiersTlv((((IpTunnelEndPoint) tunnel.src())
+                    .ip().getIp4Address().toInt()),
+                    localLspId, pccTunnelId,
+                    ((IpTunnelEndPoint) tunnel.src()).ip().getIp4Address().toInt(),
+                    (((IpTunnelEndPoint) tunnel.dst()).ip().getIp4Address().toInt()));
+            llOptionalTlv.add(tlv);
+
             if (tunnel.tunnelName().value() != null) {
                 tlv = new SymbolicPathNameTlv(tunnel.tunnelName().value().getBytes());
                 llOptionalTlv.add(tlv);
@@ -1419,8 +1418,15 @@
 
             // SR-TE also needs PCUpd msg after receiving PCRpt with status GOING-UP even
             // though there are no labels to download for SR-TE.
-            if ((pcepLspStatus == PcepLspStatus.GOING_UP)
-                    && (LspType.valueOf(tunnel.annotations().value(LSP_SIG_TYPE)) == SR_WITHOUT_SIGNALLING)) {
+            if (((pcepLspStatus == PcepLspStatus.GOING_UP)
+                    && (LspType.valueOf(tunnel.annotations().value(LSP_SIG_TYPE)) == SR_WITHOUT_SIGNALLING))
+                // For PCInit tunnel up, few PCC expects PCUpd message after PCInit message,
+                || ((tunnel.state() == State.INIT)
+                    && (pcepLspStatus == PcepLspStatus.DOWN)
+                    && (tunnel.annotations().value(PCE_INIT) != null
+                        && tunnel.annotations().value(PCE_INIT).equals("true"))
+                    && (LspType.valueOf(tunnel.annotations().value(LSP_SIG_TYPE)) == WITH_SIGNALLING))) {
+
                 // Query again to get latest tunnel updated with protocol values from PCRpt msg.
                 updateTunnel(service.tunnelQueryById(tunnel.tunnelId()), tunnel.path());
             }