2 * Copyright © 2017 Orange, Inc. and others. All rights reserved.
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
8 package org.opendaylight.transportpce.servicehandler.service;
10 import org.opendaylight.transportpce.pce.service.PathComputationService;
11 import org.opendaylight.transportpce.servicehandler.MappingConstraints;
12 import org.opendaylight.transportpce.servicehandler.ModelMappingUtils;
13 import org.opendaylight.yang.gen.v1.http.org.opendaylight.transportpce.pce.rev171017.CancelResourceReserveInput;
14 import org.opendaylight.yang.gen.v1.http.org.opendaylight.transportpce.pce.rev171017.CancelResourceReserveInputBuilder;
15 import org.opendaylight.yang.gen.v1.http.org.opendaylight.transportpce.pce.rev171017.PathComputationRequestInput;
16 import org.opendaylight.yang.gen.v1.http.org.opendaylight.transportpce.pce.rev171017.PathComputationRequestInputBuilder;
17 import org.opendaylight.yang.gen.v1.http.org.opendaylight.transportpce.pce.rev171017.PathComputationRequestOutput;
18 import org.opendaylight.yang.gen.v1.http.org.openroadm.common.service.types.rev161014.ServiceEndpoint;
19 import org.opendaylight.yang.gen.v1.http.org.openroadm.common.service.types.rev161014.sdnc.request.header.SdncRequestHeader;
20 import org.opendaylight.yang.gen.v1.http.org.openroadm.service.rev161014.ServiceCreateInput;
21 import org.opendaylight.yang.gen.v1.http.org.openroadm.service.rev161014.TempServiceCreateInput;
22 import org.opendaylight.yang.gen.v1.http.org.transportpce.b.c._interface.routing.constraints.rev171017.RoutingConstraintsSp.PceMetric;
23 import org.opendaylight.yang.gen.v1.http.org.transportpce.b.c._interface.routing.constraints.rev171017.routing.constraints.sp.HardConstraints;
24 import org.opendaylight.yang.gen.v1.http.org.transportpce.b.c._interface.routing.constraints.rev171017.routing.constraints.sp.SoftConstraints;
25 import org.opendaylight.yang.gen.v1.http.org.transportpce.b.c._interface.service.types.rev171016.service.handler.header.ServiceHandlerHeaderBuilder;
26 import org.slf4j.Logger;
27 import org.slf4j.LoggerFactory;
29 public class PCEServiceWrapper {
31 private static final Logger LOG = LoggerFactory.getLogger(PCEServiceWrapper.class);
33 private final PathComputationService pathComputationService;
35 public PCEServiceWrapper(PathComputationService pathComputationService) {
36 this.pathComputationService = pathComputationService;
39 public PathComputationRequestOutput performPCE(ServiceCreateInput serviceCreateInput, boolean reserveResource) {
40 return performPCE(serviceCreateInput.getHardConstraints(), serviceCreateInput.getSoftConstraints(),
41 serviceCreateInput.getServiceName(), serviceCreateInput.getSdncRequestHeader(),
42 serviceCreateInput.getServiceAEnd(), serviceCreateInput.getServiceZEnd(), reserveResource);
45 public PathComputationRequestOutput performPCE(TempServiceCreateInput tempServiceCreateInput,
46 boolean reserveResource) {
47 return performPCE(tempServiceCreateInput.getHardConstraints(), tempServiceCreateInput.getSoftConstraints(),
48 tempServiceCreateInput.getCommonId(), tempServiceCreateInput.getSdncRequestHeader(),
49 tempServiceCreateInput.getServiceAEnd(), tempServiceCreateInput.getServiceZEnd(), reserveResource);
52 private PathComputationRequestOutput performPCE(org.opendaylight.yang.gen.v1.http.org.openroadm.routing.constrains
53 .rev161014.routing.constraints.HardConstraints hardConstraints, org.opendaylight.yang.gen.v1.http.org
54 .openroadm.routing.constrains.rev161014.routing.constraints.SoftConstraints softConstraints,
55 String serviceName, SdncRequestHeader sdncRequestHeader, ServiceEndpoint serviceAEnd,
56 ServiceEndpoint serviceZEnd, boolean reserveResource) {
57 MappingConstraints mappingConstraints = new MappingConstraints(hardConstraints, softConstraints);
58 mappingConstraints.serviceToServicePathConstarints();
59 PathComputationRequestInput pathComputationRequestInput =
60 createPceRequestInput(serviceName, sdncRequestHeader,mappingConstraints.getServicePathHardConstraints(),
61 mappingConstraints.getServicePathSoftConstraints(), reserveResource, serviceAEnd,
63 LOG.debug("Calling path computation.");
64 PathComputationRequestOutput pathComputationRequestOutput
65 = this.pathComputationService.pathComputationRequest(pathComputationRequestInput);
66 LOG.debug("Path computation done.");
67 return pathComputationRequestOutput;
70 private PathComputationRequestInput createPceRequestInput(String serviceName,
71 SdncRequestHeader serviceHandler, HardConstraints hardConstraints,
72 SoftConstraints softConstraints, Boolean reserveResource, ServiceEndpoint serviceAEnd,
73 ServiceEndpoint serviceZEnd) {
74 LOG.info("Mapping ServiceCreateInput or ServiceFeasibilityCheckInput or serviceReconfigureInput to PCE"
76 ServiceHandlerHeaderBuilder serviceHandlerHeader = new ServiceHandlerHeaderBuilder();
77 if (serviceHandler != null) {
78 serviceHandlerHeader.setRequestId(serviceHandler.getRequestId());
80 return new PathComputationRequestInputBuilder()
81 .setServiceName(serviceName)
82 .setResourceReserve(reserveResource)
83 .setServiceHandlerHeader(serviceHandlerHeader.build())
84 .setHardConstraints(hardConstraints)
85 .setSoftConstraints(softConstraints)
86 .setPceMetric(PceMetric.TEMetric)
87 .setServiceAEnd(ModelMappingUtils.createServiceAEnd(serviceAEnd))
88 .setServiceZEnd(ModelMappingUtils.createServiceZEnd(serviceZEnd))
92 private CancelResourceReserveInput mappingCancelResourceReserve(String serviceName,
93 SdncRequestHeader sdncRequestHeader) {
94 LOG.debug("Mapping ServiceCreateInput or ServiceFeasibilityCheckInput or serviceReconfigureInput to PCE"
96 ServiceHandlerHeaderBuilder serviceHandlerHeader = new ServiceHandlerHeaderBuilder();
97 if (sdncRequestHeader != null) {
98 serviceHandlerHeader.setRequestId(sdncRequestHeader.getRequestId());
100 CancelResourceReserveInputBuilder cancelResourceReserveInput = new CancelResourceReserveInputBuilder()
101 .setServiceName(serviceName)
102 .setServiceHandlerHeader(serviceHandlerHeader.build());
103 return cancelResourceReserveInput.build();