+ /**
+ * Process service delete result for serviceName.
+ * @param notification RendererRpcResultSp
+ */
+ private void onServiceDeleteResult(RendererRpcResultSp notification) {
+ switch (serviceRpcResultSp.getStatus()) {
+ case Successful:
+ LOG.info("Service '{}' deleted !", notification.getServiceName());
+ String serviceType = notification.getServiceType();
+ switch (serviceType) {
+ case StringConstants.SERVICE_TYPE_1GE:
+ case StringConstants.SERVICE_TYPE_10GE:
+ case StringConstants.SERVICE_TYPE_100GE_M:
+ Short tribPort = Short.valueOf(notification.getAToZDirection().getMinTribSlot().getValue()
+ .split("\\.")[0]);
+ Short minTribSlot = Short.valueOf(notification.getAToZDirection().getMinTribSlot().getValue()
+ .split("\\.")[1]);
+ updateOtnTopology(notification.getLink(), true, notification.getServiceType(),
+ notification.getAToZDirection().getRate(), tribPort, minTribSlot);
+ break;
+ case StringConstants.SERVICE_TYPE_OTU4:
+ case StringConstants.SERVICE_TYPE_OTUC4:
+ case StringConstants.SERVICE_TYPE_ODU4:
+ case StringConstants.SERVICE_TYPE_ODUC4:
+ updateOtnTopology(notification.getLink(), true, notification.getServiceType(), null, null,
+ null);
+ break;
+ default:
+ break;
+ }
+ break;
+ case Failed:
+ LOG.error("Renderer service delete failed !");
+ Services service = serviceDataStoreOperations.getService(input.getServiceName()).get();
+ sendNbiNotification(new PublishNotificationServiceBuilder()
+ .setServiceName(service.getServiceName())
+ .setServiceAEnd(new ServiceAEndBuilder(service.getServiceAEnd()).build())
+ .setServiceZEnd(new ServiceZEndBuilder(service.getServiceZEnd()).build())
+ .setCommonId(service.getCommonId())
+ .setConnectionType(service.getConnectionType())
+ .setResponseFailed("Renderer service delete failed !")
+ .setMessage("ServiceDelete request failed ...")
+ .setOperationalState(service.getOperationalState())
+ .setTopic(TOPIC)
+ .build());
+ return;
+ case Pending:
+ LOG.warn("Renderer service delete returned a Pending RpcStatusEx code!");
+ return;
+ default:
+ LOG.error("Renderer service delete returned an unknown RpcStatusEx code!");
+ return;
+ }
+ LOG.info("Service '{}' deleted !", notification.getServiceName());
+ if (this.input == null) {
+ LOG.error("ServiceInput parameter is null !");
+ return;
+ }
+ LOG.info("sending PCE cancel resource reserve for '{}'", this.input.getServiceName());
+ this.pceServiceWrapper.cancelPCEResource(this.input.getServiceName(),
+ ServiceNotificationTypes.ServiceDeleteResult);
+ sendServiceHandlerNotification(notification, ServiceNotificationTypes.ServiceDeleteResult);
+ }
+
+ /**
+ * Process service implementation result for serviceName.
+ * @param notification RendererRpcResultSp
+ */
+ private void onServiceImplementationResult(RendererRpcResultSp notification) {
+ switch (serviceRpcResultSp.getStatus()) {
+ case Successful:
+ onSuccededServiceImplementation(notification);
+ break;
+ case Failed:
+ onFailedServiceImplementation(notification.getServiceName());
+ break;
+ case Pending:
+ LOG.warn("Service Implementation still pending according to RpcStatusEx");
+ break;
+ default:
+ LOG.warn("Service Implementation has an unknown RpcStatusEx code");
+ break;
+ }
+ }
+
+ /**
+ * Process succeeded service implementation for service.
+ * @param notification RendererRpcResultSp
+ */
+ private void onSuccededServiceImplementation(RendererRpcResultSp notification) {
+ LOG.info("Service implemented !");
+ if (serviceDataStoreOperations == null) {
+ LOG.debug("serviceDataStoreOperations is null");
+ return;
+ }
+ String serviceType = notification.getServiceType();
+ switch (serviceType) {
+ case StringConstants.SERVICE_TYPE_1GE:
+ case StringConstants.SERVICE_TYPE_10GE:
+ case StringConstants.SERVICE_TYPE_100GE_M:
+ Short tribPort = Short.valueOf(notification.getAToZDirection().getMinTribSlot().getValue()
+ .split("\\.")[0]);
+ Short minTribSlot = Short.valueOf(notification.getAToZDirection().getMinTribSlot().getValue()
+ .split("\\.")[1]);
+ updateOtnTopology(notification.getLink(), false, notification.getServiceType(),
+ notification.getAToZDirection().getRate(), tribPort, minTribSlot);
+ break;
+ case StringConstants.SERVICE_TYPE_OTU4:
+ case StringConstants.SERVICE_TYPE_OTUC4:
+ case StringConstants.SERVICE_TYPE_ODU4:
+ case StringConstants.SERVICE_TYPE_ODUC4:
+ updateOtnTopology(notification.getLink(), false, notification.getServiceType(), null, null, null);
+ break;
+ default:
+ break;
+ }
+ PublishNotificationServiceBuilder nbiNotificationBuilder = new PublishNotificationServiceBuilder()
+ .setServiceName(input.getServiceName())
+ .setServiceAEnd(new ServiceAEndBuilder(input.getServiceAEnd()).build())
+ .setServiceZEnd(new ServiceZEndBuilder(input.getServiceZEnd()).build())
+ .setCommonId(input.getCommonId()).setConnectionType(input.getConnectionType())
+ .setTopic(TOPIC);
+ OperationResult operationResult;
+ String serviceTemp = "";
+ if (tempService) {
+ operationResult = this.serviceDataStoreOperations.modifyTempService(
+ serviceRpcResultSp.getServiceName(), State.InService, AdminStates.InService);
+ serviceTemp = "Temp ";