remove stubs bundles from build process
[transportpce.git] / servicehandler / src / main / java / org / opendaylight / transportpce / servicehandler / ModelMappingUtils.java
1 /*
2  * Copyright © 2017 Orange, Inc. and others.  All rights reserved.
3  *
4  * This program and the accompanying materials are made available under the
5  * terms of the Eclipse Public License v1.0 which accompanies this distribution,
6  * and is available at http://www.eclipse.org/legal/epl-v10.html
7  */
8 package org.opendaylight.transportpce.servicehandler;
9
10 import com.google.common.util.concurrent.ListenableFuture;
11 import java.util.ArrayList;
12 import java.util.List;
13 import org.opendaylight.yang.gen.v1.http.org.opendaylight.transportpce.pce.rev170426.PathComputationRequestOutput;
14 import org.opendaylight.yang.gen.v1.http.org.opendaylight.transportpce.pce.rev170426.path.computation.request.input.ServiceAEnd;
15 import org.opendaylight.yang.gen.v1.http.org.opendaylight.transportpce.pce.rev170426.path.computation.request.input.ServiceAEndBuilder;
16 import org.opendaylight.yang.gen.v1.http.org.opendaylight.transportpce.pce.rev170426.path.computation.request.input.ServiceZEnd;
17 import org.opendaylight.yang.gen.v1.http.org.opendaylight.transportpce.pce.rev170426.path.computation.request.input.ServiceZEndBuilder;
18 import org.opendaylight.yang.gen.v1.http.org.openroadm.common.service.types.rev161014.configuration.response.common.ConfigurationResponseCommon;
19 import org.opendaylight.yang.gen.v1.http.org.openroadm.common.service.types.rev161014.configuration.response.common.ConfigurationResponseCommonBuilder;
20 import org.opendaylight.yang.gen.v1.http.org.openroadm.common.service.types.rev161014.response.parameters.ResponseParametersBuilder;
21 import org.opendaylight.yang.gen.v1.http.org.openroadm.common.service.types.rev161014.service.Topology;
22 import org.opendaylight.yang.gen.v1.http.org.openroadm.common.service.types.rev161014.service.TopologyBuilder;
23 import org.opendaylight.yang.gen.v1.http.org.openroadm.common.types.rev161014.LifecycleState;
24 import org.opendaylight.yang.gen.v1.http.org.openroadm.common.types.rev161014.RpcStatus;
25 import org.opendaylight.yang.gen.v1.http.org.openroadm.common.types.rev161014.State;
26 import org.opendaylight.yang.gen.v1.http.org.openroadm.service.rev161014.ServiceCreateInput;
27 import org.opendaylight.yang.gen.v1.http.org.openroadm.service.rev161014.ServiceCreateOutput;
28 import org.opendaylight.yang.gen.v1.http.org.openroadm.service.rev161014.ServiceCreateOutputBuilder;
29 import org.opendaylight.yang.gen.v1.http.org.openroadm.service.rev161014.ServiceDeleteInput;
30 import org.opendaylight.yang.gen.v1.http.org.openroadm.service.rev161014.ServiceDeleteOutput;
31 import org.opendaylight.yang.gen.v1.http.org.openroadm.service.rev161014.ServiceDeleteOutputBuilder;
32 import org.opendaylight.yang.gen.v1.http.org.openroadm.service.rev161014.ServiceReconfigureInput;
33 import org.opendaylight.yang.gen.v1.http.org.openroadm.service.rev161014.ServiceRerouteInput;
34 import org.opendaylight.yang.gen.v1.http.org.openroadm.service.rev161014.ServiceRerouteOutput;
35 import org.opendaylight.yang.gen.v1.http.org.openroadm.service.rev161014.ServiceRerouteOutputBuilder;
36 import org.opendaylight.yang.gen.v1.http.org.openroadm.service.rev161014.service.list.Services;
37 import org.opendaylight.yang.gen.v1.http.org.openroadm.service.rev161014.service.list.ServicesBuilder;
38 import org.opendaylight.yang.gen.v1.http.org.openroadm.topology.rev161014.topology.AToZ;
39 import org.opendaylight.yang.gen.v1.http.org.openroadm.topology.rev161014.topology.AToZBuilder;
40 import org.opendaylight.yang.gen.v1.http.org.openroadm.topology.rev161014.topology.AToZKey;
41 import org.opendaylight.yang.gen.v1.http.org.openroadm.topology.rev161014.topology.ZToA;
42 import org.opendaylight.yang.gen.v1.http.org.openroadm.topology.rev161014.topology.ZToABuilder;
43 import org.opendaylight.yang.gen.v1.http.org.openroadm.topology.rev161014.topology.ZToAKey;
44 import org.opendaylight.yang.gen.v1.http.org.transportpce.b.c._interface.routing.constraints.rev170426.routing.constraints.sp.HardConstraintsBuilder;
45 import org.opendaylight.yang.gen.v1.http.org.transportpce.b.c._interface.routing.constraints.rev170426.routing.constraints.sp.SoftConstraintsBuilder;
46 import org.opendaylight.yang.gen.v1.http.org.transportpce.b.c._interface.service.types.rev170426.service.endpoint.sp.RxDirection;
47 import org.opendaylight.yang.gen.v1.http.org.transportpce.b.c._interface.service.types.rev170426.service.endpoint.sp.RxDirectionBuilder;
48 import org.opendaylight.yang.gen.v1.http.org.transportpce.b.c._interface.service.types.rev170426.service.endpoint.sp.TxDirection;
49 import org.opendaylight.yang.gen.v1.http.org.transportpce.b.c._interface.service.types.rev170426.service.endpoint.sp.TxDirectionBuilder;
50 import org.opendaylight.yang.gen.v1.http.org.transportpce.b.c._interface.service.types.rev170426.service.handler.header.ServiceHandlerHeaderBuilder;
51 import org.opendaylight.yang.gen.v1.http.org.transportpce.b.c._interface.service.types.rev170426.service.path.PathDescriptionBuilder;
52 import org.opendaylight.yang.gen.v1.http.org.transportpce.b.c._interface.servicepath.rev170426.ServiceDeleteInputBuilder;
53 import org.opendaylight.yang.gen.v1.http.org.transportpce.b.c._interface.servicepath.rev170426.ServiceImplementationRequestInput;
54 import org.opendaylight.yang.gen.v1.http.org.transportpce.b.c._interface.servicepath.rev170426.ServiceImplementationRequestInputBuilder;
55 import org.opendaylight.yang.gen.v1.http.org.transportpce.b.c._interface.servicepath.rev170426.service.path.list.ServicePaths;
56 import org.opendaylight.yang.gen.v1.http.org.transportpce.b.c._interface.servicepath.rev170426.service.path.list.ServicePathsBuilder;
57 import org.opendaylight.yangtools.yang.common.RpcResult;
58 import org.opendaylight.yangtools.yang.common.RpcResultBuilder;
59
60 public final class ModelMappingUtils {
61
62     private ModelMappingUtils() {
63     }
64
65     public static ServiceImplementationRequestInput createServiceImplementationRequest(ServiceCreateInput input,
66          PathComputationRequestOutput pceResponse) {
67
68         ServiceImplementationRequestInputBuilder serviceImplementationRequestInputBuilder =
69             new ServiceImplementationRequestInputBuilder();
70         serviceImplementationRequestInputBuilder.setServiceName(input.getServiceName());
71         org.opendaylight.yang.gen.v1.http.org.transportpce.b.c._interface.servicepath
72             .rev170426.service.implementation.request.input.ServiceAEndBuilder serviceAEnd =
73                 new org.opendaylight.yang.gen.v1.http.org.transportpce.b.c._interface.servicepath
74                     .rev170426.service.implementation.request.input.ServiceAEndBuilder();
75         serviceAEnd.setServiceFormat(input.getServiceAEnd().getServiceFormat())
76             .setServiceRate(input.getServiceAEnd().getServiceRate()).setClli(input.getServiceAEnd().getClli())
77             .setNodeId(input.getServiceAEnd().getNodeId())
78             .setTxDirection(new org.opendaylight.yang.gen.v1.http.org.transportpce.b.c._interface.service.types
79             .rev170426.service.endpoint.sp.TxDirectionBuilder()
80             .setPort(input.getServiceAEnd().getTxDirection().getPort()).build())
81             .setRxDirection(new org.opendaylight.yang.gen.v1.http.org.transportpce.b.c._interface.service.types
82             .rev170426.service.endpoint.sp.RxDirectionBuilder()
83             .setPort(input.getServiceAEnd().getRxDirection().getPort()).build());
84         org.opendaylight.yang.gen.v1.http.org.transportpce.b.c._interface.servicepath
85             .rev170426.service.implementation.request.input.ServiceZEndBuilder serviceZEnd =
86                 new org.opendaylight.yang.gen.v1.http.org.transportpce.b.c._interface.servicepath
87                     .rev170426.service.implementation.request.input.ServiceZEndBuilder();
88         serviceZEnd.setServiceFormat(input.getServiceZEnd().getServiceFormat())
89             .setServiceRate(input.getServiceZEnd().getServiceRate()).setClli(input.getServiceZEnd().getClli())
90             .setNodeId(input.getServiceZEnd().getNodeId())
91             .setTxDirection(new org.opendaylight.yang.gen.v1.http.org.transportpce.b.c._interface.service.types
92             .rev170426.service.endpoint.sp.TxDirectionBuilder()
93             .setPort(input.getServiceZEnd().getTxDirection().getPort()).build())
94             .setRxDirection(new org.opendaylight.yang.gen.v1.http.org.transportpce.b.c._interface.service.types
95             .rev170426.service.endpoint.sp.RxDirectionBuilder()
96             .setPort(input.getServiceZEnd().getRxDirection().getPort()).build());
97         serviceImplementationRequestInputBuilder.setServiceAEnd(serviceAEnd.build());
98         serviceImplementationRequestInputBuilder.setServiceZEnd(serviceZEnd.build());
99         serviceImplementationRequestInputBuilder.setServiceHandlerHeader(
100             new ServiceHandlerHeaderBuilder().setRequestId(input.getSdncRequestHeader().getRequestId()).build());
101         org.opendaylight.yang.gen.v1.http.org.transportpce.b.c._interface.servicepath
102             .rev170426.service.implementation.request.input.PathDescriptionBuilder pathDescBuilder =
103                 new org.opendaylight.yang.gen.v1.http.org.transportpce.b.c._interface.servicepath
104                     .rev170426.service.implementation.request.input
105                     .PathDescriptionBuilder();
106         pathDescBuilder.setAToZDirection(pceResponse.getResponseParameters()
107                 .getPathDescription().getAToZDirection());
108         pathDescBuilder.setZToADirection(pceResponse.getResponseParameters()
109                 .getPathDescription().getZToADirection());
110         serviceImplementationRequestInputBuilder.setPathDescription(pathDescBuilder.build());
111         return serviceImplementationRequestInputBuilder.build();
112     }
113
114     public static org.opendaylight.yang.gen.v1.http.org.transportpce.b.c._interface.servicepath.rev170426
115             .ServiceDeleteInput createServiceDeleteInput(ServiceDeleteInput serviceDeleteInput) {
116         ServiceDeleteInputBuilder builder = new ServiceDeleteInputBuilder();
117         builder.setServiceName(serviceDeleteInput.getServiceDeleteReqInfo().getServiceName());
118         builder.setServiceHandlerHeader(new ServiceHandlerHeaderBuilder().setRequestId(
119             serviceDeleteInput.getSdncRequestHeader().getRequestId()).build());
120         return builder.build();
121     }
122
123     public static org.opendaylight.yang.gen.v1.http.org.transportpce.b.c._interface.servicepath.rev170426
124         .ServiceDeleteInput createServiceDeleteInput(ServiceRerouteInput serviceRerouteInput, Services service) {
125         ServiceDeleteInputBuilder builder = new ServiceDeleteInputBuilder();
126         builder.setServiceName(serviceRerouteInput.getServiceName());
127         builder.setServiceHandlerHeader(new ServiceHandlerHeaderBuilder().setRequestId(
128                 service.getSdncRequestHeader().getRequestId()).build());
129         return builder.build();
130     }
131
132     public static ServiceAEnd createServiceAEnd(
133         org.opendaylight.yang.gen.v1.http.org.openroadm.service.rev161014.service.create.input
134             .ServiceAEnd serviceAEnd) {
135         ServiceAEndBuilder serviceAEndBuilder = new ServiceAEndBuilder();
136         serviceAEndBuilder.setClli(serviceAEnd.getClli());
137         serviceAEndBuilder.setNodeId(serviceAEnd.getNodeId());
138         serviceAEndBuilder.setRxDirection(createRxDirection(serviceAEnd.getRxDirection()));
139         serviceAEndBuilder.setServiceFormat(serviceAEnd.getServiceFormat());
140         serviceAEndBuilder.setServiceRate(serviceAEnd.getServiceRate());
141         serviceAEndBuilder.setTxDirection(createTxDirection(serviceAEnd.getTxDirection()));
142         return serviceAEndBuilder.build();
143     }
144
145     public static ServiceZEnd createServiceZEnd(
146         org.opendaylight.yang.gen.v1.http.org.openroadm.service.rev161014.service.create.input.ServiceZEnd
147             serviceZEnd) {
148         ServiceZEndBuilder serviceZEndBuilder = new ServiceZEndBuilder();
149         serviceZEndBuilder.setClli(serviceZEnd.getClli());
150         serviceZEndBuilder.setNodeId(serviceZEnd.getNodeId());
151         serviceZEndBuilder.setRxDirection(createRxDirection(serviceZEnd.getRxDirection()));
152         serviceZEndBuilder.setServiceFormat(serviceZEnd.getServiceFormat());
153         serviceZEndBuilder.setServiceRate(serviceZEnd.getServiceRate());
154         serviceZEndBuilder.setTxDirection(createTxDirection(serviceZEnd.getTxDirection()));
155         return serviceZEndBuilder.build();
156     }
157
158     public static RxDirection createRxDirection(
159         org.opendaylight.yang.gen.v1.http.org.openroadm.common.service.types.rev161014.service.endpoint.RxDirection
160             rxDirection) {
161         RxDirectionBuilder rxDirectionBuilder = new RxDirectionBuilder();
162         rxDirectionBuilder.setPort(rxDirection.getPort());
163         return rxDirectionBuilder.build();
164     }
165
166     public static TxDirection createTxDirection(
167         org.opendaylight.yang.gen.v1.http.org.openroadm.common.service.types.rev161014.service.endpoint.TxDirection
168             txDirection) {
169         TxDirectionBuilder txDirectionBuilder = new TxDirectionBuilder();
170         txDirectionBuilder.setPort(txDirection.getPort());
171         return txDirectionBuilder.build();
172     }
173
174     public static ListenableFuture<RpcResult<ServiceDeleteOutput>> createDeleteServiceReply(ServiceDeleteInput input,
175         String finalAck, String message, String responseCode) {
176         ConfigurationResponseCommonBuilder builder = new ConfigurationResponseCommonBuilder()
177                 .setAckFinalIndicator(finalAck).setResponseMessage(message).setResponseCode(responseCode);
178         if (input.getSdncRequestHeader() != null) {
179             builder.setRequestId(input.getSdncRequestHeader().getRequestId());
180         } else {
181             builder.setRequestId(null);
182         }
183         ConfigurationResponseCommon configurationResponseCommon = builder.build();
184         ServiceDeleteOutput output = new ServiceDeleteOutputBuilder()
185                 .setConfigurationResponseCommon(configurationResponseCommon).build();
186         return RpcResultBuilder.success(output).buildFuture();
187     }
188
189
190     public static ListenableFuture<RpcResult<ServiceRerouteOutput>> createRerouteServiceReply(ServiceRerouteInput input,
191             String finalAck, String message, RpcStatus rpcStatus) {
192         ServiceRerouteOutputBuilder output = new ServiceRerouteOutputBuilder()
193                 .setHardConstraints(null)
194                 .setSoftConstraints(null)
195                 .setStatusMessage(message)
196                 .setStatus(rpcStatus);
197         return RpcResultBuilder.success(output.build()).buildFuture();
198     }
199
200     public static ListenableFuture<RpcResult<ServiceCreateOutput>> createCreateServiceReply(ServiceCreateInput input,
201                                                                String finalAck,
202                                                                String message, String responseCode) {
203         ResponseParametersBuilder responseParameters = new ResponseParametersBuilder();
204         ConfigurationResponseCommonBuilder configurationResponseCommon
205                 = new ConfigurationResponseCommonBuilder().setAckFinalIndicator(finalAck)
206                 .setResponseMessage(message)
207                 .setResponseCode(responseCode);
208         if (input.getSdncRequestHeader() != null) {
209             configurationResponseCommon.setRequestId(input.getSdncRequestHeader().getRequestId());
210         } else {
211             configurationResponseCommon.setRequestId(null);
212         }
213         ServiceCreateOutputBuilder output = new ServiceCreateOutputBuilder()
214                 .setConfigurationResponseCommon(configurationResponseCommon.build())
215                 .setResponseParameters(responseParameters.build());
216         return RpcResultBuilder.success(output.build()).buildFuture();
217     }
218
219     /*
220      * Map Input (ServiceCreateInmput, ServiceReconfigureInput) & output
221      * (PathComputationRequestOutput) to Service.
222      * @param serviceCreateInput
223      *            ServiceCreateInput parameter
224      * @param serviceReconfigureInput
225      *            serviceReconfigureInput parameter
226      * @param output
227      *            PathComputationRequestOutput parameter
228      * @return Services Service data
229      */
230     public static Services mappingServices(ServiceCreateInput serviceCreateInput,
231         ServiceReconfigureInput serviceReconfigureInput, PathComputationRequestOutput output) {
232         org.opendaylight.yang.gen.v1.http.org.openroadm.common.service.types.rev161014.service.ServiceAEnd aend = null;
233         org.opendaylight.yang.gen.v1.http.org.openroadm.common.service.types.rev161014.service.ServiceZEnd zend = null;
234         ServicesBuilder service = new ServicesBuilder();
235         if (serviceCreateInput != null) {
236             aend = new org.opendaylight.yang.gen.v1.http.org.openroadm.common.service.types.rev161014.service
237                 .ServiceAEndBuilder(serviceCreateInput.getServiceAEnd()).build();
238             zend = new org.opendaylight.yang.gen.v1.http.org.openroadm.common.service.types.rev161014.service
239                 .ServiceZEndBuilder(serviceCreateInput.getServiceZEnd()).build();
240             service.setServiceName(serviceCreateInput.getServiceName()).setAdministrativeState(State.OutOfService)
241                 .setOperationalState(State.OutOfService).setCommonId(serviceCreateInput.getCommonId())
242                 .setConnectionType(serviceCreateInput.getConnectionType())
243                 .setCustomer(serviceCreateInput.getCustomer())
244                 .setCustomerContact(serviceCreateInput.getCustomerContact())
245                 .setHardConstraints(serviceCreateInput.getHardConstraints())
246                 .setSoftConstraints(serviceCreateInput.getSoftConstraints())
247                 .setSdncRequestHeader(serviceCreateInput.getSdncRequestHeader())
248                 .setLifecycleState(LifecycleState.Planned).setServiceAEnd(aend).setServiceZEnd(zend);
249
250         } else if (serviceReconfigureInput != null) {
251             aend = new org.opendaylight.yang.gen.v1.http.org.openroadm.common.service.types.rev161014.service
252                 .ServiceAEndBuilder(serviceReconfigureInput.getServiceAEnd()).build();
253             zend = new org.opendaylight.yang.gen.v1.http.org.openroadm.common.service.types.rev161014.service
254                 .ServiceZEndBuilder(serviceReconfigureInput.getServiceZEnd()).build();
255             service.setServiceName(serviceReconfigureInput.getNewServiceName())
256                 .setAdministrativeState(State.OutOfService).setOperationalState(State.OutOfService)
257                 .setCommonId(serviceReconfigureInput.getCommonId())
258                 .setConnectionType(serviceReconfigureInput.getConnectionType())
259                 .setCustomer(serviceReconfigureInput.getCustomer())
260                 .setCustomerContact(serviceReconfigureInput.getCustomerContact())
261                 .setHardConstraints(serviceReconfigureInput.getHardConstraints())
262                 .setSoftConstraints(serviceReconfigureInput.getSoftConstraints())
263                 .setLifecycleState(LifecycleState.Planned).setServiceAEnd(aend).setServiceZEnd(zend);
264         }
265         if (output != null) {
266             org.opendaylight.yang.gen.v1.http.org.transportpce.b.c._interface.service.types.rev170426.response
267                     .parameters.sp.ResponseParameters responseParameters = output.getResponseParameters();
268             if (responseParameters != null) {
269                 // service.setPceMetric(responseParameters.getPceMetric());
270                 org.opendaylight.yang.gen.v1.http.org.transportpce.b.c._interface.service.types.rev170426
271                     .response.parameters.sp.response.parameters.PathDescription pathDescription =
272                     responseParameters.getPathDescription();
273                 if (pathDescription != null) {
274                     List<AToZ> atozList = new ArrayList<>();
275                     List<ZToA> ztoaList = new ArrayList<>();
276
277                     for (org.opendaylight.yang.gen.v1.http.org.transportpce.b.c._interface.pathdescription.rev170426
278                         .path.description.atoz.direction.AToZ tmp : pathDescription.getAToZDirection().getAToZ()) {
279
280                         AToZKey key = new AToZKey(tmp.key().getId());
281                         AToZ atoz = new AToZBuilder().setId(tmp.getId()).withKey(key)
282                                 // .setResource(tmp.getResource())
283                                 .build();
284                         atozList.add(atoz);
285                     }
286
287                     for (org.opendaylight.yang.gen.v1.http.org.transportpce.b.c._interface.pathdescription.rev170426
288                             .path.description.ztoa.direction.ZToA
289                             tmp : pathDescription.getZToADirection().getZToA()) {
290                         ZToAKey key = new ZToAKey(tmp.key().getId());
291                         ZToA ztoa = new ZToABuilder().setId(tmp.getId()).withKey(key)
292                                 // .setResource(tmp.getResource())
293                                 .build();
294                         ztoaList.add(ztoa);
295                     }
296
297                     Topology topology = new TopologyBuilder().setAToZ(atozList).setZToA(ztoaList).build();
298                     service.setTopology(topology);
299                 }
300             }
301         }
302         return service.build();
303     }
304
305     /*
306      * Map Input (ServiceCreateInmput, ServiceReconfigureInput) & output
307      * (PathComputationRequestOutput) to ServicePath.
308      * @param serviceCreateInput
309      *            ServiceCreateInput parameter
310      * @param serviceReconfigureInput
311      *            serviceReconfigureInput parameter
312      * @param output
313      *            PathComputationRequestOutput parameter
314      * @return ServicesPaths Service Path data
315      */
316     public static ServicePaths mappingServicePaths(ServiceCreateInput serviceCreateInput,
317         ServiceReconfigureInput serviceReconfigureInput, PathComputationRequestOutput output) {
318         ServicePathsBuilder servicePathBuilder = new ServicePathsBuilder();
319         if (serviceCreateInput != null) {
320             org.opendaylight.yang.gen.v1.http.org.transportpce.b.c._interface
321                 .service.types.rev170426.service.path.ServiceAEndBuilder serviceAEnd =
322                 new org.opendaylight.yang.gen.v1.http.org.transportpce.b.c._interface
323                     .service.types.rev170426.service.path.ServiceAEndBuilder();
324             serviceAEnd.setServiceFormat(serviceCreateInput.getServiceAEnd().getServiceFormat())
325                 .setServiceRate(serviceCreateInput.getServiceAEnd().getServiceRate())
326                 .setClli(serviceCreateInput.getServiceAEnd().getClli())
327                 .setNodeId(serviceCreateInput.getServiceAEnd().getNodeId())
328                 .setTxDirection(new org.opendaylight.yang.gen.v1.http.org.transportpce.b.c._interface.service.types
329                 .rev170426.service.endpoint.sp.TxDirectionBuilder()
330                 .setPort(serviceCreateInput.getServiceAEnd().getTxDirection().getPort()).build())
331                 .setRxDirection(new org.opendaylight.yang.gen.v1.http.org.transportpce.b.c._interface.service.types
332                 .rev170426.service.endpoint.sp.RxDirectionBuilder()
333                 .setPort(serviceCreateInput.getServiceAEnd().getRxDirection().getPort()).build());
334             org.opendaylight.yang.gen.v1.http.org.transportpce.b.c._interface
335                 .service.types.rev170426.service.path.ServiceZEndBuilder serviceZEnd =
336                 new org.opendaylight.yang.gen.v1.http.org.transportpce.b.c._interface
337                     .service.types.rev170426.service.path.ServiceZEndBuilder();
338             serviceZEnd.setServiceFormat(serviceCreateInput.getServiceZEnd().getServiceFormat())
339                 .setServiceRate(serviceCreateInput.getServiceZEnd().getServiceRate())
340                 .setClli(serviceCreateInput.getServiceZEnd().getClli())
341                 .setNodeId(serviceCreateInput.getServiceZEnd().getNodeId())
342                 .setTxDirection(new org.opendaylight.yang.gen.v1.http.org.transportpce.b.c._interface.service.types
343                 .rev170426.service.endpoint.sp.TxDirectionBuilder()
344                 .setPort(serviceCreateInput.getServiceZEnd().getTxDirection().getPort()).build())
345                 .setRxDirection(new org.opendaylight.yang.gen.v1.http.org.transportpce.b.c._interface.service.types
346                 .rev170426.service.endpoint.sp.RxDirectionBuilder()
347                 .setPort(serviceCreateInput.getServiceZEnd().getRxDirection().getPort()).build());
348
349             servicePathBuilder.setServiceAEnd(serviceAEnd.build());
350             servicePathBuilder.setServiceZEnd(serviceZEnd.build());
351             MappingConstraints mapConstraints = new MappingConstraints(serviceCreateInput.getHardConstraints(),
352                 serviceCreateInput.getSoftConstraints());
353             mapConstraints.serviceToServicePathConstarints();
354             if (mapConstraints.getServicePathHardConstraints() != null) {
355                 HardConstraintsBuilder hardConstraintBuilder = new HardConstraintsBuilder();
356                 hardConstraintBuilder.setCustomerCode(serviceCreateInput.getHardConstraints().getCustomerCode());
357                 hardConstraintBuilder.setCoRoutingOrGeneral(mapConstraints.getServicePathHardConstraints()
358                     .getCoRoutingOrGeneral());
359                 servicePathBuilder.setHardConstraints(hardConstraintBuilder.build());
360             }
361             if (mapConstraints.getServicePathSoftConstraints() != null) {
362                 SoftConstraintsBuilder softConstraintBuilder = new SoftConstraintsBuilder();
363                 softConstraintBuilder.setCustomerCode(mapConstraints.getServicePathSoftConstraints().getCustomerCode());
364                 softConstraintBuilder.setCoRoutingOrGeneral(mapConstraints.getServicePathSoftConstraints()
365                      .getCoRoutingOrGeneral());
366                 servicePathBuilder.setSoftConstraints(softConstraintBuilder.build());
367             }
368             servicePathBuilder.setServicePathName(serviceCreateInput.getServiceName());
369             servicePathBuilder.setServiceHandlerHeader(new ServiceHandlerHeaderBuilder()
370                 .setRequestId(serviceCreateInput.getSdncRequestHeader().getRequestId()).build());
371             PathDescriptionBuilder pathDescBuilder = new PathDescriptionBuilder(output.getResponseParameters()
372                 .getPathDescription());
373             servicePathBuilder.setPathDescription(pathDescBuilder.build());
374         }
375         return servicePathBuilder.build();
376     }
377 }