diff --git a/src/main/java/org/etsi/osl/osom/management/CROrchestrationService.java b/src/main/java/org/etsi/osl/osom/management/CROrchestrationService.java index 83889fa43133f256c22a5684bf569ff2f3444323..08fc212cad95092f06ee8fb02233486195115174 100644 --- a/src/main/java/org/etsi/osl/osom/management/CROrchestrationService.java +++ b/src/main/java/org/etsi/osl/osom/management/CROrchestrationService.java @@ -115,6 +115,11 @@ public class CROrchestrationService implements JavaDelegate { sorder.getExpectedCompletionDate(), crspec); } + + Characteristic servicecrspecLast = aService.getServiceCharacteristicByName("_CR_SPEC_LASTSEND"); + servicecrspecLast.getValue().setValue( crspec ); + su.addServiceCharacteristicItem(servicecrspecLast); + if ( response!=null && response.equals("OK")) { su.setState(ServiceStateType.RESERVED); Note successNoteItem = new Note(); diff --git a/src/main/java/org/etsi/osl/osom/serviceactions/CRPatchTask.java b/src/main/java/org/etsi/osl/osom/serviceactions/CRPatchTask.java index 3d04a14a0e67b13d5e92eb2b61171578fc0819e8..554ccb6342804816915fd219d5702fe412ae0250 100644 --- a/src/main/java/org/etsi/osl/osom/serviceactions/CRPatchTask.java +++ b/src/main/java/org/etsi/osl/osom/serviceactions/CRPatchTask.java @@ -91,20 +91,44 @@ public class CRPatchTask implements JavaDelegate { String response = null; Characteristic servicecrspec = aService.getServiceCharacteristicByName("_CR_SPEC"); String crspec = servicecrspec.getValue().getValue(); + + + Characteristic servicecrspecLast = aService.getServiceCharacteristicByName("_CR_SPEC_LASTSEND"); + String crspecLast = servicecrspecLast.getValue().getValue(); + + if (crspec.equals(crspecLast)) { + logger.debug("CRPatchTask: ignore this patch request. Seems they are the same as the last one send"); + serviceOrderManager.deleteServiceActionQueueItem(item); + return; + } + int retries = 0; response = createNewDeploymentUpdateRequest(aService, crspec); + while ( response.equals("SEE OTHER")) { + response = createNewDeploymentUpdateRequest(aService, crspec); + Thread.sleep(1000); + retries++; + if (retries>100) { //will support maximum 100 registered CRIDGE in queue + break; + } + } + + Note n = new Note(); n.setAuthor(compname); n.setDate(OffsetDateTime.now(ZoneOffset.UTC).toString()); if ( response!=null && response.equals("OK")) { - n.setText("Service Action CRPatchTask successful . Action: " + item.getAction() + ". "); } else { n.setText("Service Action CRPatchTask failed . Action: " + item.getAction() + ". Response = " + response); } supd.addNoteItem(n); + + servicecrspecLast.getValue().setValue( crspec ); + supd.addServiceCharacteristicItem(servicecrspecLast); + serviceOrderManager.deleteServiceActionQueueItem(item); serviceOrderManager.updateService(aService.getId(), supd, false); diff --git a/src/main/java/org/etsi/osl/osom/serviceactions/CRTerminateTask.java b/src/main/java/org/etsi/osl/osom/serviceactions/CRTerminateTask.java index 264804754548cbc51ea339c19e5e43d93ae56a92..6aad949a3a9f68aa0d9d0a52647d507688ed3c38 100644 --- a/src/main/java/org/etsi/osl/osom/serviceactions/CRTerminateTask.java +++ b/src/main/java/org/etsi/osl/osom/serviceactions/CRTerminateTask.java @@ -83,7 +83,17 @@ public class CRTerminateTask implements JavaDelegate { } try { - serviceOrderManager.cridgeDeletionRequest( map, crspec); + String response = serviceOrderManager.cridgeDeletionRequest( map, crspec); + + int retries = 0; + while ( response.equals("SEE OTHER")) { + response = serviceOrderManager.cridgeDeletionRequest( map, crspec); + Thread.sleep(1000); + retries++; + if (retries>100) { //will support maximum 100 registered CRIDGE in queue + break; + } + } } catch (Exception e) { // TODO Auto-generated catch block