reconstruct post body in NB
Change-Id: I6653df3bb7eb56906f2fe2590d7e36054109a4a1
diff --git a/apps/tenbi/tunnel/src/main/java/org/onosproject/tenbi/tunnel/TeTunnelNbiManager.java b/apps/tenbi/tunnel/src/main/java/org/onosproject/tenbi/tunnel/TeTunnelNbiManager.java
index 8814a1b..9f420b1 100644
--- a/apps/tenbi/tunnel/src/main/java/org/onosproject/tenbi/tunnel/TeTunnelNbiManager.java
+++ b/apps/tenbi/tunnel/src/main/java/org/onosproject/tenbi/tunnel/TeTunnelNbiManager.java
@@ -93,7 +93,7 @@
List<Tunnel> tunnels = new ArrayList<>();
Collection<TeTunnel> teTunnels = tunnelService.getTeTunnels();
teTunnels.forEach(teTunnel -> {
- Tunnel tunnel = te2YangTunnelConverter(teTunnel);
+ Tunnel tunnel = te2YangTunnelConverter(teTunnel, false);
tunnels.add(tunnel);
});
IetfTe newIetfTe = buildIetfTeWithTunnels(tunnels);
diff --git a/apps/tenbi/utils/src/main/java/org/onosproject/teyang/utils/tunnel/TunnelConverter.java b/apps/tenbi/utils/src/main/java/org/onosproject/teyang/utils/tunnel/TunnelConverter.java
index e82ee64..733a249 100644
--- a/apps/tenbi/utils/src/main/java/org/onosproject/teyang/utils/tunnel/TunnelConverter.java
+++ b/apps/tenbi/utils/src/main/java/org/onosproject/teyang/utils/tunnel/TunnelConverter.java
@@ -32,37 +32,27 @@
import org.onosproject.yang.gen.v1.urn.ietf.params.xml.ns.yang.ietf.te.rev20160705.ietfte.DefaultTe;
import org.onosproject.yang.gen.v1.urn.ietf.params.xml.ns.yang.ietf.te.rev20160705.ietfte.Te;
import org.onosproject.yang.gen.v1.urn.ietf.params.xml.ns.yang.ietf.te.rev20160705.ietfte.pathparamsconfig.Type;
-import org.onosproject.yang.gen.v1.urn.ietf.params.xml.ns.yang.ietf.te.rev20160705.ietfte.pathparamsconfig.type
- .DefaultDynamic;
-import org.onosproject.yang.gen.v1.urn.ietf.params.xml.ns.yang.ietf.te.rev20160705.ietfte.pathparamsconfig.type
- .DefaultExplicit;
-import org.onosproject.yang.gen.v1.urn.ietf.params.xml.ns.yang.ietf.te.rev20160705.ietfte.pathparamsconfig.type
- .explicit.DefaultExplicitRouteObjects;
-import org.onosproject.yang.gen.v1.urn.ietf.params.xml.ns.yang.ietf.te.rev20160705.ietfte.pathparamsconfig.type
- .explicit.ExplicitRouteObjects;
+import org.onosproject.yang.gen.v1.urn.ietf.params.xml.ns.yang.ietf.te.rev20160705.ietfte.pathparamsconfig.type.DefaultDynamic;
+import org.onosproject.yang.gen.v1.urn.ietf.params.xml.ns.yang.ietf.te.rev20160705.ietfte.pathparamsconfig.type.DefaultExplicit;
+import org.onosproject.yang.gen.v1.urn.ietf.params.xml.ns.yang.ietf.te.rev20160705.ietfte.pathparamsconfig.type.explicit.DefaultExplicitRouteObjects;
+import org.onosproject.yang.gen.v1.urn.ietf.params.xml.ns.yang.ietf.te.rev20160705.ietfte.pathparamsconfig.type.explicit.ExplicitRouteObjects;
import org.onosproject.yang.gen.v1.urn.ietf.params.xml.ns.yang.ietf.te.rev20160705.ietfte.tunnelproperties.Config;
-import org.onosproject.yang.gen.v1.urn.ietf.params.xml.ns.yang.ietf.te.rev20160705.ietfte.tunnelproperties
- .DefaultPrimaryPaths;
+import org.onosproject.yang.gen.v1.urn.ietf.params.xml.ns.yang.ietf.te.rev20160705.ietfte.tunnelproperties.DefaultPrimaryPaths;
import org.onosproject.yang.gen.v1.urn.ietf.params.xml.ns.yang.ietf.te.rev20160705.ietfte.tunnelproperties.DefaultState;
import org.onosproject.yang.gen.v1.urn.ietf.params.xml.ns.yang.ietf.te.rev20160705.ietfte.tunnelproperties.PrimaryPaths;
import org.onosproject.yang.gen.v1.urn.ietf.params.xml.ns.yang.ietf.te.rev20160705.ietfte.tunnelproperties.State;
-import org.onosproject.yang.gen.v1.urn.ietf.params.xml.ns.yang.ietf.te.rev20160705.ietfte.tunnelsgrouping
- .DefaultTunnels;
+import org.onosproject.yang.gen.v1.urn.ietf.params.xml.ns.yang.ietf.te.rev20160705.ietfte.tunnelsgrouping.DefaultTunnels;
import org.onosproject.yang.gen.v1.urn.ietf.params.xml.ns.yang.ietf.te.rev20160705.ietfte.tunnelsgrouping.Tunnels;
-import org.onosproject.yang.gen.v1.urn.ietf.params.xml.ns.yang.ietf.te.rev20160705.ietfte.tunnelsgrouping.tunnels
- .DefaultTunnel;
-import org.onosproject.yang.gen.v1.urn.ietf.params.xml.ns.yang.ietf.te.rev20160705.ietfte.tunnelsgrouping.tunnels
- .Tunnel;
+import org.onosproject.yang.gen.v1.urn.ietf.params.xml.ns.yang.ietf.te.rev20160705.ietfte.tunnelsgrouping.tunnels.DefaultTunnel;
+import org.onosproject.yang.gen.v1.urn.ietf.params.xml.ns.yang.ietf.te.rev20160705.ietfte.tunnelsgrouping.tunnels.Tunnel;
import org.onosproject.yang.gen.v1.urn.ietf.params.xml.ns.yang.ietf.te.types.rev20160705.ietftetypes.LspProt1Forn;
import org.onosproject.yang.gen.v1.urn.ietf.params.xml.ns.yang.ietf.te.types.rev20160705.ietftetypes.LspProtBidir1To1;
import org.onosproject.yang.gen.v1.urn.ietf.params.xml.ns.yang.ietf.te.types.rev20160705.ietftetypes.LspProtReroute;
-import org.onosproject.yang.gen.v1.urn.ietf.params.xml.ns.yang.ietf.te.types.rev20160705.ietftetypes
- .LspProtRerouteExtra;
+import org.onosproject.yang.gen.v1.urn.ietf.params.xml.ns.yang.ietf.te.types.rev20160705.ietftetypes.LspProtRerouteExtra;
import org.onosproject.yang.gen.v1.urn.ietf.params.xml.ns.yang.ietf.te.types.rev20160705.ietftetypes.LspProtType;
import org.onosproject.yang.gen.v1.urn.ietf.params.xml.ns.yang.ietf.te.types.rev20160705.ietftetypes.LspProtUnidir1To1;
import org.onosproject.yang.gen.v1.urn.ietf.params.xml.ns.yang.ietf.te.types.rev20160705.ietftetypes.LspProtUnprotected;
-import org.onosproject.yang.gen.v1.urn.ietf.params.xml.ns.yang.ietf.te.types.rev20160705.ietftetypes
- .PathSignalingRsvpte;
+import org.onosproject.yang.gen.v1.urn.ietf.params.xml.ns.yang.ietf.te.types.rev20160705.ietftetypes.PathSignalingRsvpte;
import org.onosproject.yang.gen.v1.urn.ietf.params.xml.ns.yang.ietf.te.types.rev20160705.ietftetypes.PathSignalingSr;
import org.onosproject.yang.gen.v1.urn.ietf.params.xml.ns.yang.ietf.te.types.rev20160705.ietftetypes.RouteIncludeEro;
import org.onosproject.yang.gen.v1.urn.ietf.params.xml.ns.yang.ietf.te.types.rev20160705.ietftetypes.StateDown;
@@ -70,15 +60,15 @@
import org.onosproject.yang.gen.v1.urn.ietf.params.xml.ns.yang.ietf.te.types.rev20160705.ietftetypes.TunnelP2Mp;
import org.onosproject.yang.gen.v1.urn.ietf.params.xml.ns.yang.ietf.te.types.rev20160705.ietftetypes.TunnelP2p;
import org.onosproject.yang.gen.v1.urn.ietf.params.xml.ns.yang.ietf.te.types.rev20160705.ietftetypes.TunnelType;
-import org.onosproject.yang.gen.v1.urn.ietf.params.xml.ns.yang.ietf.te.types.rev20160705.ietftetypes
- .explicitroutesubobject.type.DefaultUnnumberedLink;
-import org.onosproject.yang.gen.v1.urn.ietf.params.xml.ns.yang.ietf.te.types.rev20160705.ietftetypes
- .explicitroutesubobject.type.UnnumberedLink;
+import org.onosproject.yang.gen.v1.urn.ietf.params.xml.ns.yang.ietf.te.types.rev20160705.ietftetypes.explicitroutesubobject.type.DefaultUnnumberedLink;
+import org.onosproject.yang.gen.v1.urn.ietf.params.xml.ns.yang.ietf.te.types.rev20160705.ietftetypes.explicitroutesubobject.type.UnnumberedLink;
import org.slf4j.Logger;
import java.util.ArrayList;
import java.util.List;
+import static com.google.common.base.Strings.isNullOrEmpty;
+import static org.onlab.packet.ONOSLLDP.DEFAULT_NAME;
import static org.onosproject.tetunnel.api.tunnel.TeTunnel.LspProtectionType;
import static org.onosproject.tetunnel.api.tunnel.path.TeRouteSubobject.Type.UNNUMBERED_LINK;
import static org.onosproject.teyang.utils.tunnel.BasicConverter.bytesToLong;
@@ -128,8 +118,8 @@
.build();
}
- public static IetfTe buildIetfTe(TeTunnel teTunnel) {
- Tunnel tunnel = te2YangTunnelConverter(teTunnel);
+ public static IetfTe buildIetfTe(TeTunnel teTunnel, boolean isConfig) {
+ Tunnel tunnel = te2YangTunnelConverter(teTunnel, isConfig);
return buildIetfTeWithTunnels(Lists.newArrayList(tunnel));
}
@@ -138,28 +128,38 @@
* defined in YANG model.
*
* @param tunnel te tunnel defined in APP
+ * @param isConfig true if tunnel is to be built with config attributes;
+ * false if built with state attributes
* @return tunnel defined in YANG model
*/
- public static Tunnel te2YangTunnelConverter(TeTunnel tunnel) {
+ public static Tunnel te2YangTunnelConverter(TeTunnel tunnel, boolean isConfig) {
List<PrimaryPaths> pathsList = new ArrayList<>();
- //TODO add path info after yang tool change to guava from google-collect
+
+ if (tunnel.primaryPaths() != null) {
+ tunnel.primaryPaths()
+ .forEach(tePath -> pathsList.add(te2YangPrimaryPath(tePath)));
+ }
+
tunnel.primaryPaths()
.forEach(tePath -> pathsList.add(te2YangPrimaryPath(tePath)));
Tunnel.TunnelBuilder builder = new DefaultTunnel
.TunnelBuilder()
.type(te2YangTunnelType(tunnel.type()))
- .name(tunnel.name())
+ .name(validName(tunnel.name()))
.identifier(tunnel.teTunnelKey().teTunnelId())
.state(te2YangTunnelState(tunnel))
.primaryPaths(pathsList);
+ Tunnel.TunnelBuilder tunnelBuilder = isConfig ?
+ builder.config(te2YangTunnelConfig(tunnel)) :
+ builder.state(te2YangTunnelState(tunnel));
- return builder.build();
+ return tunnelBuilder.build();
}
private static State te2YangTunnelState(TeTunnel tunnel) {
State.StateBuilder stateBuilder = new DefaultState.StateBuilder();
- stateBuilder.name(tunnel.name())
+ stateBuilder.name(validName(tunnel.name()))
.identifier((int) tunnel.teTunnelKey().teTunnelId())
.source((longToIp(tunnel.srcNode().teNodeId())))
.destination((longToIp(tunnel.dstNode().teNodeId())))
@@ -173,6 +173,33 @@
return stateBuilder.build();
}
+ private static Config te2YangTunnelConfig(TeTunnel tunnel) {
+ org.onosproject.yang.gen.v1.urn.ietf.params.xml.ns.yang.ietf.te.
+ rev20160705.ietfte.tunnelproperties.DefaultConfig.ConfigBuilder
+ configBuilder = new org.onosproject.yang.gen.v1.urn.ietf.params.
+ xml.ns.yang.ietf.te.rev20160705.ietfte.tunnelproperties.
+ DefaultConfig.ConfigBuilder();
+
+ configBuilder.name(validName(tunnel.name()))
+ .identifier((int) tunnel.teTunnelKey().teTunnelId())
+ .source((longToIp(tunnel.srcNode().teNodeId())))
+ .destination((longToIp(tunnel.dstNode().teNodeId())))
+ .srcTpId(longToByte(tunnel.srcTp().ttpId()))
+ .dstTpId(longToByte(tunnel.dstTp().ttpId()))
+ .adminStatus(te2YangStateType(tunnel.adminStatus()))
+ .lspProtectionType(
+ te2YangProtectionType(tunnel.lspProtectionType()))
+ .type(te2YangTunnelType(tunnel.type()))
+ .build();
+ return configBuilder.build();
+ }
+
+ private static String validName(String name) {
+ //for name is a required attribute, here we give a default name if not
+ //configured
+ return isNullOrEmpty(name) ? DEFAULT_NAME : name;
+ }
+
private static PrimaryPaths te2YangPrimaryPath(TePath tePath) {
DefaultPrimaryPaths.PrimaryPathsBuilder builder = new DefaultPrimaryPaths
.PrimaryPathsBuilder()
diff --git a/providers/ietfte/tunnel/src/main/java/org/onosproject/provider/te/tunnel/TeTunnelRestconfProvider.java b/providers/ietfte/tunnel/src/main/java/org/onosproject/provider/te/tunnel/TeTunnelRestconfProvider.java
index 1d9468d..7eae7e1 100644
--- a/providers/ietfte/tunnel/src/main/java/org/onosproject/provider/te/tunnel/TeTunnelRestconfProvider.java
+++ b/providers/ietfte/tunnel/src/main/java/org/onosproject/provider/te/tunnel/TeTunnelRestconfProvider.java
@@ -216,7 +216,7 @@
return;
}
- IetfTe ietfTe = buildIetfTe(optTunnel.get());
+ IetfTe ietfTe = buildIetfTe(optTunnel.get(), true);
YangCompositeEncoding encoding = codecHandler.
encodeCompositeOperation(RESTCONF_ROOT, null, ietfTe,