Merge "OLM unit testing update"
[transportpce.git] / servicehandler / src / main / java / org / opendaylight / transportpce / servicehandler / service / PCEServiceWrapper.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.service;
9
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;
28
29 public class PCEServiceWrapper {
30
31     private static final Logger LOG = LoggerFactory.getLogger(PCEServiceWrapper.class);
32
33     private final PathComputationService pathComputationService;
34
35     public PCEServiceWrapper(PathComputationService pathComputationService) {
36         this.pathComputationService = pathComputationService;
37     }
38
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);
43     }
44
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);
50     }
51
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,
62                         serviceZEnd);
63         LOG.debug("Calling path computation.");
64         PathComputationRequestOutput pathComputationRequestOutput
65                 = this.pathComputationService.pathComputationRequest(pathComputationRequestInput);
66         LOG.debug("Path computation done.");
67         return pathComputationRequestOutput;
68     }
69
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"
75                 + "requests");
76         ServiceHandlerHeaderBuilder serviceHandlerHeader = new ServiceHandlerHeaderBuilder();
77         if (serviceHandler != null) {
78             serviceHandlerHeader.setRequestId(serviceHandler.getRequestId());
79         }
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))
89             .build();
90     }
91
92     private CancelResourceReserveInput mappingCancelResourceReserve(String serviceName,
93                                                                     SdncRequestHeader sdncRequestHeader) {
94         LOG.debug("Mapping ServiceCreateInput or ServiceFeasibilityCheckInput or serviceReconfigureInput to PCE"
95                 + "requests");
96         ServiceHandlerHeaderBuilder serviceHandlerHeader = new ServiceHandlerHeaderBuilder();
97         if (sdncRequestHeader != null) {
98             serviceHandlerHeader.setRequestId(sdncRequestHeader.getRequestId());
99         }
100         CancelResourceReserveInputBuilder cancelResourceReserveInput = new CancelResourceReserveInputBuilder()
101                 .setServiceName(serviceName)
102                 .setServiceHandlerHeader(serviceHandlerHeader.build());
103         return cancelResourceReserveInput.build();
104     }
105
106 }