Refactor transportpce-routing-constraint model
[transportpce.git] / renderer / src / test / java / org / opendaylight / transportpce / renderer / utils / ServiceDataUtils.java
index 99c65da5ddddeb2027e138c33c6850a3c94b103a..51dd2205e0414eb760b4780ddb864aa40bb7e42c 100644 (file)
@@ -8,48 +8,52 @@
 package org.opendaylight.transportpce.renderer.utils;
 
 import java.util.ArrayList;
+import java.util.Arrays;
+import java.util.Collections;
+import java.util.HashMap;
 import java.util.List;
-import org.opendaylight.yang.gen.v1.http.org.openroadm.common.service.types.rev161014.ServiceFormat;
-import org.opendaylight.yang.gen.v1.http.org.openroadm.common.service.types.rev161014.service.port.PortBuilder;
-import org.opendaylight.yang.gen.v1.http.org.transportpce.b.c._interface.pathdescription.rev170426.path.description.AToZDirection;
-import org.opendaylight.yang.gen.v1.http.org.transportpce.b.c._interface.pathdescription.rev170426.path.description.AToZDirectionBuilder;
-import org.opendaylight.yang.gen.v1.http.org.transportpce.b.c._interface.pathdescription.rev170426.path.description.ZToADirection;
-import org.opendaylight.yang.gen.v1.http.org.transportpce.b.c._interface.pathdescription.rev170426.path.description.ZToADirectionBuilder;
-import org.opendaylight.yang.gen.v1.http.org.transportpce.b.c._interface.pathdescription.rev170426.path.description.atoz.direction.AToZ;
-import org.opendaylight.yang.gen.v1.http.org.transportpce.b.c._interface.pathdescription.rev170426.path.description.atoz.direction.AToZBuilder;
-import org.opendaylight.yang.gen.v1.http.org.transportpce.b.c._interface.pathdescription.rev170426.path.description.atoz.direction.AToZKey;
-import org.opendaylight.yang.gen.v1.http.org.transportpce.b.c._interface.pathdescription.rev170426.path.description.ztoa.direction.ZToA;
-import org.opendaylight.yang.gen.v1.http.org.transportpce.b.c._interface.pathdescription.rev170426.path.description.ztoa.direction.ZToABuilder;
-import org.opendaylight.yang.gen.v1.http.org.transportpce.b.c._interface.pathdescription.rev170426.path.description.ztoa.direction.ZToAKey;
-import org.opendaylight.yang.gen.v1.http.org.transportpce.b.c._interface.pathdescription.rev170426.pce.resource.ResourceBuilder;
-import org.opendaylight.yang.gen.v1.http.org.transportpce.b.c._interface.pathdescription.rev170426.pce.resource.resource.resource.Link;
-import org.opendaylight.yang.gen.v1.http.org.transportpce.b.c._interface.pathdescription.rev170426.pce.resource.resource.resource.LinkBuilder;
-import org.opendaylight.yang.gen.v1.http.org.transportpce.b.c._interface.pathdescription.rev170426.pce.resource.resource.resource.NodeBuilder;
-import org.opendaylight.yang.gen.v1.http.org.transportpce.b.c._interface.pathdescription.rev170426.pce.resource.resource.resource.TerminationPoint;
-import org.opendaylight.yang.gen.v1.http.org.transportpce.b.c._interface.pathdescription.rev170426.pce.resource.resource.resource.TerminationPointBuilder;
-import org.opendaylight.yang.gen.v1.http.org.transportpce.b.c._interface.pathdescription.rev170426.pce.resource.resource.resource.link.LinkIdentifierBuilder;
-import org.opendaylight.yang.gen.v1.http.org.transportpce.b.c._interface.pathdescription.rev170426.pce.resource.resource.resource.node.NodeIdentifierBuilder;
-import org.opendaylight.yang.gen.v1.http.org.transportpce.b.c._interface.pathdescription.rev170426.pce.resource.resource.resource.termination.point.TerminationPointIdentifierBuilder;
-import org.opendaylight.yang.gen.v1.http.org.transportpce.b.c._interface.service.types.rev170426.service.endpoint.sp.RxDirectionBuilder;
-import org.opendaylight.yang.gen.v1.http.org.transportpce.b.c._interface.service.types.rev170426.service.endpoint.sp.TxDirectionBuilder;
-import org.opendaylight.yang.gen.v1.http.org.transportpce.b.c._interface.service.types.rev170426.service.handler.header.ServiceHandlerHeaderBuilder;
-import org.opendaylight.yang.gen.v1.http.org.transportpce.b.c._interface.servicepath.rev170426.ServiceImplementationRequestInput;
-import org.opendaylight.yang.gen.v1.http.org.transportpce.b.c._interface.servicepath.rev170426.ServiceImplementationRequestInputBuilder;
-import org.opendaylight.yang.gen.v1.http.org.transportpce.b.c._interface.servicepath.rev170426.service.implementation.request.input.PathDescription;
-import org.opendaylight.yang.gen.v1.http.org.transportpce.b.c._interface.servicepath.rev170426.service.implementation.request.input.PathDescriptionBuilder;
-import org.opendaylight.yang.gen.v1.http.org.transportpce.b.c._interface.servicepath.rev170426.service.implementation.request.input.ServiceAEndBuilder;
-import org.opendaylight.yang.gen.v1.http.org.transportpce.b.c._interface.servicepath.rev170426.service.implementation.request.input.ServiceZEndBuilder;
-import org.opendaylight.yang.gen.v1.http.org.transportpce.common.types.rev170907.olm.renderer.input.Nodes;
-import org.opendaylight.yang.gen.v1.http.org.transportpce.common.types.rev170907.olm.renderer.input.NodesBuilder;
-import org.opendaylight.yang.gen.v1.http.org.transportpce.common.types.rev170907.olm.renderer.input.NodesKey;
-import org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.renderer.rev170228.RendererRollbackInput;
-import org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.renderer.rev170228.RendererRollbackInputBuilder;
-import org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.renderer.rev170228.ServicePathInput;
-import org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.renderer.rev170228.ServicePathInputBuilder;
+import java.util.Map;
+import org.opendaylight.yang.gen.v1.http.org.opendaylight.transportpce.device.renderer.rev211004.RendererRollbackInput;
+import org.opendaylight.yang.gen.v1.http.org.opendaylight.transportpce.device.renderer.rev211004.RendererRollbackInputBuilder;
+import org.opendaylight.yang.gen.v1.http.org.opendaylight.transportpce.device.renderer.rev211004.ServicePathInput;
+import org.opendaylight.yang.gen.v1.http.org.opendaylight.transportpce.device.renderer.rev211004.ServicePathInputBuilder;
+import org.opendaylight.yang.gen.v1.http.org.opendaylight.transportpce.renderer.rev210915.ServiceImplementationRequestInput;
+import org.opendaylight.yang.gen.v1.http.org.opendaylight.transportpce.renderer.rev210915.ServiceImplementationRequestInputBuilder;
+import org.opendaylight.yang.gen.v1.http.org.opendaylight.transportpce.renderer.rev210915.service.implementation.request.input.PathDescription;
+import org.opendaylight.yang.gen.v1.http.org.opendaylight.transportpce.renderer.rev210915.service.implementation.request.input.PathDescriptionBuilder;
+import org.opendaylight.yang.gen.v1.http.org.opendaylight.transportpce.renderer.rev210915.service.implementation.request.input.ServiceAEndBuilder;
+import org.opendaylight.yang.gen.v1.http.org.opendaylight.transportpce.renderer.rev210915.service.implementation.request.input.ServiceZEndBuilder;
+import org.opendaylight.yang.gen.v1.http.org.openroadm.common.optical.channel.types.rev200529.FrequencyTHz;
+import org.opendaylight.yang.gen.v1.http.org.openroadm.common.service.types.rev190531.ConnectionType;
+import org.opendaylight.yang.gen.v1.http.org.openroadm.common.service.types.rev190531.service.port.PortBuilder;
+import org.opendaylight.yang.gen.v1.http.org.openroadm.service.format.rev190531.ServiceFormat;
+import org.opendaylight.yang.gen.v1.http.org.transportpce.b.c._interface.pathdescription.rev210705.path.description.AToZDirection;
+import org.opendaylight.yang.gen.v1.http.org.transportpce.b.c._interface.pathdescription.rev210705.path.description.AToZDirectionBuilder;
+import org.opendaylight.yang.gen.v1.http.org.transportpce.b.c._interface.pathdescription.rev210705.path.description.ZToADirection;
+import org.opendaylight.yang.gen.v1.http.org.transportpce.b.c._interface.pathdescription.rev210705.path.description.ZToADirectionBuilder;
+import org.opendaylight.yang.gen.v1.http.org.transportpce.b.c._interface.pathdescription.rev210705.path.description.atoz.direction.AToZ;
+import org.opendaylight.yang.gen.v1.http.org.transportpce.b.c._interface.pathdescription.rev210705.path.description.atoz.direction.AToZBuilder;
+import org.opendaylight.yang.gen.v1.http.org.transportpce.b.c._interface.pathdescription.rev210705.path.description.atoz.direction.AToZKey;
+import org.opendaylight.yang.gen.v1.http.org.transportpce.b.c._interface.pathdescription.rev210705.path.description.ztoa.direction.ZToA;
+import org.opendaylight.yang.gen.v1.http.org.transportpce.b.c._interface.pathdescription.rev210705.path.description.ztoa.direction.ZToABuilder;
+import org.opendaylight.yang.gen.v1.http.org.transportpce.b.c._interface.pathdescription.rev210705.path.description.ztoa.direction.ZToAKey;
+import org.opendaylight.yang.gen.v1.http.org.transportpce.b.c._interface.pathdescription.rev210705.pce.resource.ResourceBuilder;
+import org.opendaylight.yang.gen.v1.http.org.transportpce.b.c._interface.pathdescription.rev210705.pce.resource.resource.resource.TerminationPoint;
+import org.opendaylight.yang.gen.v1.http.org.transportpce.b.c._interface.pathdescription.rev210705.pce.resource.resource.resource.TerminationPointBuilder;
+import org.opendaylight.yang.gen.v1.http.org.transportpce.b.c._interface.service.types.rev220118.service.endpoint.sp.RxDirectionBuilder;
+import org.opendaylight.yang.gen.v1.http.org.transportpce.b.c._interface.service.types.rev220118.service.endpoint.sp.TxDirectionBuilder;
+import org.opendaylight.yang.gen.v1.http.org.transportpce.b.c._interface.service.types.rev220118.service.handler.header.ServiceHandlerHeaderBuilder;
+import org.opendaylight.yang.gen.v1.http.org.transportpce.common.types.rev210930.optical.renderer.nodes.Nodes;
+import org.opendaylight.yang.gen.v1.http.org.transportpce.common.types.rev210930.optical.renderer.nodes.NodesBuilder;
+import org.opendaylight.yang.gen.v1.http.org.transportpce.common.types.rev210930.optical.renderer.nodes.NodesKey;
+import org.opendaylight.yangtools.yang.common.Uint32;
 
 
 public final class ServiceDataUtils {
 
+    private ServiceDataUtils() {
+    }
+
     public static Nodes createNode(String nodeId, String srcTp, String dstTp) {
         return new NodesBuilder().setNodeId(nodeId).withKey(new NodesKey(nodeId)).setSrcTp(srcTp)
                 .setDestTp(dstTp).build();
@@ -58,7 +62,7 @@ public final class ServiceDataUtils {
     public static ServicePathInput buildServicePathInputs(List<Nodes> nodes) {
         ServicePathInputBuilder servicePathInputBuilder = new ServicePathInputBuilder();
         servicePathInputBuilder.setNodes(nodes);
-        servicePathInputBuilder.setServiceName("Service 1").setWaveNumber(20L);
+        servicePathInputBuilder.setServiceName("Service 1").setWaveNumber(Uint32.valueOf(20));
         return servicePathInputBuilder.build();
     }
 
@@ -67,13 +71,13 @@ public final class ServiceDataUtils {
         List<Nodes> nodes = new ArrayList<>();
         nodes.add(ServiceDataUtils.createNode("node1", "src", "dst"));
         servicePathInputBuilder.setNodes(nodes);
-        servicePathInputBuilder.setServiceName("Service 1").setWaveNumber(20L);
+        servicePathInputBuilder.setServiceName("Service 1").setWaveNumber(Uint32.valueOf(20));
         return servicePathInputBuilder.build();
     }
 
     public static RendererRollbackInput buildRendererRollbackInput() {
         RendererRollbackInputBuilder rendererRollbackInputBuilder = new RendererRollbackInputBuilder();
-        rendererRollbackInputBuilder.setNodeInterface(new ArrayList<>());
+        rendererRollbackInputBuilder.setNodeInterface(Map.of());
         return rendererRollbackInputBuilder.build();
     }
 
@@ -82,136 +86,60 @@ public final class ServiceDataUtils {
         ServiceImplementationRequestInputBuilder builder = new ServiceImplementationRequestInputBuilder()
             .setServiceName("service 1").setPathDescription(createPathDescriptionTerminationPointResource(tpId))
             .setServiceHandlerHeader(new ServiceHandlerHeaderBuilder().setRequestId("Request 1").build())
-            .setServiceAEnd(getServiceAEndBuild().build())
-            .setServiceZEnd(getServiceZEndBuild().build());
-        return builder.build();
-    }
-
-    public static ServiceImplementationRequestInput buildServiceImplementationRequestInputInvalidResource() {
-        ServiceImplementationRequestInputBuilder builder = new ServiceImplementationRequestInputBuilder()
-            .setServiceName("service 1").setPathDescription(createPathDescriptionInvalidResource())
-            .setServiceHandlerHeader(new ServiceHandlerHeaderBuilder().setRequestId("Request 1").build())
-            .setServiceAEnd(getServiceAEndBuild().build())
-            .setServiceZEnd(getServiceZEndBuild().build());
-        return builder.build();
-    }
-
-    public static ServiceImplementationRequestInput buildServiceImplementationRequestInputLinkResource() {
-        ServiceImplementationRequestInputBuilder builder = new ServiceImplementationRequestInputBuilder()
-            .setServiceName("service 1").setPathDescription(createPathDescriptionLinkResource())
-            .setServiceHandlerHeader(new ServiceHandlerHeaderBuilder().setRequestId("Request 1").build())
-            .setServiceAEnd(getServiceAEndBuild().build())
-            .setServiceZEnd(getServiceZEndBuild().build());
-        return builder.build();
-    }
-
-    private static PathDescription createPathDescriptionInvalidResource() {
-        List<AToZ> atoZList = new ArrayList<AToZ>();
-        org.opendaylight.yang.gen.v1.http.org.transportpce.b.c._interface.pathdescription.rev170426.pce.resource
-            .resource.resource.NodeBuilder nodesBuilder = new NodeBuilder();
-        org.opendaylight.yang.gen.v1.http.org.transportpce.b.c._interface.pathdescription.rev170426.pce.resource
-            .resource.resource.Node node1 = nodesBuilder.setNodeIdentifier(new NodeIdentifierBuilder()
-            .setNodeId("XPONDER-1-2").build()).build();
-        org.opendaylight.yang.gen.v1.http.org.transportpce.b.c._interface.pathdescription.rev170426.pce.resource
-            .resource.resource.Node node2 = nodesBuilder.setNodeIdentifier(new NodeIdentifierBuilder()
-            .setNodeId("XPONDER-1-2").build()).build();
-        AToZ atoZ = new AToZBuilder().setId("1").withKey(new AToZKey("1")).setResource(new ResourceBuilder()
-            .setResource(node1).build()).build();
-        AToZ atoZ2 = new AToZBuilder().setId("1").withKey(new AToZKey("1")).setResource(new ResourceBuilder()
-            .setResource(node2).build()).build();
-        atoZList.add(atoZ);
-        atoZList.add(atoZ2);
-        AToZDirection atozDirection = new AToZDirectionBuilder()
-            .setRate(20L)
-            .setAToZWavelengthNumber(20L)
-            .setAToZ(atoZList)
-            .build();
-        List<ZToA> ztoAList = new ArrayList<ZToA>();
-        ZToA ztoA = new ZToABuilder().setId("1").withKey(new ZToAKey("1")).setResource(new ResourceBuilder()
-            .setResource(node1).build()).build();
-        ZToA ztoA2 = new ZToABuilder().setId("1").withKey(new ZToAKey("1")).setResource(new ResourceBuilder()
-            .setResource(node2).build()).build();
-        ztoAList.add(ztoA);
-        ztoAList.add(ztoA2);
-        ZToADirection ztoaDirection = new ZToADirectionBuilder()
-            .setRate(20L)
-            .setZToAWavelengthNumber(20L)
-            .setZToA(ztoAList)
-            .build();
-        PathDescriptionBuilder builder = new PathDescriptionBuilder()
-            .setAToZDirection(atozDirection)
-            .setZToADirection(ztoaDirection);
+            .setServiceAEnd(getServiceAEndBuild(tpId).build())
+            .setServiceZEnd(getServiceZEndBuild(tpId).build())
+            .setConnectionType(ConnectionType.Service);
         return builder.build();
     }
 
     public static PathDescription createPathDescriptionTerminationPointResource(String tpId) {
-        List<AToZ> atoZList = new ArrayList<AToZ>();
+        Map<AToZKey,AToZ> atoZMap = new HashMap<>();
         TerminationPointBuilder terminationPointBuilder = new TerminationPointBuilder();
-        TerminationPoint terminationPoint = terminationPointBuilder
-            .setTerminationPointIdentifier(new TerminationPointIdentifierBuilder().setNodeId("XPONDER-1-2")
-                .setTpId("XPONDER-1-2-" + tpId).build()).build();
-        TerminationPoint terminationPoint2 = terminationPointBuilder
-            .setTerminationPointIdentifier(new TerminationPointIdentifierBuilder().setNodeId("XPONDER-1-2")
-                .setTpId("XPONDER-1-2-" + tpId).build()).build();
-        AToZ atoZ = new AToZBuilder().setId("1").withKey(new AToZKey("1")).setResource(new ResourceBuilder()
-            .setResource(terminationPoint).build()).build();
-        AToZ atoZ2 = new AToZBuilder().setId("2").withKey(new AToZKey("2")).setResource(new ResourceBuilder()
-            .setResource(terminationPoint2).build()).build();
-        atoZList.add(atoZ);
-        atoZList.add(atoZ2);
+        List<String> nodeIds = Arrays.asList("XPONDER-1-2", "XPONDER-2-3");
+        Integer atozId = 1;
+        for (String nodeId : nodeIds) {
+            for (String otherNodeId : nodeIds) {
+                TerminationPoint terminationPoint = terminationPointBuilder
+                    .setTpNodeId(nodeId + '-'
+                            + tpId)
+                        .setTpId(tpId).build();
+                AToZ atoZ = new AToZBuilder().setId(atozId.toString())
+                    .withKey(new AToZKey(atozId.toString())).setResource(new ResourceBuilder()
+                        .setResource(terminationPoint).build()).build();
+                atozId++;
+                atoZMap.put(atoZ.key(),atoZ);
+            }
+        }
         AToZDirection atozDirection = new AToZDirectionBuilder()
-            .setRate(20L)
-            .setAToZWavelengthNumber(20L)
-            .setAToZ(atoZList)
-            .build();
-        List<ZToA> ztoAList = new ArrayList<ZToA>();
-        ZToA ztoA = new ZToABuilder().setId("1").withKey(new ZToAKey("1")).setResource(new ResourceBuilder()
-            .setResource(terminationPoint).build()).build();
-        ZToA ztoA2 = new ZToABuilder().setId("2").withKey(new ZToAKey("2")).setResource(new ResourceBuilder()
-            .setResource(terminationPoint).build()).build();
-        ztoAList.add(ztoA);
-        ztoAList.add(ztoA2);
-        ZToADirection ztoaDirection = new ZToADirectionBuilder()
-            .setRate(20L)
-            .setZToAWavelengthNumber(20L)
-            .setZToA(ztoAList)
+            .setRate(Uint32.valueOf(20))
+            .setAToZWavelengthNumber(Uint32.valueOf(20))
+            .setAToZMinFrequency(FrequencyTHz.getDefaultInstance("196.125"))
+            .setAToZMaxFrequency(FrequencyTHz.getDefaultInstance("196.075"))
+            .setAToZ(atoZMap)
             .build();
-        PathDescriptionBuilder builder = new PathDescriptionBuilder()
-            .setAToZDirection(atozDirection)
-            .setZToADirection(ztoaDirection);
-        return builder.build();
-    }
 
-    private static PathDescription createPathDescriptionLinkResource() {
-        List<AToZ> atoZList = new ArrayList<AToZ>();
-        org.opendaylight.yang.gen.v1.http.org.transportpce.b.c._interface.pathdescription.rev170426.pce.resource
-            .resource.resource.NodeBuilder nodesBuilder = new NodeBuilder();
-        Link link1 = new LinkBuilder().setLinkIdentifier(new LinkIdentifierBuilder().setLinkId("link 1").build())
-            .build();
-        Link link2 = new LinkBuilder().setLinkIdentifier(new LinkIdentifierBuilder().setLinkId("link 2").build())
-            .build();
-        AToZ atoZ = new AToZBuilder().setId("1").withKey(new AToZKey("1")).setResource(new ResourceBuilder()
-            .setResource(link1).build()).build();
-        AToZ atoZ2 = new AToZBuilder().setId("1").withKey(new AToZKey("1")).setResource(new ResourceBuilder()
-            .setResource(link2).build()).build();
-        atoZList.add(atoZ);
-        atoZList.add(atoZ2);
-        AToZDirection atozDirection = new AToZDirectionBuilder()
-            .setRate(20L)
-            .setAToZWavelengthNumber(20L)
-            .setAToZ(atoZList)
-            .build();
-        List<ZToA> ztoAList = new ArrayList<ZToA>();
-        ZToA ztoA = new ZToABuilder().setId("1").withKey(new ZToAKey("1")).setResource(new ResourceBuilder()
-            .setResource(link1).build()).build();
-        ZToA ztoA2 = new ZToABuilder().setId("1").withKey(new ZToAKey("1")).setResource(new ResourceBuilder()
-            .setResource(link2).build()).build();
-        ztoAList.add(ztoA);
-        ztoAList.add(ztoA2);
+        Collections.reverse(nodeIds);
+        Map<ZToAKey,ZToA> ztoAMap = new HashMap<>();
+        Integer ztoaId = 1;
+        for (String nodeId : nodeIds) {
+            for (String otherNodeId : nodeIds) {
+                TerminationPoint terminationPoint = terminationPointBuilder
+                    .setTpNodeId(nodeId + '-'
+                            + tpId)
+                        .setTpId(tpId).build();
+                ZToA ztoA = new ZToABuilder().setId(ztoaId.toString())
+                    .withKey(new ZToAKey(ztoaId.toString())).setResource(new ResourceBuilder()
+                        .setResource(terminationPoint).build()).build();
+                ztoaId++;
+                ztoAMap.put(ztoA.key(),ztoA);
+            }
+        }
         ZToADirection ztoaDirection = new ZToADirectionBuilder()
-            .setRate(20L)
-            .setZToAWavelengthNumber(20L)
-            .setZToA(ztoAList)
+            .setRate(Uint32.valueOf(20))
+            .setZToAWavelengthNumber(Uint32.valueOf(20))
+            .setZToAMinFrequency(FrequencyTHz.getDefaultInstance("196.125"))
+            .setZToAMaxFrequency(FrequencyTHz.getDefaultInstance("196.075"))
+            .setZToA(ztoAMap)
             .build();
         PathDescriptionBuilder builder = new PathDescriptionBuilder()
             .setAToZDirection(atozDirection)
@@ -219,9 +147,11 @@ public final class ServiceDataUtils {
         return builder.build();
     }
 
-    public static ServiceAEndBuilder getServiceAEndBuild() {
+    public static ServiceAEndBuilder getServiceAEndBuild(String tpId) {
         return new ServiceAEndBuilder()
-            .setClli("clli").setServiceFormat(ServiceFormat.OC).setServiceRate((long) 1).setNodeId("XPONDER-1-2")
+            .setClli("clli").setServiceFormat(ServiceFormat.OC)
+            .setServiceRate(Uint32.valueOf(1)).setNodeId("XPONDER-1-2-"
+                    + tpId)
             .setTxDirection(
                 new TxDirectionBuilder()
                     .setPort(new PortBuilder().setPortDeviceName("device name").setPortName("port name")
@@ -233,12 +163,16 @@ public final class ServiceDataUtils {
                     .setPort(new PortBuilder().setPortDeviceName("device name").setPortName("port name")
                         .setPortRack("port rack").setPortShelf("port shelf").setPortSlot("port slot")
                         .setPortSubSlot("port subslot").setPortType("port type").build())
-                    .build());
+                    .build())
+            .setServiceRate(Uint32.valueOf(100))
+                .setServiceFormat(ServiceFormat.Ethernet);
     }
 
-    public static ServiceZEndBuilder getServiceZEndBuild() {
+    public static ServiceZEndBuilder getServiceZEndBuild(String tpId) {
         return new ServiceZEndBuilder()
-            .setClli("clli").setServiceFormat(ServiceFormat.OC).setServiceRate((long) 1).setNodeId("XPONDER-1-2")
+            .setClli("clli").setServiceFormat(ServiceFormat.OC)
+            .setServiceRate(Uint32.valueOf(1)).setNodeId("XPONDER-2-3-"
+                    + tpId)
             .setTxDirection(
                 new TxDirectionBuilder()
                     .setPort(new PortBuilder().setPortDeviceName("device name").setPortName("port name")
@@ -252,8 +186,4 @@ public final class ServiceDataUtils {
                         .setPortSubSlot("port subslot").setPortType("port type").build())
                     .build());
     }
-
-    private ServiceDataUtils() {
-    }
-
 }