and fix ServiceHandler SLF4J SpotBugs issues.
By the way:
- rename ServiceHandlerCompliancyCheck class for coherence
- clean ModelMappingUtils.java and ServicehandlerImpl.java
- review how messages and logs are handled
- improve Junit tests
JIRA: TRNSPRTPCE-214 TRNSPRTPCE-246 TRNSPRTPCE-265
Signed-off-by: guillaume.lambert <guillaume.lambert@orange.com>
Change-Id: I82e1ac784bb66acbdcf62004da6da6eb3701434b
</dependency>
</dependencies>
-<!-- checkstyle and spotbugds enforced by odlparent since Magnesium -->
- <properties>
- <!-- odlparent.checkstyle.enforce>false</odlparent.checkstyle.enforce -->
- <odlparent.spotbugs.enforce>false</odlparent.spotbugs.enforce>
- </properties>
-
</project>
import org.opendaylight.yang.gen.v1.http.org.transportpce.b.c._interface.servicepath.rev171017.service.path.list.ServicePathsBuilder;
import org.opendaylight.yangtools.yang.common.RpcResult;
import org.opendaylight.yangtools.yang.common.RpcResultBuilder;
+import org.slf4j.Logger;
+import org.slf4j.LoggerFactory;
+
public final class ModelMappingUtils {
+ private static final Logger LOG = LoggerFactory.getLogger(ModelMappingUtils.class);
+
private ModelMappingUtils() {
}
public static ServiceImplementationRequestInput createServiceImplementationRequest(ServiceInput input,
PathDescription pathDescription) {
+
+ org.opendaylight.yang.gen.v1.http.org.opendaylight.transportpce.renderer.rev171017
+ .service.implementation.request.input.ServiceAEndBuilder serviceAEnd =
+ new org.opendaylight.yang.gen.v1.http.org.opendaylight.transportpce.renderer.rev171017
+ .service.implementation.request.input.ServiceAEndBuilder()
+ .setServiceFormat(input.getServiceAEnd().getServiceFormat())
+ .setServiceRate(input.getServiceAEnd().getServiceRate())
+ .setClli(input.getServiceAEnd().getClli())
+ .setNodeId(new NodeIdType(input.getServiceAEnd().getNodeId().getValue()).getValue())
+ .setTxDirection(new org.opendaylight.yang.gen.v1.http.org
+ .transportpce.b.c._interface.service.types.rev200128.service.endpoint.sp.TxDirectionBuilder()
+ .setPort(input.getServiceAEnd().getTxDirection().getPort())
+ .build())
+ .setRxDirection(new org.opendaylight.yang.gen.v1.http.org
+ .transportpce.b.c._interface.service.types.rev200128.service.endpoint.sp.RxDirectionBuilder()
+ .setPort(input.getServiceAEnd().getRxDirection().getPort())
+ .build());
+
+ org.opendaylight.yang.gen.v1.http.org.opendaylight.transportpce.renderer.rev171017
+ .service.implementation.request.input.ServiceZEndBuilder serviceZEnd =
+ new org.opendaylight.yang.gen.v1.http.org.opendaylight.transportpce.renderer.rev171017
+ .service.implementation.request.input.ServiceZEndBuilder()
+ .setServiceFormat(input.getServiceZEnd().getServiceFormat())
+ .setServiceRate(input.getServiceZEnd().getServiceRate())
+ .setClli(input.getServiceZEnd().getClli())
+ .setNodeId(new NodeIdType(input.getServiceZEnd().getNodeId().getValue()).getValue())
+ .setTxDirection(new org.opendaylight.yang.gen.v1.http.org
+ .transportpce.b.c._interface.service.types.rev200128.service.endpoint.sp.TxDirectionBuilder()
+ .setPort(input.getServiceZEnd().getTxDirection().getPort())
+ .build())
+ .setRxDirection(new org.opendaylight.yang.gen.v1.http.org
+ .transportpce.b.c._interface.service.types.rev200128.service.endpoint.sp.RxDirectionBuilder()
+ .setPort(input.getServiceZEnd().getRxDirection().getPort())
+ .build());
+
+ org.opendaylight.yang.gen.v1.http.org.opendaylight.transportpce.renderer.rev171017
+ .service.implementation.request.input.PathDescriptionBuilder pathDescBuilder =
+ new org.opendaylight.yang.gen.v1.http.org.opendaylight.transportpce.renderer.rev171017
+ .service.implementation.request.input.PathDescriptionBuilder()
+ .setAToZDirection(pathDescription.getAToZDirection())
+ .setZToADirection(pathDescription.getZToADirection());
+
ServiceImplementationRequestInputBuilder serviceImplementationRequestInputBuilder =
new ServiceImplementationRequestInputBuilder();
if (input.isServiceReconfigure()) {
} else {
serviceImplementationRequestInputBuilder.setServiceName(input.getServiceName());
}
- org.opendaylight.yang.gen.v1.http.org.opendaylight.transportpce.renderer.rev171017.service.implementation
- .request.input.ServiceAEndBuilder serviceAEnd = new org.opendaylight.yang.gen.v1.http.org.opendaylight
- .transportpce.renderer.rev171017.service.implementation.request.input.ServiceAEndBuilder();
- serviceAEnd.setServiceFormat(input.getServiceAEnd().getServiceFormat())
- .setServiceRate(input.getServiceAEnd().getServiceRate()).setClli(input.getServiceAEnd().getClli())
- .setNodeId(new NodeIdType(input.getServiceAEnd().getNodeId().getValue()).getValue())
- .setTxDirection(new org.opendaylight.yang.gen.v1.http.org
- .transportpce.b.c._interface.service.types.rev200128.service.endpoint.sp.TxDirectionBuilder()
- .setPort(input.getServiceAEnd().getTxDirection().getPort()).build())
- .setRxDirection(new org.opendaylight.yang.gen.v1.http.org
- .transportpce.b.c._interface.service.types.rev200128.service.endpoint.sp.RxDirectionBuilder()
- .setPort(input.getServiceAEnd().getRxDirection().getPort()).build());
- org.opendaylight.yang.gen.v1.http.org.opendaylight.transportpce.renderer.rev171017.service.implementation
- .request.input.ServiceZEndBuilder serviceZEnd = new org.opendaylight.yang.gen.v1.http.org.opendaylight
- .transportpce.renderer.rev171017.service.implementation.request.input.ServiceZEndBuilder();
- serviceZEnd.setServiceFormat(input.getServiceZEnd().getServiceFormat())
- .setServiceRate(input.getServiceZEnd().getServiceRate()).setClli(input.getServiceZEnd().getClli())
- .setNodeId(new NodeIdType(input.getServiceZEnd().getNodeId().getValue()).getValue())
- .setTxDirection(new org.opendaylight.yang.gen.v1.http.org
- .transportpce.b.c._interface.service.types.rev200128.service.endpoint.sp.TxDirectionBuilder()
- .setPort(input.getServiceZEnd().getTxDirection().getPort()).build())
- .setRxDirection(new org.opendaylight.yang.gen.v1.http.org
- .transportpce.b.c._interface.service.types.rev200128.service.endpoint.sp.RxDirectionBuilder()
- .setPort(input.getServiceZEnd().getRxDirection().getPort()).build());
- serviceImplementationRequestInputBuilder
- .setServiceAEnd(serviceAEnd.build())
- .setServiceZEnd(serviceZEnd.build())
- .setServiceHandlerHeader(
- new ServiceHandlerHeaderBuilder().setRequestId(input.getSdncRequestHeader().getRequestId()).build());
- org.opendaylight.yang.gen.v1.http.org.opendaylight.transportpce.renderer.rev171017.service.implementation
- .request.input.PathDescriptionBuilder pathDescBuilder = new org.opendaylight.yang.gen.v1.http.org
- .opendaylight.transportpce.renderer.rev171017.service.implementation.request.input
- .PathDescriptionBuilder();
- pathDescBuilder
- .setAToZDirection(pathDescription.getAToZDirection())
- .setZToADirection(pathDescription.getZToADirection());
- serviceImplementationRequestInputBuilder.setPathDescription(pathDescBuilder.build());
- return serviceImplementationRequestInputBuilder.build();
+
+ return serviceImplementationRequestInputBuilder
+ .setServiceAEnd(serviceAEnd.build())
+ .setServiceZEnd(serviceZEnd.build())
+ .setServiceHandlerHeader(new ServiceHandlerHeaderBuilder()
+ .setRequestId(input.getSdncRequestHeader().getRequestId())
+ .build())
+ .setPathDescription(pathDescBuilder.build())
+ .build();
}
public static org.opendaylight.yang.gen.v1.http.org.opendaylight.transportpce.renderer.rev171017
- .ServiceDeleteInput createServiceDeleteInput(ServiceInput serviceInput) {
- ServiceDeleteInputBuilder builder = new ServiceDeleteInputBuilder()
- .setServiceName(serviceInput.getServiceName())
- .setServiceHandlerHeader(new ServiceHandlerHeaderBuilder()
- .setRequestId(serviceInput.getSdncRequestHeader().getRequestId()).build());
- return builder.build();
+ .ServiceDeleteInput createServiceDeleteInput(ServiceInput serviceInput) {
+ return new ServiceDeleteInputBuilder()
+ .setServiceName(serviceInput.getServiceName())
+ .setServiceHandlerHeader(new ServiceHandlerHeaderBuilder()
+ .setRequestId(serviceInput.getSdncRequestHeader().getRequestId())
+ .build())
+ .build();
}
public static org.opendaylight.yang.gen.v1.http.org.opendaylight.transportpce.renderer.rev171017
- .ServiceDeleteInput createServiceDeleteInput(ServiceRerouteInput serviceRerouteinput, Services services) {
- ServiceDeleteInputBuilder builder = new ServiceDeleteInputBuilder()
- .setServiceName(serviceRerouteinput.getServiceName())
- .setServiceHandlerHeader(new ServiceHandlerHeaderBuilder().setRequestId(
- services.getSdncRequestHeader().getRequestId()).build());
- return builder.build();
+ .ServiceDeleteInput createServiceDeleteInput(ServiceRerouteInput serviceRerouteinput, Services services) {
+ return new ServiceDeleteInputBuilder()
+ .setServiceName(serviceRerouteinput.getServiceName())
+ .setServiceHandlerHeader(new ServiceHandlerHeaderBuilder()
+ .setRequestId(services.getSdncRequestHeader().getRequestId())
+ .build())
+ .build();
}
public static org.opendaylight.yang.gen.v1.http.org.opendaylight.transportpce.renderer.rev171017
- .ServiceDeleteInput createServiceDeleteInput(ServiceRestorationInput serviceRestorationInput,
+ .ServiceDeleteInput createServiceDeleteInput(ServiceRestorationInput serviceRestorationInput,
Services services) {
- ServiceDeleteInputBuilder builder = new ServiceDeleteInputBuilder()
- .setServiceName(serviceRestorationInput.getServiceName())
- .setServiceHandlerHeader(new ServiceHandlerHeaderBuilder().setRequestId(
- services.getSdncRequestHeader().getRequestId()).build());
- return builder.build();
+ return new ServiceDeleteInputBuilder()
+ .setServiceName(serviceRestorationInput.getServiceName())
+ .setServiceHandlerHeader(new ServiceHandlerHeaderBuilder()
+ .setRequestId(services.getSdncRequestHeader().getRequestId())
+ .build())
+ .build();
}
public static org.opendaylight.yang.gen.v1.http.org.opendaylight.transportpce.renderer.rev171017.ServiceDeleteInput
createServiceDeleteInput(ServiceReconfigureInput serviceReconfigureInput) {
- String serviceName = serviceReconfigureInput.getServiceName();
- ServiceDeleteInputBuilder builder = new ServiceDeleteInputBuilder()
- .setServiceName(serviceReconfigureInput.getServiceName())
- .setServiceHandlerHeader(
- new ServiceHandlerHeaderBuilder().setRequestId(serviceName + "-reconfigure").build());
- return builder.build();
+ return new ServiceDeleteInputBuilder()
+ .setServiceName(serviceReconfigureInput.getServiceName())
+ .setServiceHandlerHeader(new ServiceHandlerHeaderBuilder()
+ .setRequestId(serviceReconfigureInput.getServiceName() + "-reconfigure")
+ .build())
+ .build();
}
- public static ServiceAEnd createServiceAEnd(org.opendaylight.yang.gen.v1.http.org.openroadm.common.service.types
- .rev190531.ServiceEndpoint serviceAEnd) {
- ServiceAEndBuilder serviceAEndBuilder = new ServiceAEndBuilder()
- .setClli(serviceAEnd.getClli())
- .setNodeId(serviceAEnd.getNodeId().getValue())
- .setRxDirection(createRxDirection(serviceAEnd.getRxDirection()))
- .setServiceFormat(serviceAEnd.getServiceFormat())
- .setServiceRate(serviceAEnd.getServiceRate())
- .setTxDirection(createTxDirection(serviceAEnd.getTxDirection()));
- return serviceAEndBuilder.build();
+ public static ServiceAEnd createServiceAEnd(org.opendaylight.yang.gen.v1.http
+ .org.openroadm.common.service.types.rev190531.ServiceEndpoint serviceAEnd) {
+ return new ServiceAEndBuilder()
+ .setClli(serviceAEnd.getClli())
+ .setNodeId(serviceAEnd.getNodeId().getValue())
+ .setRxDirection(createRxDirection(serviceAEnd.getRxDirection()))
+ .setServiceFormat(serviceAEnd.getServiceFormat())
+ .setServiceRate(serviceAEnd.getServiceRate())
+ .setTxDirection(createTxDirection(serviceAEnd.getTxDirection()))
+ .build();
}
- public static ServiceZEnd createServiceZEnd(org.opendaylight.yang.gen.v1.http.org.openroadm.common.service.types
- .rev190531.ServiceEndpoint serviceZEnd) {
- ServiceZEndBuilder serviceZEndBuilder = new ServiceZEndBuilder()
- .setClli(serviceZEnd.getClli())
- .setNodeId(serviceZEnd.getNodeId().getValue())
- .setRxDirection(createRxDirection(serviceZEnd.getRxDirection()))
- .setServiceFormat(serviceZEnd.getServiceFormat())
- .setServiceRate(serviceZEnd.getServiceRate())
- .setTxDirection(createTxDirection(serviceZEnd.getTxDirection()));
- return serviceZEndBuilder.build();
+ public static ServiceZEnd createServiceZEnd(org.opendaylight.yang.gen.v1.http
+ .org.openroadm.common.service.types.rev190531.ServiceEndpoint serviceZEnd) {
+ return new ServiceZEndBuilder()
+ .setClli(serviceZEnd.getClli())
+ .setNodeId(serviceZEnd.getNodeId().getValue())
+ .setRxDirection(createRxDirection(serviceZEnd.getRxDirection()))
+ .setServiceFormat(serviceZEnd.getServiceFormat())
+ .setServiceRate(serviceZEnd.getServiceRate())
+ .setTxDirection(createTxDirection(serviceZEnd.getTxDirection()))
+ .build();
}
public static RxDirection createRxDirection(org.opendaylight.yang.gen.v1.http.org.openroadm.common.service.types
.rev190531.service.endpoint.RxDirection rxDirection) {
- RxDirectionBuilder rxDirectionBuilder = new RxDirectionBuilder().setPort(rxDirection.getPort());
- return rxDirectionBuilder.build();
+ return new RxDirectionBuilder()
+ .setPort(rxDirection.getPort())
+ .build();
}
public static TxDirection createTxDirection(org.opendaylight.yang.gen.v1.http.org.openroadm.common.service
.types.rev190531.service.endpoint.TxDirection txDirection) {
- TxDirectionBuilder txDirectionBuilder = new TxDirectionBuilder().setPort(txDirection.getPort());
- return txDirectionBuilder.build();
+ return new TxDirectionBuilder()
+ .setPort(txDirection.getPort())
+ .build();
}
public static ListenableFuture<RpcResult<ServiceDeleteOutput>> createDeleteServiceReply(ServiceDeleteInput input,
String finalAck, String message, String responseCode) {
+ LOG.debug("createDeleteServiceReply : {}", message);
ConfigurationResponseCommonBuilder builder = new ConfigurationResponseCommonBuilder()
- .setAckFinalIndicator(finalAck).setResponseMessage(message).setResponseCode(responseCode);
+ .setAckFinalIndicator(finalAck)
+ .setResponseMessage(message)
+ .setResponseCode(responseCode);
if (input.getSdncRequestHeader() != null) {
builder.setRequestId(input.getSdncRequestHeader().getRequestId());
} else {
builder.setRequestId(null);
}
ConfigurationResponseCommon configurationResponseCommon = builder.build();
- ServiceDeleteOutput output =
- new ServiceDeleteOutputBuilder().setConfigurationResponseCommon(configurationResponseCommon).build();
+ ServiceDeleteOutput output = new ServiceDeleteOutputBuilder()
+ .setConfigurationResponseCommon(configurationResponseCommon)
+ .build();
return RpcResultBuilder.success(output).buildFuture();
}
public static ListenableFuture<RpcResult<TempServiceDeleteOutput>> createDeleteServiceReply(
TempServiceDeleteInput input, String finalAck, String message, String responseCode) {
- ConfigurationResponseCommonBuilder builder = new ConfigurationResponseCommonBuilder()
+ LOG.debug("createDeleteServiceReply : {}", message);
+ ConfigurationResponseCommonBuilder configurationResponseCommon =
+ new ConfigurationResponseCommonBuilder()
.setAckFinalIndicator(finalAck)
.setResponseMessage(message)
.setResponseCode(responseCode)
.setRequestId(null);
- ConfigurationResponseCommon configurationResponseCommon = builder.build();
TempServiceDeleteOutput output = new TempServiceDeleteOutputBuilder()
- .setConfigurationResponseCommon(configurationResponseCommon).build();
+ .setConfigurationResponseCommon(configurationResponseCommon.build())
+ .build();
return RpcResultBuilder.success(output).buildFuture();
}
public static ListenableFuture<RpcResult<ServiceCreateOutput>> createCreateServiceReply(ServiceCreateInput input,
String finalAck, String message, String responseCode) {
+ LOG.debug("createCreateServiceReply : {}", message);
ResponseParametersBuilder responseParameters = new ResponseParametersBuilder();
ConfigurationResponseCommonBuilder configurationResponseCommon = new ConfigurationResponseCommonBuilder()
- .setAckFinalIndicator(finalAck).setResponseMessage(message).setResponseCode(responseCode);
+ .setAckFinalIndicator(finalAck)
+ .setResponseMessage(message)
+ .setResponseCode(responseCode);
if (input.getSdncRequestHeader() != null) {
configurationResponseCommon.setRequestId(input.getSdncRequestHeader().getRequestId());
} else {
configurationResponseCommon.setRequestId(null);
}
- ServiceCreateOutputBuilder output =
- new ServiceCreateOutputBuilder().setConfigurationResponseCommon(configurationResponseCommon.build())
- .setResponseParameters(responseParameters.build());
+ ServiceCreateOutputBuilder output = new ServiceCreateOutputBuilder()
+ .setConfigurationResponseCommon(configurationResponseCommon.build())
+ .setResponseParameters(responseParameters.build());
return RpcResultBuilder.success(output.build()).buildFuture();
}
public static ListenableFuture<RpcResult<TempServiceCreateOutput>> createCreateServiceReply(
TempServiceCreateInput input, String finalAck, String message, String responseCode) {
- ResponseParametersBuilder responseParameters = new ResponseParametersBuilder();
- ConfigurationResponseCommonBuilder configurationResponseCommon = new ConfigurationResponseCommonBuilder()
- .setAckFinalIndicator(finalAck).setResponseMessage(message).setResponseCode(responseCode);
+ LOG.debug("createCreateServiceReply : {}", message);
+ ConfigurationResponseCommonBuilder configurationResponseCommon =
+ new ConfigurationResponseCommonBuilder()
+ .setAckFinalIndicator(finalAck)
+ .setResponseMessage(message)
+ .setResponseCode(responseCode);
if (input.getSdncRequestHeader() != null) {
configurationResponseCommon.setRequestId(input.getSdncRequestHeader().getRequestId());
} else {
configurationResponseCommon.setRequestId(null);
}
- TempServiceCreateOutputBuilder output =
- new TempServiceCreateOutputBuilder().setConfigurationResponseCommon(configurationResponseCommon.build())
- .setResponseParameters(responseParameters.build());
+ TempServiceCreateOutputBuilder output = new TempServiceCreateOutputBuilder()
+ .setConfigurationResponseCommon(configurationResponseCommon.build())
+ .setResponseParameters(new ResponseParametersBuilder().build());
return RpcResultBuilder.success(output.build()).buildFuture();
}
public static ListenableFuture<RpcResult<ServiceFeasibilityCheckOutput>> createCreateServiceReply(
ServiceFeasibilityCheckInput input, String finalAck, String message, String responseCode) {
+ LOG.debug("createCreateServiceReply : {}", message);
ResponseParametersBuilder responseParameters = new ResponseParametersBuilder();
ConfigurationResponseCommonBuilder configurationResponseCommon = new ConfigurationResponseCommonBuilder()
.setAckFinalIndicator(finalAck).setResponseMessage(message).setResponseCode(responseCode);
public static ListenableFuture<RpcResult<ServiceReconfigureOutput>> createCreateServiceReply(
ServiceReconfigureInput input, String message, RpcStatus rpcStatus) {
+ LOG.debug("createCreateServiceReply : {}", message);
ServiceReconfigureOutputBuilder output = new ServiceReconfigureOutputBuilder()
.setStatus(rpcStatus)
.setStatusMessage(message);
public static ListenableFuture<RpcResult<ServiceRerouteOutput>> createRerouteServiceReply(ServiceRerouteInput input,
String finalAckYes, String message, RpcStatus status) {
+ LOG.debug("createRerouteServiceReply : {}", message);
ServiceRerouteOutputBuilder output = new ServiceRerouteOutputBuilder()
.setHardConstraints(null)
.setSoftConstraints(null)
public static ListenableFuture<RpcResult<ServiceRestorationOutput>> createRestoreServiceReply(String message,
RpcStatus status) {
+ LOG.debug("createRestoreServiceReply : {}", message);
ServiceRestorationOutputBuilder output = new ServiceRestorationOutputBuilder()
.setStatus(status)
.setStatusMessage(message);
}
public static ServicePaths mappingServicePaths(ServiceInput serviceInput, PathComputationRequestOutput output) {
- ServicePathsBuilder servicePathBuilder = new ServicePathsBuilder();
- if (serviceInput != null) {
- org.opendaylight.yang.gen.v1.http.org.transportpce.b.c._interface.service.types.rev200128
+ if (serviceInput == null) {
+ return new ServicePathsBuilder().build();
+ }
+
+ org.opendaylight.yang.gen.v1.http.org.transportpce.b.c._interface.service.types.rev200128
.service.path.ServiceAEndBuilder serviceAEnd =
- new org.opendaylight.yang.gen.v1.http.org.transportpce.b.c._interface.service.types.rev200128
- .service.path.ServiceAEndBuilder();
- serviceAEnd.setServiceFormat(serviceInput.getServiceAEnd().getServiceFormat())
- .setServiceRate(serviceInput.getServiceAEnd().getServiceRate())
- .setClli(serviceInput.getServiceAEnd().getClli())
- .setNodeId(new NodeIdType(serviceInput.getServiceAEnd().getNodeId()).getValue())
- .setTxDirection(new org.opendaylight.yang.gen.v1.http.org
- .transportpce.b.c._interface.service.types.rev200128.service.endpoint.sp.TxDirectionBuilder()
- .setPort(serviceInput.getServiceAEnd().getTxDirection().getPort()).build())
- .setRxDirection(new org.opendaylight.yang.gen.v1.http.org
- .transportpce.b.c._interface.service.types.rev200128.service.endpoint.sp.RxDirectionBuilder()
- .setPort(serviceInput.getServiceAEnd().getRxDirection().getPort()).build());
- org.opendaylight.yang.gen.v1.http.org.transportpce.b.c._interface.service.types.rev200128
+ new org.opendaylight.yang.gen.v1.http.org.transportpce.b.c._interface.service.types.rev200128
+ .service.path.ServiceAEndBuilder()
+ .setServiceFormat(serviceInput.getServiceAEnd().getServiceFormat())
+ .setServiceRate(serviceInput.getServiceAEnd().getServiceRate())
+ .setClli(serviceInput.getServiceAEnd().getClli())
+ .setNodeId(new NodeIdType(serviceInput.getServiceAEnd().getNodeId()).getValue())
+ .setTxDirection(new org.opendaylight.yang.gen.v1.http.org
+ .transportpce.b.c._interface.service.types.rev200128
+ .service.endpoint.sp.TxDirectionBuilder()
+ .setPort(serviceInput.getServiceAEnd().getTxDirection().getPort())
+ .build())
+ .setRxDirection(new org.opendaylight.yang.gen.v1.http.org
+ .transportpce.b.c._interface.service.types.rev200128
+ .service.endpoint.sp.RxDirectionBuilder()
+ .setPort(serviceInput.getServiceAEnd().getRxDirection().getPort())
+ .build());
+ org.opendaylight.yang.gen.v1.http.org.transportpce.b.c._interface.service.types.rev200128
.service.path.ServiceZEndBuilder serviceZEnd =
- new org.opendaylight.yang.gen.v1.http.org.transportpce.b.c._interface.service.types.rev200128
- .service.path.ServiceZEndBuilder();
- serviceZEnd.setServiceFormat(serviceInput.getServiceZEnd().getServiceFormat())
- .setServiceRate(serviceInput.getServiceZEnd().getServiceRate())
- .setClli(serviceInput.getServiceZEnd().getClli())
- .setNodeId(new NodeIdType(serviceInput.getServiceZEnd().getNodeId()).getValue())
- .setTxDirection(new org.opendaylight.yang.gen.v1.http.org
- .transportpce.b.c._interface.service.types.rev200128.service.endpoint.sp.TxDirectionBuilder()
- .setPort(serviceInput.getServiceZEnd().getTxDirection().getPort()).build())
- .setRxDirection(new org.opendaylight.yang.gen.v1.http.org
- .transportpce.b.c._interface.service.types.rev200128.service.endpoint.sp.RxDirectionBuilder()
- .setPort(serviceInput.getServiceZEnd().getRxDirection().getPort()).build());
- servicePathBuilder.setServiceAEnd(serviceAEnd.build());
- servicePathBuilder.setServiceZEnd(serviceZEnd.build());
- MappingConstraints mapConstraints = new MappingConstraints(serviceInput.getHardConstraints(),
- serviceInput.getSoftConstraints());
- mapConstraints.serviceToServicePathConstarints();
- if (mapConstraints.getServicePathHardConstraints() != null) {
- HardConstraintsBuilder hardConstraintBuilder = new HardConstraintsBuilder()
+ new org.opendaylight.yang.gen.v1.http.org.transportpce.b.c._interface.service.types.rev200128
+ .service.path.ServiceZEndBuilder()
+ .setServiceFormat(serviceInput.getServiceZEnd().getServiceFormat())
+ .setServiceRate(serviceInput.getServiceZEnd().getServiceRate())
+ .setClli(serviceInput.getServiceZEnd().getClli())
+ .setNodeId(new NodeIdType(serviceInput.getServiceZEnd().getNodeId()).getValue())
+ .setTxDirection(new org.opendaylight.yang.gen.v1.http.org
+ .transportpce.b.c._interface.service.types.rev200128
+ .service.endpoint.sp.TxDirectionBuilder()
+ .setPort(serviceInput.getServiceZEnd().getTxDirection().getPort())
+ .build())
+ .setRxDirection(new org.opendaylight.yang.gen.v1.http.org
+ .transportpce.b.c._interface.service.types.rev200128
+ .service.endpoint.sp.RxDirectionBuilder()
+ .setPort(serviceInput.getServiceZEnd().getRxDirection().getPort())
+ .build());
+ ServicePathsBuilder servicePathBuilder = new ServicePathsBuilder()
+ .setServiceAEnd(serviceAEnd.build())
+ .setServiceZEnd(serviceZEnd.build());
+ MappingConstraints mapConstraints = new MappingConstraints(
+ serviceInput.getHardConstraints(),
+ serviceInput.getSoftConstraints()
+ );
+ mapConstraints.serviceToServicePathConstarints();
+ if (mapConstraints.getServicePathHardConstraints() != null) {
+ servicePathBuilder.setHardConstraints(
+ new HardConstraintsBuilder()
.setCustomerCode(serviceInput.getHardConstraints().getCustomerCode())
- .setCoRoutingOrGeneral(mapConstraints.getServicePathHardConstraints().getCoRoutingOrGeneral());
- servicePathBuilder.setHardConstraints(hardConstraintBuilder.build());
- }
- if (mapConstraints.getServicePathSoftConstraints() != null) {
- SoftConstraintsBuilder softConstraintBuilder = new SoftConstraintsBuilder()
+ .setCoRoutingOrGeneral(mapConstraints.getServicePathHardConstraints().getCoRoutingOrGeneral())
+ .build()
+ );
+ }
+ if (mapConstraints.getServicePathSoftConstraints() != null) {
+ servicePathBuilder.setSoftConstraints(
+ new SoftConstraintsBuilder()
.setCustomerCode(mapConstraints.getServicePathSoftConstraints().getCustomerCode())
- .setCoRoutingOrGeneral(mapConstraints.getServicePathSoftConstraints().getCoRoutingOrGeneral());
- servicePathBuilder.setSoftConstraints(softConstraintBuilder.build());
- }
- servicePathBuilder.setServicePathName(serviceInput.getServiceName());
- servicePathBuilder.setServiceHandlerHeader(new ServiceHandlerHeaderBuilder()
- .setRequestId(serviceInput.getSdncRequestHeader().getRequestId()).build());
- if (output.getResponseParameters().getPathDescription() != null) {
- PathDescriptionBuilder pathDescBuilder =
- new PathDescriptionBuilder(output.getResponseParameters().getPathDescription());
- servicePathBuilder.setPathDescription(pathDescBuilder.build());
- }
+ .setCoRoutingOrGeneral(mapConstraints.getServicePathSoftConstraints().getCoRoutingOrGeneral())
+ .build()
+ );
+ }
+ servicePathBuilder
+ .setServicePathName(serviceInput.getServiceName())
+ .setServiceHandlerHeader(new ServiceHandlerHeaderBuilder()
+ .setRequestId(serviceInput.getSdncRequestHeader().getRequestId())
+ .build());
+ if (output.getResponseParameters().getPathDescription() != null) {
+ servicePathBuilder.setPathDescription(
+ new PathDescriptionBuilder(output.getResponseParameters().getPathDescription()).build()
+ );
}
return servicePathBuilder.build();
import org.opendaylight.transportpce.servicehandler.service.ServiceDataStoreOperationsImpl;
import org.opendaylight.transportpce.servicehandler.validation.ServiceCreateValidation;
import org.opendaylight.transportpce.servicehandler.validation.checks.ComplianceCheckResult;
-import org.opendaylight.transportpce.servicehandler.validation.checks.ServicehandlerCompliancyCheck;
+import org.opendaylight.transportpce.servicehandler.validation.checks.ServicehandlerComplianceCheck;
import org.opendaylight.yang.gen.v1.http.org.opendaylight.transportpce.pce.rev200128.PathComputationRequestOutput;
import org.opendaylight.yang.gen.v1.http.org.openroadm.common.service.types.rev190531.RpcActions;
import org.opendaylight.yang.gen.v1.http.org.openroadm.common.service.types.rev190531.ServiceNotificationTypes;
this.rendererListenerImpl = rendererListenerImpl;
}
+
+ // This is class is public so that these messages can be accessed from Junit (avoid duplications).
+ public static final class LogMessages {
+
+ public static final String PCE_CALLING;
+ public static final String ABORT_PCE_FAILED;
+ public static final String PCE_FAILED;
+ public static final String ABORT_SERVICE_NON_COMPLIANT;
+ public static final String SERVICE_NON_COMPLIANT;
+ public static final String RENDERER_DELETE_FAILED;
+ public static final String ABORT_VALID_FAILED;
+
+ // Static blocks are generated once and spare memory.
+ static {
+ PCE_CALLING = "Calling PCE";
+ ABORT_PCE_FAILED = "Aborting: PCE calculation failed ";
+ PCE_FAILED = "PCE calculation failed";
+ ABORT_SERVICE_NON_COMPLIANT = "Aborting: non-compliant service ";
+ SERVICE_NON_COMPLIANT = "non-compliant service";
+ RENDERER_DELETE_FAILED = "Renderer service delete failed";
+ ABORT_VALID_FAILED = "Aborting: validation of service create request failed";
+ }
+
+ public static String serviceNotInDS(String serviceName) {
+ return "Service '" + serviceName + "' does not exist in datastore";
+ }
+
+ public static String serviceInService(String serviceName) {
+ return "Service '" + serviceName + "' is in 'inService' state";
+ }
+
+ private LogMessages() {
+ }
+ }
+
@Override
public ListenableFuture<RpcResult<ServiceCreateOutput>> serviceCreate(ServiceCreateInput input) {
- LOG.info("RPC service creation received");
+ LOG.info("RPC serviceCreate received");
// Validation
OperationResult validationResult = ServiceCreateValidation.validateServiceCreateRequest(
new ServiceInput(input), RpcActions.ServiceCreate);
if (! validationResult.isSuccess()) {
- LOG.warn("Aborting service create because validation of service create request failed: {}",
- validationResult.getResultMessage());
- return ModelMappingUtils.createCreateServiceReply(input, ResponseCodes.FINAL_ACK_YES,
+ LOG.warn("serviceCreate: {}", LogMessages.ABORT_VALID_FAILED);
+ return ModelMappingUtils.createCreateServiceReply(
+ input, ResponseCodes.FINAL_ACK_YES,
validationResult.getResultMessage(), ResponseCodes.RESPONSE_FAILED);
}
this.pceListenerImpl.setInput(new ServiceInput(input));
this.pceListenerImpl.setserviceDataStoreOperations(this.serviceDataStoreOperations);
this.rendererListenerImpl.setserviceDataStoreOperations(serviceDataStoreOperations);
this.rendererListenerImpl.setServiceInput(new ServiceInput(input));
- LOG.info("Commencing PCE");
+ LOG.debug("serviceCreate: {}", LogMessages.PCE_CALLING);
PathComputationRequestOutput output = this.pceServiceWrapper.performPCE(input, true);
- if (output != null) {
- LOG.info("Service compliant, serviceCreate in progress...");
- ConfigurationResponseCommon common = output.getConfigurationResponseCommon();
- return ModelMappingUtils.createCreateServiceReply(input, common.getAckFinalIndicator(),
- common.getResponseMessage(), common.getResponseCode());
- } else {
+ if (output == null) {
+ LOG.warn("serviceCreate: {}", LogMessages.ABORT_PCE_FAILED);
return ModelMappingUtils.createCreateServiceReply(input, ResponseCodes.FINAL_ACK_YES,
- "PCE calculation failed", ResponseCodes.RESPONSE_FAILED);
+ LogMessages.PCE_FAILED, ResponseCodes.RESPONSE_FAILED);
}
+ LOG.info("RPC serviceCreate in progress...");
+ ConfigurationResponseCommon common = output.getConfigurationResponseCommon();
+ return ModelMappingUtils.createCreateServiceReply(
+ input, common.getAckFinalIndicator(),
+ common.getResponseMessage(), common.getResponseCode());
}
@Override
public ListenableFuture<RpcResult<ServiceDeleteOutput>> serviceDelete(ServiceDeleteInput input) {
- LOG.info("RPC serviceDelete request received for {}", input.getServiceDeleteReqInfo().getServiceName());
- String message = "";
+ String serviceName = input.getServiceDeleteReqInfo().getServiceName();
+ LOG.info("RPC serviceDelete request received for {}", serviceName);
/*
* Upon receipt of service-deleteService RPC, service header and sdnc-request
- * header compliancy are verified.
+ * header compliance are verified.
*/
- LOG.info("checking Service Compliancy ...");
ComplianceCheckResult serviceHandlerCheckResult =
- ServicehandlerCompliancyCheck.check(
+ ServicehandlerComplianceCheck.check(
input.getServiceDeleteReqInfo().getServiceName(),
input.getSdncRequestHeader(), null, RpcActions.ServiceDelete, false, true);
- if (serviceHandlerCheckResult.hasPassed()) {
- LOG.info("Service compliant !");
- } else {
- LOG.info("Service is not compliant !");
- return ModelMappingUtils
- .createDeleteServiceReply(input, ResponseCodes.FINAL_ACK_YES,
- "Service not compliant !", ResponseCodes.RESPONSE_FAILED);
+ if (!serviceHandlerCheckResult.hasPassed()) {
+ LOG.warn("serviceDelete: {}", LogMessages.ABORT_SERVICE_NON_COMPLIANT);
+ return ModelMappingUtils.createDeleteServiceReply(
+ input, ResponseCodes.FINAL_ACK_YES,
+ LogMessages.SERVICE_NON_COMPLIANT, ResponseCodes.RESPONSE_FAILED);
}
//Check presence of service to be deleted
- String serviceName = input.getServiceDeleteReqInfo().getServiceName();
- LOG.info("serviceName : {}", serviceName);
- try {
- Optional<Services> service = this.serviceDataStoreOperations.getService(serviceName);
- if (!service.isPresent()) {
- message = "Service '" + serviceName + "' does not exist in datastore";
- LOG.error(message);
- return ModelMappingUtils.createDeleteServiceReply(input, ResponseCodes.FINAL_ACK_YES,
- message, ResponseCodes.RESPONSE_FAILED);
- }
- } catch (NullPointerException e) {
- LOG.error("failed to get service '{}' from datastore : ", serviceName, e);
- message = "Service '" + serviceName + "' does not exist in datastore";
- LOG.error(message);
- return ModelMappingUtils.createDeleteServiceReply(input, ResponseCodes.FINAL_ACK_YES, message,
- ResponseCodes.RESPONSE_FAILED);
+//TODO check if an expected bug was justifying this NPE handling
+// try {
+ Optional<Services> service = this.serviceDataStoreOperations.getService(serviceName);
+// } catch (NullPointerException e) {
+// LOG.error("Something wrong when retrieving service '{}' from datastore : ", serviceName, e);
+// return ModelMappingUtils.createDeleteServiceReply(
+// input, ResponseCodes.FINAL_ACK_YES,
+// LogMessages.serviceNotInDS(serviceName), ResponseCodes.RESPONSE_FAILED);
+// }
+ if (!service.isPresent()) {
+ LOG.warn("serviceDelete: {}", LogMessages.serviceNotInDS(serviceName));
+ return ModelMappingUtils.createDeleteServiceReply(
+ input, ResponseCodes.FINAL_ACK_YES,
+ LogMessages.serviceNotInDS(serviceName), ResponseCodes.RESPONSE_FAILED);
}
- LOG.info("Service '{}' present in datastore !", serviceName);
+ LOG.debug("serviceDelete: Service '{}' found in datastore", serviceName);
this.pceListenerImpl.setInput(new ServiceInput(input));
this.pceListenerImpl.setServiceReconfigure(false);
this.pceListenerImpl.setserviceDataStoreOperations(this.serviceDataStoreOperations);
this.rendererListenerImpl.setserviceDataStoreOperations(serviceDataStoreOperations);
this.rendererListenerImpl.setServiceInput(new ServiceInput(input));
org.opendaylight.yang.gen.v1.http.org.opendaylight.transportpce.renderer.rev171017
- .ServiceDeleteInput serviceDeleteInput = ModelMappingUtils.createServiceDeleteInput(
- new ServiceInput(input));
+ .ServiceDeleteInput serviceDeleteInput =
+ ModelMappingUtils.createServiceDeleteInput(new ServiceInput(input));
org.opendaylight.yang.gen.v1.http.org.opendaylight.transportpce.renderer.rev171017.ServiceDeleteOutput output =
- this.rendererServiceWrapper.performRenderer(serviceDeleteInput,
- ServiceNotificationTypes.ServiceDeleteResult);
- if (output != null) {
- LOG.info("Service present in datastore, service-delete in progress...");
- ConfigurationResponseCommon common = output.getConfigurationResponseCommon();
- return ModelMappingUtils.createDeleteServiceReply(input, common.getAckFinalIndicator(),
- common.getResponseMessage(), common.getResponseCode());
- } else {
- return ModelMappingUtils.createDeleteServiceReply(input, ResponseCodes.FINAL_ACK_YES,
- "Renderer service delete failed !", ResponseCodes.RESPONSE_FAILED);
+ this.rendererServiceWrapper.performRenderer(
+ serviceDeleteInput, ServiceNotificationTypes.ServiceDeleteResult);
+
+ if (output == null) {
+ LOG.error("serviceDelete: {}", LogMessages.RENDERER_DELETE_FAILED);
+ return ModelMappingUtils.createDeleteServiceReply(
+ input, ResponseCodes.FINAL_ACK_YES,
+ LogMessages.RENDERER_DELETE_FAILED, ResponseCodes.RESPONSE_FAILED);
}
+
+ LOG.debug("RPC serviceDelete in progress...");
+ ConfigurationResponseCommon common = output.getConfigurationResponseCommon();
+ return ModelMappingUtils.createDeleteServiceReply(
+ input, common.getAckFinalIndicator(),
+ common.getResponseMessage(), common.getResponseCode());
}
@Override
public ListenableFuture<RpcResult<ServiceFeasibilityCheckOutput>> serviceFeasibilityCheck(
ServiceFeasibilityCheckInput input) {
- LOG.info("RPC service feasibility check received");
+ LOG.info("RPC serviceFeasibilityCheck received");
// Validation
ServiceInput serviceInput = new ServiceInput(input);
OperationResult validationResult = ServiceCreateValidation.validateServiceCreateRequest(serviceInput,
RpcActions.ServiceFeasibilityCheck);
if (! validationResult.isSuccess()) {
- LOG.warn("Aborting service feasibility check because validation of service create request failed: {}",
- validationResult.getResultMessage());
- return ModelMappingUtils.createCreateServiceReply(input, ResponseCodes.FINAL_ACK_YES,
+ LOG.warn("serviceFeasabilityCheck: {}", LogMessages.ABORT_VALID_FAILED);
+ return ModelMappingUtils.createCreateServiceReply(
+ input, ResponseCodes.FINAL_ACK_YES,
validationResult.getResultMessage(), ResponseCodes.RESPONSE_FAILED);
}
this.pceListenerImpl.setInput(new ServiceInput(input));
this.pceListenerImpl.setserviceDataStoreOperations(this.serviceDataStoreOperations);
this.rendererListenerImpl.setserviceDataStoreOperations(serviceDataStoreOperations);
this.rendererListenerImpl.setServiceInput(new ServiceInput(input));
- LOG.info("Commencing PCE");
+ LOG.debug("serviceFeasabilityCheck: {}", LogMessages.PCE_CALLING);
PathComputationRequestOutput output = this.pceServiceWrapper.performPCE(input, true);
- if (output != null) {
- LOG.info("Service compliant, serviceFeasibilityCheck in progress...");
- ConfigurationResponseCommon common = output.getConfigurationResponseCommon();
- return ModelMappingUtils.createCreateServiceReply(input, common.getAckFinalIndicator(),
- common.getResponseMessage(), common.getResponseCode());
- } else {
+ if (output == null) {
+ LOG.warn("serviceFeasabilityCheck: {}", LogMessages.ABORT_PCE_FAILED);
return ModelMappingUtils.createCreateServiceReply(input, ResponseCodes.FINAL_ACK_YES,
- "PCE calculation failed", ResponseCodes.RESPONSE_FAILED);
+ LogMessages.PCE_FAILED, ResponseCodes.RESPONSE_FAILED);
}
+ LOG.info("RPC serviceFeasibilityCheck in progress...");
+ ConfigurationResponseCommon common = output.getConfigurationResponseCommon();
+ return ModelMappingUtils.createCreateServiceReply(
+ input, common.getAckFinalIndicator(),
+ common.getResponseMessage(), common.getResponseCode());
}
@Override
public ListenableFuture<RpcResult<ServiceReconfigureOutput>> serviceReconfigure(ServiceReconfigureInput input) {
- LOG.info("RPC service reconfigure received");
- String message = "";
- Optional<Services> servicesObject = this.serviceDataStoreOperations.getService(input.getServiceName());
- if (servicesObject.isPresent()) {
- LOG.info("Service '{}' is present", input.getServiceName());
- OperationResult validationResult = ServiceCreateValidation
- .validateServiceCreateRequest(new ServiceInput(input), RpcActions.ServiceReconfigure);
- if (!validationResult.isSuccess()) {
- LOG.warn("Aborting service reconfigure because validation of service create request failed: {}",
- validationResult.getResultMessage());
- return ModelMappingUtils.createCreateServiceReply(input, validationResult.getResultMessage(),
- RpcStatus.Failed);
- }
- this.pceListenerImpl.setInput(new ServiceInput(input));
- this.pceListenerImpl.setServiceReconfigure(true);
- this.pceListenerImpl.setserviceDataStoreOperations(this.serviceDataStoreOperations);
- this.rendererListenerImpl.setserviceDataStoreOperations(serviceDataStoreOperations);
- this.rendererListenerImpl.setServiceInput(new ServiceInput(input));
- org.opendaylight.yang.gen.v1.http.org.opendaylight.transportpce.renderer.rev171017
- .ServiceDeleteInput serviceDeleteInput =
- ModelMappingUtils.createServiceDeleteInput(new ServiceInput(input));
- org.opendaylight.yang.gen.v1.http.org.opendaylight.transportpce.renderer.rev171017
- .ServiceDeleteOutput output = this.rendererServiceWrapper.performRenderer(serviceDeleteInput,
- ServiceNotificationTypes.ServiceDeleteResult);
- if (output != null) {
- LOG.info("Service compliant, service reconfigure in progress...");
- ConfigurationResponseCommon common = output.getConfigurationResponseCommon();
- return ModelMappingUtils.createCreateServiceReply(input, common.getResponseMessage(),
- RpcStatus.Successful);
- } else {
- return ModelMappingUtils.createCreateServiceReply(input, "Renderer service delete failed !",
- RpcStatus.Successful);
- }
- } else {
- LOG.error("Service '{}' is not present", input.getServiceName());
- message = "Service '" + input.getServiceName() + "' is not present";
- return ModelMappingUtils.createCreateServiceReply(input, message, RpcStatus.Failed);
+ String serviceName = input.getServiceName();
+ LOG.info("RPC serviceReconfigure received for {}", serviceName);
+ Optional<Services> servicesObject = this.serviceDataStoreOperations.getService(serviceName);
+ if (!servicesObject.isPresent()) {
+ LOG.warn("serviceReconfigure: {}", LogMessages.serviceNotInDS(serviceName));
+ return ModelMappingUtils.createCreateServiceReply(
+ input,
+ LogMessages.serviceNotInDS(serviceName), RpcStatus.Failed);
+ }
+ LOG.debug("Service '{}' found in datastore", serviceName);
+ OperationResult validationResult = ServiceCreateValidation
+ .validateServiceCreateRequest(new ServiceInput(input), RpcActions.ServiceReconfigure);
+ if (!validationResult.isSuccess()) {
+ LOG.warn("serviceReconfigure: {}", LogMessages.ABORT_VALID_FAILED);
+ return ModelMappingUtils.createCreateServiceReply(
+ input,
+ validationResult.getResultMessage(), RpcStatus.Failed);
}
+ this.pceListenerImpl.setInput(new ServiceInput(input));
+ this.pceListenerImpl.setServiceReconfigure(true);
+ this.pceListenerImpl.setserviceDataStoreOperations(this.serviceDataStoreOperations);
+ this.rendererListenerImpl.setserviceDataStoreOperations(serviceDataStoreOperations);
+ this.rendererListenerImpl.setServiceInput(new ServiceInput(input));
+ org.opendaylight.yang.gen.v1.http.org.opendaylight.transportpce.renderer.rev171017
+ .ServiceDeleteInput serviceDeleteInput =
+ ModelMappingUtils.createServiceDeleteInput(new ServiceInput(input));
+ org.opendaylight.yang.gen.v1.http.org.opendaylight.transportpce.renderer.rev171017
+ .ServiceDeleteOutput output = this.rendererServiceWrapper.performRenderer(serviceDeleteInput,
+ ServiceNotificationTypes.ServiceDeleteResult);
+ if (output == null) {
+ LOG.error("serviceReconfigure: {}", LogMessages.RENDERER_DELETE_FAILED);
+ return ModelMappingUtils.createCreateServiceReply(
+ input,
+ LogMessages.RENDERER_DELETE_FAILED, RpcStatus.Successful);
+ //TODO check if RpcStatus.Successful is really expected here
+ }
+ LOG.info("RPC serviceReconfigure in progress...");
+ ConfigurationResponseCommon common = output.getConfigurationResponseCommon();
+ return ModelMappingUtils.createCreateServiceReply(
+ input,
+ common.getResponseMessage(), RpcStatus.Successful);
}
@Override
public ListenableFuture<RpcResult<ServiceRestorationOutput>> serviceRestoration(ServiceRestorationInput input) {
- LOG.info("RPC service restoration received");
- String message = "";
String serviceName = input.getServiceName();
+ LOG.info("RPC serviceRestoration received for {}", serviceName);
Optional<Services> servicesObject = this.serviceDataStoreOperations.getService(serviceName);
- if (servicesObject.isPresent()) {
- Services service = servicesObject.get();
- State state = service.getOperationalState();
- if (state != State.InService) {
- ServiceDeleteInputBuilder deleteInputBldr = new ServiceDeleteInputBuilder();
- DateTimeFormatter dtf = DateTimeFormatter.ofPattern("yyyy-MM-dd'T'HH:mm:ssxxx");
- OffsetDateTime offsetDateTime = OffsetDateTime.now(ZoneOffset.UTC);
- DateAndTime datetime = new DateAndTime(dtf.format(offsetDateTime));
- deleteInputBldr.setServiceDeleteReqInfo(new ServiceDeleteReqInfoBuilder()
- .setServiceName(serviceName).setDueDate(datetime)
- .setTailRetention(TailRetention.No).build());
- SdncRequestHeaderBuilder sdncBuilder = new SdncRequestHeaderBuilder()
- .setNotificationUrl(service.getSdncRequestHeader().getNotificationUrl())
- .setRequestId(service.getSdncRequestHeader().getRequestId())
- .setRequestSystemId(service.getSdncRequestHeader().getRequestSystemId())
- .setRpcAction(RpcActions.ServiceDelete);
- deleteInputBldr.setSdncRequestHeader(sdncBuilder.build());
- ServiceInput serviceInput = new ServiceInput(deleteInputBldr.build());
- serviceInput.setServiceAEnd(service.getServiceAEnd());
- serviceInput.setServiceZEnd(service.getServiceZEnd());
- serviceInput.setConnectionType(service.getConnectionType());
- HardConstraints hardConstraints = service.getHardConstraints();
- if (hardConstraints != null) {
- SoftConstraints softConstraints = service.getSoftConstraints();
- if (softConstraints != null) {
- LOG.info("converting hard constraints to soft constraints ...");
- serviceInput.setSoftConstraints(
- DowngradeConstraints.updateSoftConstraints(hardConstraints, softConstraints));
- serviceInput.setHardConstraints(DowngradeConstraints.downgradeHardConstraints(hardConstraints));
- } else {
- LOG.warn("service '{}' SoftConstraints is not set !", serviceName);
- serviceInput.setSoftConstraints(DowngradeConstraints.convertToSoftConstraints(hardConstraints));
- serviceInput.setHardConstraints(DowngradeConstraints.downgradeHardConstraints(hardConstraints));
- }
- } else {
- LOG.warn("service '{}' HardConstraints is not set !", serviceName);
- }
- this.pceListenerImpl.setInput(serviceInput);
- this.pceListenerImpl.setServiceReconfigure(true);
- this.pceListenerImpl.setserviceDataStoreOperations(this.serviceDataStoreOperations);
- this.rendererListenerImpl.setServiceInput(serviceInput);
- this.rendererListenerImpl.setserviceDataStoreOperations(this.serviceDataStoreOperations);
- org.opendaylight.yang.gen.v1.http.org.opendaylight.transportpce.renderer.rev171017
- .ServiceDeleteInput serviceDeleteInput = ModelMappingUtils.createServiceDeleteInput(
- new ServiceInput(deleteInputBldr.build()));
- org.opendaylight.yang.gen.v1.http.org.opendaylight.transportpce.renderer.rev171017
- .ServiceDeleteOutput output = this.rendererServiceWrapper.performRenderer(serviceDeleteInput,
- ServiceNotificationTypes.ServiceDeleteResult);
- if (output != null) {
- LOG.info("Service present in datastore, service-restore in progress...");
- ConfigurationResponseCommon common = output.getConfigurationResponseCommon();
- return ModelMappingUtils.createRestoreServiceReply(common.getResponseMessage(),
- RpcStatus.Successful);
- } else {
- return ModelMappingUtils.createRestoreServiceReply("Renderer service delete failed !",
- RpcStatus.Failed);
- }
+
+ if (!servicesObject.isPresent()) {
+ LOG.warn("serviceRestoration: {}", LogMessages.serviceNotInDS(serviceName));
+ return ModelMappingUtils.createRestoreServiceReply(
+ LogMessages.serviceNotInDS(serviceName), RpcStatus.Failed);
+ }
+
+ Services service = servicesObject.get();
+ State state = service.getOperationalState();
+
+ if (state == State.InService) {
+ LOG.error("serviceRestoration: {}", LogMessages.serviceInService(serviceName));
+ return ModelMappingUtils.createRestoreServiceReply(
+ LogMessages.serviceInService(serviceName), RpcStatus.Failed);
+ }
+
+ DateTimeFormatter dtf = DateTimeFormatter.ofPattern("yyyy-MM-dd'T'HH:mm:ssxxx");
+ OffsetDateTime offsetDateTime = OffsetDateTime.now(ZoneOffset.UTC);
+ DateAndTime datetime = new DateAndTime(dtf.format(offsetDateTime));
+ SdncRequestHeaderBuilder sdncBuilder = new SdncRequestHeaderBuilder()
+ .setNotificationUrl(service.getSdncRequestHeader().getNotificationUrl())
+ .setRequestId(service.getSdncRequestHeader().getRequestId())
+ .setRequestSystemId(service.getSdncRequestHeader().getRequestSystemId())
+ .setRpcAction(RpcActions.ServiceDelete);
+ ServiceDeleteInputBuilder deleteInputBldr = new ServiceDeleteInputBuilder()
+ .setServiceDeleteReqInfo(new ServiceDeleteReqInfoBuilder()
+ .setServiceName(serviceName)
+ .setDueDate(datetime)
+ .setTailRetention(TailRetention.No).build())
+ .setSdncRequestHeader(sdncBuilder.build());
+ ServiceInput serviceInput = new ServiceInput(deleteInputBldr.build());
+ serviceInput.setServiceAEnd(service.getServiceAEnd());
+ serviceInput.setServiceZEnd(service.getServiceZEnd());
+ serviceInput.setConnectionType(service.getConnectionType());
+ HardConstraints hardConstraints = service.getHardConstraints();
+ if (hardConstraints == null) {
+ LOG.warn("service '{}' HardConstraints is not set !", serviceName);
+ } else {
+ SoftConstraints softConstraints = service.getSoftConstraints();
+ if (softConstraints == null) {
+ LOG.warn("service '{}' SoftConstraints is not set !", serviceName);
+ serviceInput.setSoftConstraints(DowngradeConstraints.convertToSoftConstraints(hardConstraints));
+ serviceInput.setHardConstraints(DowngradeConstraints.downgradeHardConstraints(hardConstraints));
} else {
- LOG.error("Service '{}' is in 'inService' state", input.getServiceName());
- message = "Service '" + input.getServiceName() + "' is in 'inService' state";
- return ModelMappingUtils.createRestoreServiceReply(message, RpcStatus.Failed);
+ LOG.info("converting hard constraints to soft constraints ...");
+ serviceInput.setSoftConstraints(
+ DowngradeConstraints.updateSoftConstraints(hardConstraints, softConstraints));
+ serviceInput.setHardConstraints(DowngradeConstraints.downgradeHardConstraints(hardConstraints));
}
- } else {
- LOG.error("Service '{}' is not present", input.getServiceName());
- message = "Service '" + input.getServiceName() + "' is not present";
- return ModelMappingUtils.createRestoreServiceReply(message, RpcStatus.Failed);
}
+ this.pceListenerImpl.setInput(serviceInput);
+ this.pceListenerImpl.setServiceReconfigure(true);
+ this.pceListenerImpl.setserviceDataStoreOperations(this.serviceDataStoreOperations);
+ this.rendererListenerImpl.setServiceInput(serviceInput);
+ this.rendererListenerImpl.setserviceDataStoreOperations(this.serviceDataStoreOperations);
+ org.opendaylight.yang.gen.v1.http.org.opendaylight.transportpce.renderer.rev171017
+ .ServiceDeleteInput serviceDeleteInput = ModelMappingUtils.createServiceDeleteInput(
+ new ServiceInput(deleteInputBldr.build()));
+ org.opendaylight.yang.gen.v1.http.org.opendaylight.transportpce.renderer.rev171017
+ .ServiceDeleteOutput output = this.rendererServiceWrapper.performRenderer(serviceDeleteInput,
+ ServiceNotificationTypes.ServiceDeleteResult);
+ if (output == null) {
+ LOG.error("serviceRestoration: {}", LogMessages.RENDERER_DELETE_FAILED);
+ return ModelMappingUtils.createRestoreServiceReply(
+ LogMessages.RENDERER_DELETE_FAILED, RpcStatus.Failed);
+ }
+ LOG.info("RPC serviceRestore in progress...");
+ ConfigurationResponseCommon common = output.getConfigurationResponseCommon();
+ return ModelMappingUtils.createRestoreServiceReply(
+ common.getResponseMessage(), RpcStatus.Successful);
+
}
@Override
@Override
public ListenableFuture<RpcResult<ServiceRerouteOutput>> serviceReroute(ServiceRerouteInput input) {
- LOG.info("RPC service reroute received");
- String message = "";
- Optional<Services> servicesObject = this.serviceDataStoreOperations.getService(input.getServiceName());
- if (servicesObject.isPresent()) {
- Services service = servicesObject.get();
- ServiceDeleteInputBuilder deleteInputBldr = new ServiceDeleteInputBuilder();
- DateTimeFormatter dtf = DateTimeFormatter.ofPattern("yyyy-MM-dd'T'HH:mm:ssxxx");
- OffsetDateTime offsetDateTime = OffsetDateTime.now(ZoneOffset.UTC);
- DateAndTime datetime = new DateAndTime(dtf.format(offsetDateTime));
- deleteInputBldr.setServiceDeleteReqInfo(new ServiceDeleteReqInfoBuilder()
- .setServiceName(input.getServiceName()).setDueDate(datetime)
- .setTailRetention(TailRetention.No).build());
- SdncRequestHeaderBuilder sdncBuilder = new SdncRequestHeaderBuilder()
+ String serviceName = input.getServiceName();
+ LOG.info("RPC serviceReroute received for {}", serviceName);
+ Optional<Services> servicesObject = this.serviceDataStoreOperations.getService(serviceName);
+ if (!servicesObject.isPresent()) {
+ LOG.warn("serviceReroute: {}", LogMessages.serviceNotInDS(serviceName));
+ return ModelMappingUtils.createRerouteServiceReply(
+ input, ResponseCodes.FINAL_ACK_NO,
+ LogMessages.serviceNotInDS(serviceName), RpcStatus.Failed);
+ }
+ Services service = servicesObject.get();
+ DateTimeFormatter dtf = DateTimeFormatter.ofPattern("yyyy-MM-dd'T'HH:mm:ssxxx");
+ OffsetDateTime offsetDateTime = OffsetDateTime.now(ZoneOffset.UTC);
+ DateAndTime datetime = new DateAndTime(dtf.format(offsetDateTime));
+ SdncRequestHeaderBuilder sdncBuilder = new SdncRequestHeaderBuilder()
.setNotificationUrl(service.getSdncRequestHeader().getNotificationUrl())
.setRequestId(service.getSdncRequestHeader().getRequestId())
.setRequestSystemId(service.getSdncRequestHeader().getRequestSystemId())
.setRpcAction(RpcActions.ServiceDelete);
- deleteInputBldr.setSdncRequestHeader(sdncBuilder.build());
- ServiceInput serviceInput = new ServiceInput(deleteInputBldr.build());
- serviceInput.setServiceAEnd(service.getServiceAEnd());
- serviceInput.setServiceZEnd(service.getServiceZEnd());
- serviceInput.setConnectionType(service.getConnectionType());
- this.pceListenerImpl.setInput(serviceInput);
- this.pceListenerImpl.setServiceReconfigure(true);
- this.pceListenerImpl.setserviceDataStoreOperations(this.serviceDataStoreOperations);
- this.rendererListenerImpl.setServiceInput(serviceInput);
- this.rendererListenerImpl.setserviceDataStoreOperations(this.serviceDataStoreOperations);
- org.opendaylight.yang.gen.v1.http.org.opendaylight.transportpce.renderer.rev171017
- .ServiceDeleteInput serviceDeleteInput = ModelMappingUtils.createServiceDeleteInput(
- new ServiceInput(deleteInputBldr.build()));
- org.opendaylight.yang.gen.v1.http.org.opendaylight.transportpce.renderer.rev171017
- .ServiceDeleteOutput output = this.rendererServiceWrapper.performRenderer(serviceDeleteInput,
- ServiceNotificationTypes.ServiceDeleteResult);
- if (output != null) {
- LOG.info("Service present in datastore, service-reroute in progress...");
- ConfigurationResponseCommon common = output.getConfigurationResponseCommon();
- return ModelMappingUtils.createRerouteServiceReply(input, common.getAckFinalIndicator(),
- common.getResponseMessage(), RpcStatus.Successful);
- } else {
- return ModelMappingUtils.createRerouteServiceReply(input, ResponseCodes.FINAL_ACK_YES,
- "Renderer service delete failed !", RpcStatus.Failed);
- }
- } else {
- LOG.error("Service '{}' is not present", input.getServiceName());
- message = "Service '" + input.getServiceName() + "' is not present";
- return ModelMappingUtils.createRerouteServiceReply(input, ResponseCodes.FINAL_ACK_NO, message,
- RpcStatus.Failed);
+ ServiceDeleteInputBuilder deleteInputBldr = new ServiceDeleteInputBuilder()
+ .setServiceDeleteReqInfo(new ServiceDeleteReqInfoBuilder()
+ .setServiceName(serviceName).setDueDate(datetime)
+ .setTailRetention(TailRetention.No).build())
+ .setSdncRequestHeader(sdncBuilder.build());
+ ServiceInput serviceInput = new ServiceInput(deleteInputBldr.build());
+ serviceInput.setServiceAEnd(service.getServiceAEnd());
+ serviceInput.setServiceZEnd(service.getServiceZEnd());
+ serviceInput.setConnectionType(service.getConnectionType());
+ this.pceListenerImpl.setInput(serviceInput);
+ this.pceListenerImpl.setServiceReconfigure(true);
+ this.pceListenerImpl.setserviceDataStoreOperations(this.serviceDataStoreOperations);
+ this.rendererListenerImpl.setServiceInput(serviceInput);
+ this.rendererListenerImpl.setserviceDataStoreOperations(this.serviceDataStoreOperations);
+ org.opendaylight.yang.gen.v1.http.org.opendaylight.transportpce.renderer.rev171017
+ .ServiceDeleteInput serviceDeleteInput = ModelMappingUtils.createServiceDeleteInput(
+ new ServiceInput(deleteInputBldr.build()));
+ org.opendaylight.yang.gen.v1.http.org.opendaylight.transportpce.renderer.rev171017
+ .ServiceDeleteOutput output = this.rendererServiceWrapper.performRenderer(serviceDeleteInput,
+ ServiceNotificationTypes.ServiceDeleteResult);
+ if (output == null) {
+ LOG.error("serviceReroute: {}", LogMessages.RENDERER_DELETE_FAILED);
+ return ModelMappingUtils.createRerouteServiceReply(
+ input, ResponseCodes.FINAL_ACK_YES,
+ LogMessages.RENDERER_DELETE_FAILED, RpcStatus.Failed);
}
+ LOG.info("RPC ServiceReroute in progress...");
+ ConfigurationResponseCommon common = output.getConfigurationResponseCommon();
+ return ModelMappingUtils.createRerouteServiceReply(
+ input, common.getAckFinalIndicator(),
+ common.getResponseMessage(), RpcStatus.Successful);
}
@Override
@Override
public ListenableFuture<RpcResult<TempServiceDeleteOutput>> tempServiceDelete(TempServiceDeleteInput input) {
- LOG.info("RPC temp serviceDelete request received for {}", input.getCommonId());
- String message = "";
+ String commonId = input.getCommonId();
+ LOG.info("RPC temp serviceDelete request received for {}", commonId);
/*
* Upon receipt of service-deleteService RPC, service header and sdnc-request
* header compliancy are verified.
*/
- LOG.info("checking Service Compliancy ...");
- ComplianceCheckResult serviceHandlerCheckResult = ServicehandlerCompliancyCheck.check(input.getCommonId(),
- null, null, RpcActions.ServiceDelete, false, false);
- if (serviceHandlerCheckResult.hasPassed()) {
- LOG.info("Service compliant !");
- } else {
- LOG.info("Service is not compliant !");
- return ModelMappingUtils.createDeleteServiceReply(input, ResponseCodes.FINAL_ACK_YES,
- "Service not compliant !", ResponseCodes.RESPONSE_FAILED);
+ LOG.debug("checking Service Compliance ...");
+ ComplianceCheckResult serviceHandlerCheckResult = ServicehandlerComplianceCheck.check(
+ commonId, null, null, RpcActions.ServiceDelete, false, false
+ );
+ if (!serviceHandlerCheckResult.hasPassed()) {
+ LOG.warn("tempServiceDelete: {}", LogMessages.ABORT_SERVICE_NON_COMPLIANT);
+ return ModelMappingUtils.createDeleteServiceReply(
+ input, ResponseCodes.FINAL_ACK_YES,
+ LogMessages.SERVICE_NON_COMPLIANT, ResponseCodes.RESPONSE_FAILED);
}
//Check presence of service to be deleted
- String commonId = input.getCommonId();
- LOG.info("service common-id : {}", commonId);
- try {
- Optional<org.opendaylight.yang.gen.v1.http.org.openroadm.service.rev190531.temp.service.list
- .Services> service = this.serviceDataStoreOperations.getTempService(commonId);
- if (!service.isPresent()) {
- message = "Service '" + commonId + "' does not exist in datastore";
- LOG.error(message);
- return ModelMappingUtils.createDeleteServiceReply(input, ResponseCodes.FINAL_ACK_YES,
- message, ResponseCodes.RESPONSE_FAILED);
- }
- } catch (NullPointerException e) {
- LOG.info("failed to get service '{}' from datastore : ", commonId, e);
+ LOG.debug("service common-id '{}' is compliant", commonId);
+//TODO check if an expected bug was justifying this NPE handling
+// try {
+ Optional<org.opendaylight.yang.gen.v1.http.org.openroadm.service.rev190531.temp.service.list.Services>
+ service =
+ this.serviceDataStoreOperations.getTempService(commonId);
+// } catch (NullPointerException e) {
+// LOG.info("failed to get service '{}' from datastore : ", commonId, e);
+// return ModelMappingUtils.createDeleteServiceReply(
+// input, ResponseCodes.FINAL_ACK_YES,
+// LogMessages.serviceNotInDS(CommonId), ResponseCodes.RESPONSE_FAILED);
+// }
+ if (!service.isPresent()) {
+ LOG.error("tempServiceDelete: {}", LogMessages.serviceNotInDS(commonId));
+ return ModelMappingUtils.createDeleteServiceReply(
+ input, ResponseCodes.FINAL_ACK_YES,
+ LogMessages.serviceNotInDS(commonId), ResponseCodes.RESPONSE_FAILED);
}
LOG.info("Service '{}' present in datastore !", commonId);
this.rendererListenerImpl.setTempService(true);
org.opendaylight.yang.gen.v1.http.org.opendaylight.transportpce.renderer.rev171017.ServiceDeleteOutput output =
this.rendererServiceWrapper.performRenderer(input, ServiceNotificationTypes.ServiceDeleteResult);
- if (output != null) {
- LOG.info("Temp Service present in datastore, service-delete in progress...");
- ConfigurationResponseCommon common = output.getConfigurationResponseCommon();
- return ModelMappingUtils.createDeleteServiceReply(input, common.getAckFinalIndicator(),
- common.getResponseMessage(), common.getResponseCode());
- } else {
- return ModelMappingUtils.createDeleteServiceReply(input, ResponseCodes.FINAL_ACK_YES,
- "Renderer service delete failed !", ResponseCodes.RESPONSE_FAILED);
+ if (output == null) {
+ LOG.error("tempServiceDelete: {}", LogMessages.RENDERER_DELETE_FAILED);
+ return ModelMappingUtils.createDeleteServiceReply(
+ input, ResponseCodes.FINAL_ACK_YES,
+ LogMessages.RENDERER_DELETE_FAILED, ResponseCodes.RESPONSE_FAILED);
}
+ LOG.info("RPC tempServiceDelete in progress...");
+ ConfigurationResponseCommon common = output.getConfigurationResponseCommon();
+ return ModelMappingUtils.createDeleteServiceReply(
+ input, common.getAckFinalIndicator(),
+ common.getResponseMessage(), common.getResponseCode());
}
@Override
public ListenableFuture<RpcResult<TempServiceCreateOutput>> tempServiceCreate(TempServiceCreateInput input) {
- LOG.info("RPC temp service creation received");
+ LOG.info("RPC tempServiceCreate received");
// Validation
OperationResult validationResult = ServiceCreateValidation.validateServiceCreateRequest(
new ServiceInput(input), RpcActions.TempServiceCreate);
if (! validationResult.isSuccess()) {
- LOG.warn("Aborting service create because validation of service create request failed: {}",
- validationResult.getResultMessage());
- return ModelMappingUtils.createCreateServiceReply(input, ResponseCodes.FINAL_ACK_YES,
+ LOG.warn("tempServiceCreate: {}", LogMessages.ABORT_VALID_FAILED);
+ return ModelMappingUtils.createCreateServiceReply(
+ input, ResponseCodes.FINAL_ACK_YES,
validationResult.getResultMessage(), ResponseCodes.RESPONSE_FAILED);
}
// Starting service create operation
- LOG.info("Commencing PCE");
+ LOG.debug("tempServiceCreate: {}", LogMessages.PCE_CALLING);
this.pceListenerImpl.setInput(new ServiceInput(input));
this.pceListenerImpl.setServiceReconfigure(false);
this.pceListenerImpl.setserviceDataStoreOperations(this.serviceDataStoreOperations);
this.rendererListenerImpl.setServiceInput(new ServiceInput(input));
this.rendererListenerImpl.setTempService(true);
PathComputationRequestOutput output = this.pceServiceWrapper.performPCE(input, true);
- if (output != null) {
- LOG.info("Service compliant, temp serviceCreate in progress...");
- ConfigurationResponseCommon common = output.getConfigurationResponseCommon();
- return ModelMappingUtils.createCreateServiceReply(input, common.getAckFinalIndicator(),
- common.getResponseMessage(), common.getResponseCode());
- } else {
- return ModelMappingUtils.createCreateServiceReply(input, ResponseCodes.FINAL_ACK_YES,
- "PCE calculation failed", ResponseCodes.RESPONSE_FAILED);
+ if (output == null) {
+ LOG.warn("tempServiceCreate: {}", LogMessages.ABORT_PCE_FAILED);
+ return ModelMappingUtils.createCreateServiceReply(
+ input, ResponseCodes.FINAL_ACK_YES,
+ LogMessages.PCE_FAILED, ResponseCodes.RESPONSE_FAILED);
}
+ LOG.info("RPC tempServiceCreate in progress...");
+ ConfigurationResponseCommon common = output.getConfigurationResponseCommon();
+ return ModelMappingUtils.createCreateServiceReply(
+ input, common.getAckFinalIndicator(),
+ common.getResponseMessage(), common.getResponseCode());
}
@Override
public class ServiceDataStoreOperationsImpl implements ServiceDataStoreOperations {
private static final Logger LOG = LoggerFactory.getLogger(ServiceDataStoreOperationsImpl.class);
- private static final String SUCCESSFUL_MESSAGE = "Successful";
private DataBroker dataBroker;
+ // This is class is public so that these messages can be accessed from Junit (avoid duplications).
+ public static final class LogMessages {
+
+ public static final String SUCCESSFUL_MESSAGE;
+ public static final String SERVICE_NOT_FOUND;
+
+ // Static blocks are generated once and spare memory.
+ static {
+ SUCCESSFUL_MESSAGE = "Successful";
+ SERVICE_NOT_FOUND = "Service not found";
+ }
+
+ public static String failedTo(String action, String serviceName) {
+ return "Failed to " + action + " service " + serviceName;
+ }
+
+ private LogMessages() {
+ }
+ }
+
+
public ServiceDataStoreOperationsImpl(DataBroker dataBroker) {
this.dataBroker = dataBroker;
}
FluentFuture<? extends @NonNull CommitInfo> future = transaction.commit();
future.get(Timeouts.DATASTORE_WRITE, TimeUnit.MILLISECONDS);
} catch (InterruptedException | ExecutionException | TimeoutException e) {
- LOG.warn("init failed: {}", e.getMessage());
+ LOG.error("init failed: ", e);
}
}
FluentFuture<? extends @NonNull CommitInfo> future = transaction.commit();
future.get(Timeouts.DATASTORE_WRITE, TimeUnit.MILLISECONDS);
} catch (InterruptedException | ExecutionException | TimeoutException e) {
- LOG.warn("init failed: {}", e.getMessage());
+ LOG.error("init failed: ", e);
}
}
InstanceIdentifier.create(ServiceList.class).child(Services.class, new ServicesKey(serviceName));
writeTx.delete(LogicalDatastoreType.OPERATIONAL, iid);
writeTx.commit().get(Timeouts.DATASTORE_DELETE, TimeUnit.MILLISECONDS);
- return OperationResult.ok(SUCCESSFUL_MESSAGE);
+ return OperationResult.ok(LogMessages.SUCCESSFUL_MESSAGE);
} catch (TimeoutException | InterruptedException | ExecutionException e) {
- String message = "Failed to delete service " + serviceName + " from Service List";
- LOG.warn(message, e);
- return OperationResult.failed(message);
+ LOG.warn("deleteService : {}", LogMessages.failedTo("delete", serviceName), e);
+ return OperationResult.failed(LogMessages.failedTo("delete", serviceName));
}
}
.ServicesKey(commonId));
writeTx.delete(LogicalDatastoreType.OPERATIONAL, iid);
writeTx.commit().get(Timeouts.DATASTORE_DELETE, TimeUnit.MILLISECONDS);
- return OperationResult.ok(SUCCESSFUL_MESSAGE);
+ return OperationResult.ok(LogMessages.SUCCESSFUL_MESSAGE);
} catch (TimeoutException | InterruptedException | ExecutionException e) {
- String message = "Failed to delete service " + commonId + " from Service List";
- LOG.warn(message, e);
- return OperationResult.failed(message);
+ LOG.warn("deleteTempService : {}", LogMessages.failedTo("delete Temp", commonId), e);
+ return OperationResult.failed(LogMessages.failedTo("delete Temp", commonId));
}
}
public OperationResult modifyService(String serviceName, State operationalState, AdminStates administrativeState) {
LOG.debug("Modifying '{}' Service", serviceName);
Optional<Services> readService = getService(serviceName);
- if (readService.isPresent()) {
- try {
- WriteTransaction writeTx = this.dataBroker.newWriteOnlyTransaction();
- InstanceIdentifier<Services> iid = InstanceIdentifier.create(ServiceList.class)
- .child(Services.class, new ServicesKey(serviceName));
- Services services = new ServicesBuilder(readService.get()).setOperationalState(operationalState)
- .setAdministrativeState(administrativeState)
- .build();
- writeTx.merge(LogicalDatastoreType.OPERATIONAL, iid, services);
- writeTx.commit().get(Timeouts.DATASTORE_WRITE, TimeUnit.MILLISECONDS);
- return OperationResult.ok(SUCCESSFUL_MESSAGE);
- } catch (TimeoutException | InterruptedException | ExecutionException e) {
- String message = "Failed to modify service " + serviceName + " from Service List";
- LOG.warn(message, e);
- return OperationResult.failed(message);
- }
- } else {
- String message = "Service " + serviceName + " is not present!";
- LOG.warn(message);
- return OperationResult.failed(message);
+ if (!readService.isPresent()) {
+ LOG.warn("modifyService: {}", LogMessages.SERVICE_NOT_FOUND);
+ return OperationResult.failed(LogMessages.SERVICE_NOT_FOUND);
+ }
+ try {
+ WriteTransaction writeTx = this.dataBroker.newWriteOnlyTransaction();
+ InstanceIdentifier<Services> iid = InstanceIdentifier.create(ServiceList.class)
+ .child(Services.class, new ServicesKey(serviceName));
+ Services services = new ServicesBuilder(readService.get()).setOperationalState(operationalState)
+ .setAdministrativeState(administrativeState)
+ .build();
+ writeTx.merge(LogicalDatastoreType.OPERATIONAL, iid, services);
+ writeTx.commit().get(Timeouts.DATASTORE_WRITE, TimeUnit.MILLISECONDS);
+ return OperationResult.ok(LogMessages.SUCCESSFUL_MESSAGE);
+ } catch (TimeoutException | InterruptedException | ExecutionException e) {
+ LOG.warn("modifyService : {}", LogMessages.failedTo("modify", serviceName), e);
+ return OperationResult.failed(LogMessages.failedTo("modify", serviceName));
}
}
LOG.debug("Modifying '{}' Temp Service", serviceName);
Optional<org.opendaylight.yang.gen.v1.http.org.openroadm.service.rev190531.temp.service.list
.Services> readService = getTempService(serviceName);
- if (readService.isPresent()) {
- try {
- WriteTransaction writeTx = this.dataBroker.newWriteOnlyTransaction();
- InstanceIdentifier<org.opendaylight.yang.gen.v1.http.org.openroadm.service.rev190531.temp.service.list
- .Services> iid = InstanceIdentifier.create(TempServiceList.class)
- .child(org.opendaylight.yang.gen.v1.http.org.openroadm.service.rev190531.temp.service.list
- .Services.class, new org.opendaylight.yang.gen.v1.http.org.openroadm.service.rev190531
- .temp.service.list.ServicesKey(serviceName));
- org.opendaylight.yang.gen.v1.http.org.openroadm.service.rev190531.temp.service.list
- .Services services = new org.opendaylight.yang.gen.v1.http.org.openroadm.service.rev190531.temp
- .service.list.ServicesBuilder(readService.get()).setOperationalState(operationalState)
- .setAdministrativeState(administrativeState)
- .build();
- writeTx.merge(LogicalDatastoreType.OPERATIONAL, iid, services);
- writeTx.commit().get(Timeouts.DATASTORE_WRITE, TimeUnit.MILLISECONDS);
- return OperationResult.ok(SUCCESSFUL_MESSAGE);
- } catch (TimeoutException | InterruptedException | ExecutionException e) {
- String message = "Failed to modify temp service " + serviceName + " from Temp Service List";
- LOG.warn(message, e);
- return OperationResult.failed(message);
- }
- } else {
- String message = "Temp Service " + serviceName + " is not present!";
- LOG.warn(message);
- return OperationResult.failed(message);
+ if (!readService.isPresent()) {
+ LOG.warn("modifyTempService: {}", LogMessages.SERVICE_NOT_FOUND);
+ return OperationResult.failed(LogMessages.SERVICE_NOT_FOUND);
+ }
+ try {
+ WriteTransaction writeTx = this.dataBroker.newWriteOnlyTransaction();
+ InstanceIdentifier<org.opendaylight.yang.gen.v1.http.org.openroadm.service.rev190531.temp.service.list
+ .Services> iid = InstanceIdentifier.create(TempServiceList.class)
+ .child(org.opendaylight.yang.gen.v1.http.org.openroadm.service.rev190531.temp.service.list
+ .Services.class, new org.opendaylight.yang.gen.v1.http.org.openroadm.service.rev190531
+ .temp.service.list.ServicesKey(serviceName));
+ org.opendaylight.yang.gen.v1.http.org.openroadm.service.rev190531.temp.service.list
+ .Services services = new org.opendaylight.yang.gen.v1.http.org.openroadm.service.rev190531.temp
+ .service.list.ServicesBuilder(readService.get()).setOperationalState(operationalState)
+ .setAdministrativeState(administrativeState)
+ .build();
+ writeTx.merge(LogicalDatastoreType.OPERATIONAL, iid, services);
+ writeTx.commit().get(Timeouts.DATASTORE_WRITE, TimeUnit.MILLISECONDS);
+ return OperationResult.ok(LogMessages.SUCCESSFUL_MESSAGE);
+ } catch (TimeoutException | InterruptedException | ExecutionException e) {
+ LOG.warn("modifyTempService : {}", LogMessages.failedTo("modify Temp", serviceName), e);
+ return OperationResult.failed(LogMessages.failedTo("modify Temp", serviceName));
}
}
WriteTransaction writeTx = this.dataBroker.newWriteOnlyTransaction();
writeTx.put(LogicalDatastoreType.OPERATIONAL, iid, service);
writeTx.commit().get(Timeouts.DATASTORE_WRITE, TimeUnit.MILLISECONDS);
- return OperationResult.ok(SUCCESSFUL_MESSAGE);
+ return OperationResult.ok(LogMessages.SUCCESSFUL_MESSAGE);
} catch (TimeoutException | InterruptedException | ExecutionException e) {
- String message = "Failed to create service " + serviceCreateInput.getServiceName() + " to Service List";
- LOG.warn(message, e);
- return OperationResult.failed(message);
+ LOG.warn("createService : {}", LogMessages.failedTo("create", serviceCreateInput.getServiceName()), e);
+ return OperationResult.failed(LogMessages.failedTo("create", serviceCreateInput.getServiceName()));
}
}
WriteTransaction writeTx = this.dataBroker.newWriteOnlyTransaction();
writeTx.put(LogicalDatastoreType.OPERATIONAL, iid, service);
writeTx.commit().get(Timeouts.DATASTORE_WRITE, TimeUnit.MILLISECONDS);
- return OperationResult.ok(SUCCESSFUL_MESSAGE);
+ return OperationResult.ok(LogMessages.SUCCESSFUL_MESSAGE);
} catch (TimeoutException | InterruptedException | ExecutionException e) {
- String message = "Failed to create Temp service " + tempServiceCreateInput.getCommonId()
- + " to TempService List";
- LOG.warn(message, e);
- return OperationResult.failed(message);
+ LOG.warn("createTempService : {}",
+ LogMessages.failedTo("create Temp", tempServiceCreateInput.getCommonId()), e);
+ return OperationResult.failed(LogMessages.failedTo("create Temp", tempServiceCreateInput.getCommonId()));
}
}
WriteTransaction writeTx = this.dataBroker.newWriteOnlyTransaction();
writeTx.put(LogicalDatastoreType.OPERATIONAL, servicePathsIID, servicePath);
writeTx.commit().get(Timeouts.DATASTORE_WRITE, TimeUnit.MILLISECONDS);
- return OperationResult.ok(SUCCESSFUL_MESSAGE);
+ return OperationResult.ok(LogMessages.SUCCESSFUL_MESSAGE);
} catch (TimeoutException | InterruptedException | ExecutionException e) {
- String message = "Failed to create servicePath " + serviceInput.getCommonId() + " to ServicePath List";
- LOG.warn(message, e);
- return OperationResult.failed(message);
+ LOG.warn("createServicePath : {}",
+ LogMessages.failedTo("create servicePath", serviceInput.getCommonId()), e);
+ return OperationResult.failed(LogMessages.failedTo("create servicePath", serviceInput.getCommonId()));
}
}
servicePathsWriteTx.delete(LogicalDatastoreType.OPERATIONAL, servicePathsIID);
try {
servicePathsWriteTx.commit().get(Timeouts.DATASTORE_DELETE, TimeUnit.MILLISECONDS);
- return OperationResult.ok(SUCCESSFUL_MESSAGE);
+ return OperationResult.ok(LogMessages.SUCCESSFUL_MESSAGE);
} catch (InterruptedException | ExecutionException | TimeoutException e) {
- String message = "Unable to delete service path " + serviceName;
- LOG.error(message, e);
- return OperationResult.failed(message);
+ LOG.error("deleteServicePath : {}", LogMessages.failedTo("delete servicePath", serviceName), e);
+ return OperationResult.failed(LogMessages.failedTo("delete servicePath", serviceName));
}
}
PathComputationRequestOutput output, int choice) {
LOG.debug("WriteOrModifyOrDeleting '{}' Service", serviceName);
WriteTransaction writeTx = this.dataBroker.newWriteOnlyTransaction();
- String result = null;
Optional<Services> readService = getService(serviceName);
- if (readService.isPresent()) {
- /*
- * Modify / Delete Service.
- */
- InstanceIdentifier<Services> iid =
- InstanceIdentifier.create(ServiceList.class).child(Services.class, new ServicesKey(serviceName));
- ServicesBuilder service = new ServicesBuilder(readService.get());
- String action = null;
- switch (choice) {
- case 0 : /* Modify. */
- LOG.debug("Modifying '{}' Service", serviceName);
- service.setOperationalState(State.InService).setAdministrativeState(AdminStates.InService);
- writeTx.merge(LogicalDatastoreType.OPERATIONAL, iid, service.build());
- action = "modifyService";
- break;
- case 1 : /* Delete */
- LOG.debug("Deleting '{}' Service", serviceName);
- writeTx.delete(LogicalDatastoreType.OPERATIONAL, iid);
- action = "deleteService";
- break;
- default:
- LOG.debug("No choice found");
- break;
+
+ /*
+ * Write Service.
+ */
+ if (!readService.isPresent()) {
+ if (choice != 2) {
+ LOG.warn("writeOrModifyOrDeleteServiceList: {}", LogMessages.SERVICE_NOT_FOUND);
+ return LogMessages.SERVICE_NOT_FOUND;
}
+
+ LOG.debug("Writing '{}' Service", serviceName);
+ InstanceIdentifier<Services> iid = InstanceIdentifier.create(ServiceList.class)
+ .child(Services.class, new ServicesKey(serviceName));
+ Services service = ModelMappingUtils.mappingServices(input, null);
+ writeTx.put(LogicalDatastoreType.OPERATIONAL, iid, service);
try {
writeTx.commit().get(Timeouts.DATASTORE_WRITE, TimeUnit.MILLISECONDS);
- } catch (InterruptedException | ExecutionException | TimeoutException e) {
- LOG.error("Failed to {} service from Service List", action, e);
- result = "Failed to " + action + " service from Service List";
- }
- } else {
- /*
- * Write Service.
- */
- if (choice == 2) {
- LOG.debug("Writing '{}' Service", serviceName);
- InstanceIdentifier<Services> iid = InstanceIdentifier.create(ServiceList.class)
- .child(Services.class, new ServicesKey(serviceName));
- Services service = ModelMappingUtils.mappingServices(input, null);
- writeTx.put(LogicalDatastoreType.OPERATIONAL, iid, service);
- try {
- writeTx.commit().get(Timeouts.DATASTORE_WRITE, TimeUnit.MILLISECONDS);
- result = null;
- } catch (InterruptedException | TimeoutException | ExecutionException e) {
- LOG.error("Failed to createService service to Service List", e);
- result = "Failed to createService service to Service List";
- }
- } else {
- LOG.info("Service is not present ! ");
- result = "Service is not present ! ";
+ return null;
+ } catch (InterruptedException | TimeoutException | ExecutionException e) {
+ LOG.error("writeOrModifyOrDeleteServiceList : {}", LogMessages.failedTo("create", serviceName), e);
+ return LogMessages.failedTo("create", serviceName);
}
}
- return result;
+
+ /*
+ * Modify / Delete Service.
+ */
+ InstanceIdentifier<Services> iid =
+ InstanceIdentifier.create(ServiceList.class).child(Services.class, new ServicesKey(serviceName));
+ ServicesBuilder service = new ServicesBuilder(readService.get());
+ String action = null;
+ switch (choice) {
+ case 0 : /* Modify. */
+ LOG.debug("Modifying '{}' Service", serviceName);
+ service.setOperationalState(State.InService).setAdministrativeState(AdminStates.InService);
+ writeTx.merge(LogicalDatastoreType.OPERATIONAL, iid, service.build());
+ action = "modifyService";
+ break;
+ case 1 : /* Delete */
+ LOG.debug("Deleting '{}' Service", serviceName);
+ writeTx.delete(LogicalDatastoreType.OPERATIONAL, iid);
+ action = "deleteService";
+ break;
+ default:
+ LOG.debug("No choice found");
+ break;
+ }
+ try {
+ writeTx.commit().get(Timeouts.DATASTORE_WRITE, TimeUnit.MILLISECONDS);
+ } catch (InterruptedException | ExecutionException | TimeoutException e) {
+ LOG.error("writeOrModifyOrDeleteServiceList : {}", LogMessages.failedTo(action, serviceName), e);
+ return LogMessages.failedTo(action, serviceName);
+ }
+
+ return null;
}
}
import org.opendaylight.transportpce.servicehandler.ServiceInput;
import org.opendaylight.transportpce.servicehandler.validation.checks.CheckCoherencyHardSoft;
import org.opendaylight.transportpce.servicehandler.validation.checks.ComplianceCheckResult;
-import org.opendaylight.transportpce.servicehandler.validation.checks.ServicehandlerCompliancyCheck;
+import org.opendaylight.transportpce.servicehandler.validation.checks.ServicehandlerComplianceCheck;
import org.opendaylight.transportpce.servicehandler.validation.checks.ServicehandlerTxRxCheck;
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.RpcActions;
* -create RPC, service header and sdnc
* -request header compliancy are verified.
*/
- LOG.debug("checking Service Compliancy ...");
+ LOG.debug("checking Service Compliance ...");
try {
String serviceNmame = input.getServiceName();
SdncRequestHeader sdncRequestHeader = input.getSdncRequestHeader();
ConnectionType conType = input.getConnectionType();
- ComplianceCheckResult serviceHandlerCheckResult = ServicehandlerCompliancyCheck.check(
+ ComplianceCheckResult serviceHandlerCheckResult = ServicehandlerComplianceCheck.check(
serviceNmame, sdncRequestHeader, conType, rpcActions, true, true);
if (serviceHandlerCheckResult.hasPassed()) {
LOG.debug("Service request compliant !");
* and is available at http://www.eclipse.org/legal/epl-v10.html
*/
package org.opendaylight.transportpce.servicehandler.validation.checks;
+import org.slf4j.Logger;
+import org.slf4j.LoggerFactory;
public class ComplianceCheckResult {
+ private static final Logger LOG = LoggerFactory.getLogger(ComplianceCheckResult.class);
+
private boolean passed;
private String message;
}
public ComplianceCheckResult(boolean passed, String message) {
+ if (passed) {
+ LOG.debug("Compliance check passed");
+ } else {
+ LOG.debug("Compliance check: {}", message);
+ }
this.passed = passed;
this.message = message;
}
--- /dev/null
+/*
+ * Copyright © 2017 Orange, Inc. and others. All rights reserved.
+ *
+ * This program and the accompanying materials are made available under the
+ * terms of the Eclipse Public License v1.0 which accompanies this distribution,
+ * and is available at http://www.eclipse.org/legal/epl-v10.html
+ */
+package org.opendaylight.transportpce.servicehandler.validation.checks;
+
+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.RpcActions;
+import org.opendaylight.yang.gen.v1.http.org.openroadm.common.service.types.rev190531.sdnc.request.header.SdncRequestHeader;
+
+/**
+ * Class for checking service sdnc-request-header compliance.
+ *
+ */
+public final class ServicehandlerComplianceCheck {
+
+ // This is class is public so that these messages can be accessed from Junit (avoid duplications).
+ public static final class LogMessages {
+
+ public static final String SERVICENAME_NOT_SET;
+ public static final String CONNECTIONTYPE_NOT_SET;
+ public static final String REQUESTID_NOT_SET;
+ public static final String RPCACTION_NOT_SET;
+ public static final String HEADER_NOT_SET;
+
+ // Static blocks are generated once and spare memory.
+ static {
+ SERVICENAME_NOT_SET = "Service Name (common-id for Temp service) is not set";
+ CONNECTIONTYPE_NOT_SET = "Service ConnectionType is not set";
+ REQUESTID_NOT_SET = "Service sdncRequestHeader 'request-id' is not set";
+ RPCACTION_NOT_SET = "Service sdncRequestHeader 'rpc-action' is not set";
+ HEADER_NOT_SET = "Service sdncRequestHeader is not set";
+ }
+
+ public static String rpcactionsDiffers(RpcActions action1, RpcActions action2) {
+ return
+ "Service sdncRequestHeader rpc-action '" + action1.name() + "' not equal to '" + action2.name() + "'";
+ }
+
+ private LogMessages() {
+ }
+ }
+
+ /**
+ * Check if a String is not null and not equal to void.
+ *
+ * @param value
+ * String value
+ * @return true if String ok false if not
+ */
+ public static boolean checkString(String value) {
+ return ((value != null) && (!value.isEmpty()));
+ }
+
+ /**
+ * Check Compliance of Service request.
+ *
+ * @param serviceName
+ * Service Name
+ * @param sdncRequestHeader
+ * sdncRequestHeader
+ * @param conType
+ * Connection type
+ * @param action
+ * RPC Actions
+ * @param contype
+ * Boolean to check connection Type
+ * @param sdncRequest
+ * Boolean to check sdncRequestHeader
+ *
+ * @return true if Service Request OK and false if not
+ */
+ public static ComplianceCheckResult check(String serviceName, SdncRequestHeader sdncRequestHeader,
+ ConnectionType conType, RpcActions action,
+ Boolean contype, Boolean sdncRequest) {
+ if (!checkString(serviceName)) {
+ return new ComplianceCheckResult(false, LogMessages.SERVICENAME_NOT_SET);
+ }
+ if (contype && (conType == null)) {
+ return new ComplianceCheckResult(false, LogMessages.CONNECTIONTYPE_NOT_SET);
+ }
+ if (sdncRequest) {
+ if (sdncRequestHeader == null) {
+ return new ComplianceCheckResult(false, LogMessages.HEADER_NOT_SET);
+ }
+ RpcActions serviceAction = sdncRequestHeader.getRpcAction();
+ String requestId = sdncRequestHeader.getRequestId();
+ if (!checkString(requestId)) {
+ return new ComplianceCheckResult(false, LogMessages.REQUESTID_NOT_SET);
+ }
+ if (serviceAction == null) {
+ return new ComplianceCheckResult(false, LogMessages.RPCACTION_NOT_SET);
+ }
+ if (serviceAction.compareTo(action) != 0) {
+ return new ComplianceCheckResult(false, LogMessages.rpcactionsDiffers(serviceAction, action));
+ }
+ }
+ return new ComplianceCheckResult(true, "");
+ }
+
+ private ServicehandlerComplianceCheck() {
+ }
+
+}
+++ /dev/null
-/*
- * Copyright © 2017 Orange, Inc. and others. All rights reserved.
- *
- * This program and the accompanying materials are made available under the
- * terms of the Eclipse Public License v1.0 which accompanies this distribution,
- * and is available at http://www.eclipse.org/legal/epl-v10.html
- */
-package org.opendaylight.transportpce.servicehandler.validation.checks;
-
-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.RpcActions;
-import org.opendaylight.yang.gen.v1.http.org.openroadm.common.service.types.rev190531.sdnc.request.header.SdncRequestHeader;
-import org.slf4j.Logger;
-import org.slf4j.LoggerFactory;
-
-/**
- * Class for checking service sdnc-request-header compliancy.
- *
- */
-public final class ServicehandlerCompliancyCheck {
-
- private static final Logger LOG = LoggerFactory.getLogger(ServicehandlerCompliancyCheck.class);
-
- /**
- * Check if a String is not null and not equal to void.
- *
- * @param value
- * String value
- * @return true if String ok false if not
- */
- public static boolean checkString(String value) {
- return ((value != null) && (value.compareTo("") != 0));
- }
-
- /**
- * Check Compliancy of Service request.
- *
- * @param serviceName
- * Service Name
- * @param sdncRequestHeader
- * sdncRequestHeader
- * @param conType
- * Connection type
- * @param action
- * RPC Actions
- * @param contype
- * Boolean to check connection Type
- * @param sdncRequest
- * Boolean to check sdncRequestHeader
- *
- * @return true if String ok false if not
- */
- public static ComplianceCheckResult check(String serviceName, SdncRequestHeader sdncRequestHeader,
- ConnectionType conType, RpcActions action,
- Boolean contype, Boolean sdncRequest) {
- boolean result = true;
- String message = "";
- if (!checkString(serviceName)) {
- result = false;
- message = "Service Name (common-id for Temp service) is not set";
- } else if (contype && (conType == null)) {
- result = false;
- message = "Service ConnectionType is not set";
- }
- if (sdncRequest) {
- if (sdncRequestHeader != null) {
- RpcActions serviceAction = sdncRequestHeader.getRpcAction();
- String requestId = sdncRequestHeader.getRequestId();
- if (!checkString(requestId)) {
- result = false;
- message = "Service sdncRequestHeader 'request-id' is not set";
- LOG.debug(message);
- } else if (serviceAction != null) {
- if (serviceAction.compareTo(action) != 0) {
- result = false;
- message = "Service sdncRequestHeader rpc-action '" + serviceAction + "' not equal to '"
- + action.name() + "'";
- }
- } else {
- result = false;
- message = "Service sndc-request-header 'rpc-action' is not set ";
- }
-
- } else {
- result = false;
- message = "Service sndc-request-header is not set ";
- }
- }
- LOG.debug(message);
- return new ComplianceCheckResult(result, message);
- }
-
- private ServicehandlerCompliancyCheck() {
- }
-
-}
import org.opendaylight.yang.gen.v1.http.org.openroadm.common.service.types.rev190531.service.lgx.Lgx;
import org.opendaylight.yang.gen.v1.http.org.openroadm.common.service.types.rev190531.service.port.Port;
import org.opendaylight.yang.gen.v1.http.org.openroadm.service.format.rev190531.ServiceFormat;
-import org.slf4j.Logger;
-import org.slf4j.LoggerFactory;
/**
* Class for checking missing info on Tx/Rx for A/Z end.
*/
public final class ServicehandlerTxRxCheck {
- private static final Logger LOG = LoggerFactory.getLogger(ServicehandlerTxRxCheck.class);
+ // This is class is public so that these messages can be accessed from Junit (avoid duplications).
+ public static final class LogMessages {
+
+ public static final String TXDIR_NOT_SET;
+ public static final String TXDIR_PORT_NOT_SET;
+ public static final String TXDIR_LGX_NOT_SET;
+ public static final String RXDIR_NOT_SET;
+ public static final String RXDIR_PORT_NOT_SET;
+ public static final String RXDIR_LGX_NOT_SET;
+
+ // Static blocks are generated once and spare memory.
+ static {
+ TXDIR_NOT_SET = "Service TxDirection is not correctly set";
+ RXDIR_NOT_SET = "Service RxDirection is not correctly set";
+ TXDIR_PORT_NOT_SET = "Service TxDirection Port is not correctly set";
+ TXDIR_LGX_NOT_SET = "Service TxDirection Lgx is not correctly set";
+ RXDIR_PORT_NOT_SET = "Service RxDirection Port is not correctly set";
+ RXDIR_LGX_NOT_SET = "Service RxDirection Lgx is not correctly set";
+ }
+
+ public static String endpointTypeNotSet(ServiceEndpointType endpointType) {
+ return "Service " + endpointType + " is not set";
+ }
+
+ public static String rateNotSet(ServiceEndpointType endpointType) {
+ return "Service " + endpointType + " rate is not set";
+ }
+
+ public static String formatNotSet(ServiceEndpointType endpointType) {
+ return "Service " + endpointType + " format is not set";
+ }
+
+ public static String clliNotSet(ServiceEndpointType endpointType) {
+ return "Service " + endpointType + " clli is not set";
+ }
+
+ private LogMessages() {
+ }
+ }
+
/**
* Check if a String is not null and not equal to ''.
* @return <code>true</code> if check is ok <code>false</code> else
*/
public static ComplianceCheckResult checkTxOrRxInfo(TxDirection txDirection, RxDirection rxDirection) {
- boolean result = true;
- String message = "";
- if (txDirection != null) {
- if (!checkPort(txDirection.getPort())) {
- result = false;
- message = "Service TxDirection Port is not correctly set";
- } else if (!checkLgx(txDirection.getLgx())) {
- result = false;
- message = "Service TxDirection Lgx is not correctly set";
- } else if (rxDirection != null) {
- if (!checkPort(rxDirection.getPort())) {
- result = false;
- message = "Service RxDirection Port is not correctly set";
- } else if (!checkLgx(rxDirection.getLgx())) {
- result = false;
- message = "Service RxDirection Lgx is not correctly set";
- }
- } else {
- result = false;
- message = "Service RxDirection is not correctly set";
- }
- } else {
- result = false;
- message = "Service TxDirection is not correctly set";
+ if (txDirection == null) {
+ return new ComplianceCheckResult(false, LogMessages.TXDIR_NOT_SET);
+ }
+ if (rxDirection == null) {
+ return new ComplianceCheckResult(false, LogMessages.RXDIR_NOT_SET);
+ }
+ if (!checkPort(txDirection.getPort())) {
+ return new ComplianceCheckResult(false, LogMessages.TXDIR_PORT_NOT_SET);
+ }
+ if (!checkLgx(txDirection.getLgx())) {
+ return new ComplianceCheckResult(false, LogMessages.TXDIR_LGX_NOT_SET);
}
- return new ComplianceCheckResult(result, message);
+ if (!checkPort(rxDirection.getPort())) {
+ return new ComplianceCheckResult(false, LogMessages.RXDIR_PORT_NOT_SET);
+ }
+ if (!checkLgx(rxDirection.getLgx())) {
+ return new ComplianceCheckResult(false, LogMessages.RXDIR_LGX_NOT_SET);
+ }
+ return new ComplianceCheckResult(true, "");
}
/**
- * Check Compliancy of Service TxRx info.
+ * Check Compliance of Service TxRx info.
* @param serviceEnd Service Endpoint
* @param endpointType Endpoint type
*
* @return true if String ok false if not
*/
public static ComplianceCheckResult check(ServiceEndpoint serviceEnd, ServiceEndpointType endpointType) {
- boolean result = true;
- String message = "";
- if (serviceEnd != null) {
- try {
- Long serviceRate = serviceEnd.getServiceRate().toJava();
- ServiceFormat serviceformat = serviceEnd.getServiceFormat();
- String clli = serviceEnd.getClli();
- if ((serviceRate == null) || (serviceRate <= 0)) {
- result = false;
- message = "Service " + endpointType + " rate is not set";
- LOG.debug(message);
- } else if (serviceformat == null) {
- result = false;
- message = "Service " + endpointType + " format is not set";
- LOG.debug(message);
- } else if (!checkString(clli)) {
- result = false;
- message = "Service" + endpointType + " clli format is not set";
- LOG.debug(message);
- } else {
- ComplianceCheckResult complianceCheckResult
- = checkTxOrRxInfo(serviceEnd.getTxDirection(), serviceEnd.getRxDirection());
- if (!complianceCheckResult.hasPassed()) {
- result = false;
- message = complianceCheckResult.getMessage();
- }
- }
- } catch (NullPointerException e) {
- message = "Service " + endpointType + " rate, format or clli is not set";
- LOG.error(message, e);
- return new ComplianceCheckResult(false, message);
- }
- } else {
- result = false;
- message = endpointType + " is not set";
- LOG.debug(message);
+ if (serviceEnd == null) {
+ return new ComplianceCheckResult(false, LogMessages.endpointTypeNotSet(endpointType));
}
- return new ComplianceCheckResult(result, message);
+
+//TODO check if an expected bug was justifying this NPE handling
+// try {
+ Long serviceRate = serviceEnd.getServiceRate().toJava();
+ ServiceFormat serviceformat = serviceEnd.getServiceFormat();
+ String clli = serviceEnd.getClli();
+// } catch (NullPointerException e) {
+// String message = "Something wrong when accessing Service " + endpointType + " rate, format or clli";
+// LOG.error("Service TxRx info check: {}",message, e);
+// return new ComplianceCheckResult(false, message);
+// }
+
+ if ((serviceRate == null) || (serviceRate <= 0)) {
+ return new ComplianceCheckResult(false, LogMessages.rateNotSet(endpointType));
+ }
+ if (serviceformat == null) {
+ return new ComplianceCheckResult(false, LogMessages.formatNotSet(endpointType));
+ }
+ if (!checkString(clli)) {
+ return new ComplianceCheckResult(false, LogMessages.clliNotSet(endpointType));
+ }
+
+ ComplianceCheckResult complianceCheckResult
+ = checkTxOrRxInfo(serviceEnd.getTxDirection(), serviceEnd.getRxDirection());
+ if (!complianceCheckResult.hasPassed()) {
+ return new ComplianceCheckResult(false, complianceCheckResult.getMessage());
+ }
+
+ return new ComplianceCheckResult(true, "");
}
private ServicehandlerTxRxCheck() {
package org.opendaylight.transportpce.servicehandler.impl;
import static org.mockito.ArgumentMatchers.any;
+import static org.opendaylight.transportpce.servicehandler.impl.ServicehandlerImpl.LogMessages;
import com.google.common.util.concurrent.Futures;
import com.google.common.util.concurrent.ListenableFuture;
Assert.assertEquals(
ResponseCodes.RESPONSE_FAILED, rpcResult.getResult().getConfigurationResponseCommon().getResponseCode());
Assert.assertEquals(
- "Service not compliant !", rpcResult.getResult().getConfigurationResponseCommon().getResponseMessage());
+ LogMessages.SERVICE_NON_COMPLIANT,
+ rpcResult.getResult().getConfigurationResponseCommon().getResponseMessage());
}
@Test
*/
package org.opendaylight.transportpce.servicehandler.service;
+import static org.opendaylight.transportpce.servicehandler.service.ServiceDataStoreOperationsImpl.LogMessages;
+
import java.util.Optional;
import org.junit.Assert;
import org.junit.Before;
OperationResult result =
this.serviceDataStoreOperations.modifyService("service 1", State.InService, AdminStates.InService);
Assert.assertFalse(result.isSuccess());
- Assert.assertEquals("Service service 1 is not present!", result.getResultMessage());
+ Assert.assertEquals(LogMessages.SERVICE_NOT_FOUND, result.getResultMessage());
}
@Test
String result = serviceDataStoreOperations.writeOrModifyOrDeleteServiceList("serviceCreateInput",
createInput, pathComputationRequestOutput, 3);
- Assert.assertEquals("Service is not present ! ", result);
+ Assert.assertEquals(LogMessages.SERVICE_NOT_FOUND, result);
}
@Test
@Test
public void writeOrModifyOrDeleteServiceListPresentWithDeleteChoice() {
ServiceCreateInput createInput = ServiceDataUtils.buildServiceCreateInput();
+
ConfigurationResponseCommon configurationResponseCommon = new ConfigurationResponseCommonBuilder()
.setRequestId("request 1").setAckFinalIndicator(ResponseCodes.FINAL_ACK_NO)
.setResponseCode(ResponseCodes.RESPONSE_OK).setResponseMessage("PCE calculation in progress").build();
public void modifyTempServiceIsSuccessfulForPresentTempService() {
TempServiceCreateInput createInput = ServiceDataUtils.buildTempServiceCreateInput();
this.serviceDataStoreOperations.createTempService(createInput);
- OperationResult result = this.serviceDataStoreOperations.modifyTempService(createInput.getCommonId(),
- State.InService, AdminStates.InService);
+ OperationResult result = this.serviceDataStoreOperations.modifyTempService(
+ createInput.getCommonId(), State.InService, AdminStates.InService);
Assert.assertTrue(result.isSuccess());
}
*/
package org.opendaylight.transportpce.servicehandler.validation.checks;
+import static org.opendaylight.transportpce.servicehandler.validation.checks.ServicehandlerComplianceCheck.LogMessages;
+
import org.junit.Assert;
import org.junit.Test;
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.RpcActions;
import org.opendaylight.yang.gen.v1.http.org.openroadm.common.service.types.rev190531.sdnc.request.header.SdncRequestHeaderBuilder;
-public class ServicehandlerCompliancyCheckTest {
+public class ServicehandlerComplianceCheckTest {
- public ServicehandlerCompliancyCheckTest(){
+ public ServicehandlerComplianceCheckTest(){
}
@Test
public void checkFalseSdncRequest() {
- ComplianceCheckResult result = ServicehandlerCompliancyCheck.check("service 1",
+ ComplianceCheckResult result = ServicehandlerComplianceCheck.check("service 1",
new SdncRequestHeaderBuilder().setRequestId("1").setRequestSystemId("1").setNotificationUrl("1")
.setRpcAction(RpcActions.ServiceCreate).build(),
ConnectionType.Service,RpcActions.ServiceCreate, false, false);
@Test
public void checkServiceNameNull() {
- ComplianceCheckResult result = ServicehandlerCompliancyCheck.check(null, null,
- ConnectionType.Service,null, false, false);
+ ComplianceCheckResult result = ServicehandlerComplianceCheck.check(null, null,
+ ConnectionType.Service, null, false, false);
- Assert.assertEquals("Service Name (common-id for Temp service) is not set", result.getMessage());
+ Assert.assertEquals(LogMessages.SERVICENAME_NOT_SET, result.getMessage());
Assert.assertFalse(result.hasPassed());
}
@Test
public void checkConTypeFalseAndNull() {
- ComplianceCheckResult result = ServicehandlerCompliancyCheck.check("service 1", null,
- null,null, true, false);
- Assert.assertEquals("Service ConnectionType is not set", result.getMessage());
+ ComplianceCheckResult result = ServicehandlerComplianceCheck.check("service 1", null,
+ null, null, true, false);
+ Assert.assertEquals(LogMessages.CONNECTIONTYPE_NOT_SET, result.getMessage());
Assert.assertFalse(result.hasPassed());
}
@Test
public void checkSdncRequestHeaderNull() {
- ComplianceCheckResult result = ServicehandlerCompliancyCheck.check("service 1", null,
- ConnectionType.Service,null, true, true);
+ ComplianceCheckResult result = ServicehandlerComplianceCheck.check("service 1", null,
+ ConnectionType.Service, null, true, true);
- Assert.assertEquals("Service sndc-request-header is not set ", result.getMessage());
+ Assert.assertEquals(LogMessages.HEADER_NOT_SET, result.getMessage());
Assert.assertFalse(result.hasPassed());
}
@Test
public void checkRequestIdEmptyString() {
- ComplianceCheckResult result = ServicehandlerCompliancyCheck.check("service 1",
+ ComplianceCheckResult result = ServicehandlerComplianceCheck.check("service 1",
new SdncRequestHeaderBuilder().setRequestId("")
.setRpcAction(RpcActions.ServiceCreate).build(),
ConnectionType.Service, RpcActions.ServiceCreate, true, true);
- Assert.assertEquals("Service sdncRequestHeader 'request-id' is not set", result.getMessage());
+ Assert.assertEquals(LogMessages.REQUESTID_NOT_SET, result.getMessage());
Assert.assertFalse(result.hasPassed());
}
@Test
public void checkDifferentAction() {
- ComplianceCheckResult result = ServicehandlerCompliancyCheck.check("service 1",
+ ComplianceCheckResult result = ServicehandlerComplianceCheck.check("service 1",
new SdncRequestHeaderBuilder().setRequestId("1")
.setRpcAction(RpcActions.ServiceCreate).build(),
ConnectionType.Service, RpcActions.NetworkReOptimization, true, true);
- Assert.assertEquals("Service sdncRequestHeader rpc-action '" + RpcActions.ServiceCreate.name()
- + "' not equal to '"
- + RpcActions.NetworkReOptimization.name() + "'", result.getMessage());
+ Assert.assertEquals(
+ LogMessages.rpcactionsDiffers(RpcActions.ServiceCreate, RpcActions.NetworkReOptimization),
+ result.getMessage());
Assert.assertFalse(result.hasPassed());
}
@Test
public void checkServiceActionNull() {
- ComplianceCheckResult result = ServicehandlerCompliancyCheck.check("service 1",
+ ComplianceCheckResult result = ServicehandlerComplianceCheck.check("service 1",
new SdncRequestHeaderBuilder().setRequestId("1").build(),
ConnectionType.Service, RpcActions.NetworkReOptimization, true, true);
- Assert.assertEquals("Service sndc-request-header 'rpc-action' is not set ", result.getMessage());
+ Assert.assertEquals(LogMessages.RPCACTION_NOT_SET, result.getMessage());
Assert.assertFalse(result.hasPassed());
}
}
package org.opendaylight.transportpce.servicehandler.validation.checks;
+import static org.opendaylight.transportpce.servicehandler.validation.checks.ServicehandlerTxRxCheck.LogMessages;
+
import org.junit.Assert;
import org.junit.Ignore;
import org.junit.Test;
@Test
public void checkTxOrRxInfoForNullTx() {
- ComplianceCheckResult result = ServicehandlerTxRxCheck.checkTxOrRxInfo(null, null);
+ ComplianceCheckResult result = ServicehandlerTxRxCheck.checkTxOrRxInfo(
+ null,
+ new RxDirectionBuilder()
+ .setPort(new PortBuilder().setPortDeviceName("q")
+ .setPortName("n").setPortRack("r").setPortShelf("s").setPortType("t").build())
+ .setLgx(new LgxBuilder().setLgxDeviceName("l")
+ .setLgxPortName("p").setLgxPortRack("r").setLgxPortShelf("s").build())
+ .build());
Assert.assertFalse(result.hasPassed());
- Assert.assertEquals("Service TxDirection is not correctly set", result.getMessage());
+ Assert.assertEquals(LogMessages.TXDIR_NOT_SET, result.getMessage());
}
@Test
public void checkTxOrRxInfoForNullTxPort() {
- ComplianceCheckResult result = ServicehandlerTxRxCheck
- .checkTxOrRxInfo(new TxDirectionBuilder().build(), null);
+ ComplianceCheckResult result = ServicehandlerTxRxCheck.checkTxOrRxInfo(
+ new TxDirectionBuilder()
+ .setLgx(new LgxBuilder().setLgxDeviceName("l")
+ .setLgxPortName("p").setLgxPortRack("r").setLgxPortShelf("s").build())
+ .build(),
+ new RxDirectionBuilder()
+ .setPort(new PortBuilder().setPortDeviceName("q")
+ .setPortName("n").setPortRack("r").setPortShelf("s").setPortType("t").build())
+ .setLgx(new LgxBuilder().setLgxDeviceName("l")
+ .setLgxPortName("p").setLgxPortRack("r").setLgxPortShelf("s").build())
+ .build());
Assert.assertFalse(result.hasPassed());
- Assert.assertEquals("Service TxDirection Port is not correctly set", result.getMessage());
+ Assert.assertEquals(LogMessages.TXDIR_PORT_NOT_SET, result.getMessage());
}
@Test
public void checkTxOrRxInfoForNullTxLgx() {
- ComplianceCheckResult result = ServicehandlerTxRxCheck
- .checkTxOrRxInfo(new TxDirectionBuilder()
- .setPort(new PortBuilder().setPortDeviceName("q")
- .setPortName("n").setPortRack("r").setPortShelf("s").setPortType("t").build()).build(), null);
+ ComplianceCheckResult result = ServicehandlerTxRxCheck.checkTxOrRxInfo(
+ new TxDirectionBuilder()
+ .setPort(new PortBuilder().setPortDeviceName("q")
+ .setPortName("n").setPortRack("r").setPortShelf("s").setPortType("t").build()).build(),
+ new RxDirectionBuilder()
+ .setPort(new PortBuilder().setPortDeviceName("q")
+ .setPortName("n").setPortRack("r").setPortShelf("s").setPortType("t").build())
+ .setLgx(new LgxBuilder().setLgxDeviceName("l")
+ .setLgxPortName("p").setLgxPortRack("r").setLgxPortShelf("s").build())
+ .build());
Assert.assertFalse(result.hasPassed());
- Assert.assertEquals("Service TxDirection Lgx is not correctly set", result.getMessage());
+ Assert.assertEquals(LogMessages.TXDIR_LGX_NOT_SET, result.getMessage());
}
@Test
public void checkTxOrRxInfoForNullRx() {
- ComplianceCheckResult result = ServicehandlerTxRxCheck
- .checkTxOrRxInfo(new TxDirectionBuilder()
- .setPort(new PortBuilder().setPortDeviceName("q")
- .setPortName("n").setPortRack("r").setPortShelf("s").setPortType("t").build())
- .setLgx(new LgxBuilder().setLgxDeviceName("l")
- .setLgxPortName("p").setLgxPortRack("r").setLgxPortShelf("s").build()).build(), null);
+ ComplianceCheckResult result = ServicehandlerTxRxCheck.checkTxOrRxInfo(
+ new TxDirectionBuilder()
+ .setPort(new PortBuilder().setPortDeviceName("q")
+ .setPortName("n").setPortRack("r").setPortShelf("s").setPortType("t").build())
+ .setLgx(new LgxBuilder().setLgxDeviceName("l")
+ .setLgxPortName("p").setLgxPortRack("r").setLgxPortShelf("s").build())
+ .build(),
+ null);
Assert.assertFalse(result.hasPassed());
- Assert.assertEquals("Service RxDirection is not correctly set", result.getMessage());
+ Assert.assertEquals(LogMessages.RXDIR_NOT_SET, result.getMessage());
}
@Test
public void checkTxOrRxInfoForNullRxPort() {
- ComplianceCheckResult result = ServicehandlerTxRxCheck
- .checkTxOrRxInfo(new TxDirectionBuilder()
- .setPort(new PortBuilder().setPortDeviceName("q")
- .setPortName("n").setPortRack("r").setPortShelf("s").setPortType("t").build())
- .setLgx(new LgxBuilder().setLgxDeviceName("l")
- .setLgxPortName("p").setLgxPortRack("r").setLgxPortShelf("s").build()).build(),
- new RxDirectionBuilder().build());
+ ComplianceCheckResult result = ServicehandlerTxRxCheck.checkTxOrRxInfo(
+ new TxDirectionBuilder()
+ .setPort(new PortBuilder().setPortDeviceName("q")
+ .setPortName("n").setPortRack("r").setPortShelf("s").setPortType("t").build())
+ .setLgx(new LgxBuilder().setLgxDeviceName("l")
+ .setLgxPortName("p").setLgxPortRack("r").setLgxPortShelf("s").build())
+ .build(),
+ new RxDirectionBuilder()
+ .setLgx(new LgxBuilder().setLgxDeviceName("l")
+ .setLgxPortName("p").setLgxPortRack("r").setLgxPortShelf("s").build())
+ .build());
Assert.assertFalse(result.hasPassed());
- Assert.assertEquals("Service RxDirection Port is not correctly set", result.getMessage());
+ Assert.assertEquals(LogMessages.RXDIR_PORT_NOT_SET, result.getMessage());
}
@Test
public void checkTxOrRxInfoForNullRxLgx() {
- ComplianceCheckResult result = ServicehandlerTxRxCheck
- .checkTxOrRxInfo(new TxDirectionBuilder()
- .setPort(new PortBuilder().setPortDeviceName("q")
- .setPortName("n").setPortRack("r").setPortShelf("s").setPortType("t").build())
- .setLgx(new LgxBuilder().setLgxDeviceName("l")
- .setLgxPortName("p").setLgxPortRack("r").setLgxPortShelf("s").build()).build(),
- new RxDirectionBuilder().setPort(new PortBuilder().setPortDeviceName("q")
- .setPortName("n").setPortRack("r").setPortShelf("s").setPortType("t").build()).build());
+ ComplianceCheckResult result = ServicehandlerTxRxCheck.checkTxOrRxInfo(
+ new TxDirectionBuilder()
+ .setPort(new PortBuilder().setPortDeviceName("q")
+ .setPortName("n").setPortRack("r").setPortShelf("s").setPortType("t").build())
+ .setLgx(new LgxBuilder().setLgxDeviceName("l")
+ .setLgxPortName("p").setLgxPortRack("r").setLgxPortShelf("s").build())
+ .build(),
+ new RxDirectionBuilder()
+ .setPort(new PortBuilder().setPortDeviceName("q")
+ .setPortName("n").setPortRack("r").setPortShelf("s").setPortType("t").build())
+ .build());
Assert.assertFalse(result.hasPassed());
- Assert.assertEquals("Service RxDirection Lgx is not correctly set", result.getMessage());
+ Assert.assertEquals(LogMessages.RXDIR_LGX_NOT_SET, result.getMessage());
}
@Test
ComplianceCheckResult result = ServicehandlerTxRxCheck.check(null, ServiceEndpointType.SERVICEAEND);
Assert.assertFalse(result.hasPassed());
- Assert.assertEquals(ServiceEndpointType.SERVICEAEND + " is not set", result.getMessage());
+ Assert.assertEquals(LogMessages.endpointTypeNotSet(ServiceEndpointType.SERVICEAEND), result.getMessage());
}
@Ignore
ServicehandlerTxRxCheck.check(new ServiceAEndBuilder().build(), ServiceEndpointType.SERVICEAEND);
Assert.assertFalse(result.hasPassed());
- Assert.assertEquals("Service " + ServiceEndpointType.SERVICEAEND + " rate is not set", result.getMessage());
+ Assert.assertEquals(LogMessages.rateNotSet(ServiceEndpointType.SERVICEAEND), result.getMessage());
}
@Test
new ServiceAEndBuilder().setServiceRate(0L).build(), ServiceEndpointType.SERVICEAEND);
Assert.assertFalse(result.hasPassed());
- Assert.assertEquals("Service " + ServiceEndpointType.SERVICEAEND + " rate is not set", result.getMessage());
+ Assert.assertEquals(LogMessages.rateNotSet(ServiceEndpointType.SERVICEAEND), result.getMessage());
}
@Test
new ServiceAEndBuilder().setServiceRate(3L).build(), ServiceEndpointType.SERVICEAEND);
Assert.assertFalse(result.hasPassed());
- Assert.assertEquals("Service " + ServiceEndpointType.SERVICEAEND + " format is not set", result.getMessage());
+ Assert.assertEquals(LogMessages.formatNotSet(ServiceEndpointType.SERVICEAEND), result.getMessage());
}
@Test
ServiceEndpointType.SERVICEAEND);
Assert.assertFalse(result.hasPassed());
- Assert.assertEquals(
- "Service" + ServiceEndpointType.SERVICEAEND + " clli format is not set", result.getMessage());
+ Assert.assertEquals(LogMessages.clliNotSet(ServiceEndpointType.SERVICEAEND), result.getMessage());
}
@Test
ServiceEndpointType.SERVICEAEND);
Assert.assertFalse(result.hasPassed());
- Assert.assertEquals("Service TxDirection is not correctly set", result.getMessage());
+ Assert.assertEquals(LogMessages.TXDIR_NOT_SET, result.getMessage());
}
}