From f32d31ca9914b05331ef725de921db62737b5faa Mon Sep 17 00:00:00 2001 From: trantzas Date: Mon, 18 Aug 2025 17:47:52 +0000 Subject: [PATCH 1/4] Preparing the develop branch for 2025Q4 Release Cycle --- Dockerfile | 6 +++--- pom.xml | 2 +- 2 files changed, 4 insertions(+), 4 deletions(-) diff --git a/Dockerfile b/Dockerfile index c008033..0ec0533 100644 --- a/Dockerfile +++ b/Dockerfile @@ -2,7 +2,7 @@ FROM ibm-semeru-runtimes:open-17.0.7_7-jdk MAINTAINER openslice.io RUN mkdir /opt/shareclasses RUN mkdir -p /opt/openslice/lib/ -COPY target/org.etsi.osl.osom-1.2.0.jar /opt/openslice/lib/ -COPY target/org.etsi.osl.osom-1.2.0-exec.jar /opt/openslice/lib/ +COPY target/org.etsi.osl.osom-1.3.0-SNAPSHOT.jar /opt/openslice/lib/ +COPY target/org.etsi.osl.osom-1.3.0-SNAPSHOT-exec.jar /opt/openslice/lib/ COPY . /opt/openslice/lib/ -CMD ["java", "-Xshareclasses:cacheDir=/opt/shareclasses","-jar", "/opt/openslice/lib/org.etsi.osl.osom-1.2.0-exec.jar"] \ No newline at end of file +CMD ["java", "-Xshareclasses:cacheDir=/opt/shareclasses","-jar", "/opt/openslice/lib/org.etsi.osl.osom-1.3.0-SNAPSHOT-exec.jar"] \ No newline at end of file diff --git a/pom.xml b/pom.xml index 441a138..68670a8 100644 --- a/pom.xml +++ b/pom.xml @@ -5,7 +5,7 @@ org.etsi.osl org.etsi.osl.main - 2025Q2 + 2025Q4-SNAPSHOT ../org.etsi.osl.main -- GitLab From 334e4a0263dd194b16d498f41d2121e1e060ae89 Mon Sep 17 00:00:00 2001 From: Christos Tranoris Date: Mon, 13 Oct 2025 21:39:59 +0200 Subject: [PATCH 2/4] fixes #36 --- .../osom/management/GCOrchestrationCheckDeploymentService.java | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/main/java/org/etsi/osl/osom/management/GCOrchestrationCheckDeploymentService.java b/src/main/java/org/etsi/osl/osom/management/GCOrchestrationCheckDeploymentService.java index 8f1e4d0..f8e018c 100644 --- a/src/main/java/org/etsi/osl/osom/management/GCOrchestrationCheckDeploymentService.java +++ b/src/main/java/org/etsi/osl/osom/management/GCOrchestrationCheckDeploymentService.java @@ -85,7 +85,7 @@ public class GCOrchestrationCheckDeploymentService implements JavaDelegate { Resource res = serviceOrderManager.retrieveResource(rref.getId()); if ( res == null ) { - supd.setState( ServiceStateType.TERMINATED); + supd.setState( ServiceStateType.INACTIVE); execution.setVariable("serviceDeploymentFinished", Boolean.TRUE); Service serviceResult = serviceOrderManager.updateService( aService.getId(), supd, propagateToSO ); return; -- GitLab From 0e5adf3a38742a4f2504b2c41987c1210ab07ca5 Mon Sep 17 00:00:00 2001 From: Christos Tranoris Date: Tue, 2 Dec 2025 15:13:09 +0200 Subject: [PATCH 3/4] fixes #37 --- .../org/etsi/osl/osom/lcm/ChatClient.java | 66 +++++++++++++++++++ .../etsi/osl/osom/lcm/LcmBaseExecutor.java | 15 +++++ .../osom/management/ServiceOrderManager.java | 9 +++ .../AutomaticallyHandleAction.java | 11 ++-- 4 files changed, 97 insertions(+), 4 deletions(-) create mode 100644 src/main/java/org/etsi/osl/osom/lcm/ChatClient.java diff --git a/src/main/java/org/etsi/osl/osom/lcm/ChatClient.java b/src/main/java/org/etsi/osl/osom/lcm/ChatClient.java new file mode 100644 index 0000000..dd1b6ab --- /dev/null +++ b/src/main/java/org/etsi/osl/osom/lcm/ChatClient.java @@ -0,0 +1,66 @@ +package org.etsi.osl.osom.lcm; + +import org.springframework.stereotype.Service; +import lombok.extern.slf4j.Slf4j; +import org.apache.camel.CamelExecutionException; +import org.apache.camel.ExchangeTimedOutException; +import org.apache.camel.ProducerTemplate; + +@Service +@Slf4j +public class ChatClient { + + + + private static final int MAX_ATTEMPTS = 3; + + private final ProducerTemplate producerTemplate; + + public ChatClient(ProducerTemplate producerTemplate) { + this.producerTemplate = producerTemplate; + } + + /** + * Sends a String message to ActiveMQ and waits for a String reply. + * Retries up to 3 times in case of timeout. + * + * @param payload the request payload + * @return the response String, or "" if all attempts time out or fail + */ + public String ask(String agentName, String payload, String defaultText, Integer timeOut) { + for (int attempt = 1; attempt <= MAX_ATTEMPTS; attempt++) { + try { + String ENDPOINT_URI = + "jms:queue:agents/" + agentName + + "?exchangePattern=InOut" + + "&requestTimeout=" + timeOut ; // x milliseconds timeout per attempt + + String response = producerTemplate.requestBody( + ENDPOINT_URI, + payload, + String.class); + + // If response is non-null, return it + if (response != null) { + return response; + } + } catch (CamelExecutionException ex) { + // Check if the underlying cause is a timeout + if (ex.getCause() instanceof ExchangeTimedOutException) { + log.warn("Timeout on attempt {} for payload {}", attempt, payload, ex); + } else { + // Non-timeout error; break or handle differently + log.error("Non-timeout error on attempt {}", attempt, ex); + break; + } + } catch (Exception ex) { + log.error("Unexpected error on attempt {}", attempt, ex); + break; + } + } + + // All attempts failed or timed out + return ""; + } + +} diff --git a/src/main/java/org/etsi/osl/osom/lcm/LcmBaseExecutor.java b/src/main/java/org/etsi/osl/osom/lcm/LcmBaseExecutor.java index 741676d..fbe909d 100644 --- a/src/main/java/org/etsi/osl/osom/lcm/LcmBaseExecutor.java +++ b/src/main/java/org/etsi/osl/osom/lcm/LcmBaseExecutor.java @@ -44,6 +44,7 @@ import org.etsi.osl.tmf.so641.model.ServiceOrder; import org.etsi.osl.tmf.so641.model.ServiceOrderCreate; import org.etsi.osl.tmf.so641.model.ServiceOrderItemRelationship; import org.etsi.osl.tmf.so641.model.ServiceOrderStateType; +import org.springframework.beans.factory.annotation.Autowired; import org.springframework.core.ParameterizedTypeReference; import org.springframework.http.HttpHeaders; import org.springframework.http.HttpStatusCode; @@ -1156,6 +1157,18 @@ public abstract class LcmBaseExecutor { return ""; } + + public String askAgent(String agentName,String payload, String defaultText, Integer timeOut) { + ChatClient chatClient = this.vars.getServiceOrderManager().getChatClient(agentName); + if ( chatClient !=null ) { + if (timeOut == null) { + timeOut = 60000; + } + return chatClient.ask(agentName, payload, defaultText, timeOut); + }else { + return defaultText; + } + } static T toJsonObj(String content, TypeReference typeReference) throws IOException { ObjectMapper mapper = new ObjectMapper(); @@ -1168,4 +1181,6 @@ public abstract class LcmBaseExecutor { mapper.setSerializationInclusion(JsonInclude.Include.NON_NULL); return mapper.writeValueAsString(object); } + + } diff --git a/src/main/java/org/etsi/osl/osom/management/ServiceOrderManager.java b/src/main/java/org/etsi/osl/osom/management/ServiceOrderManager.java index 55c4dc0..91729c3 100644 --- a/src/main/java/org/etsi/osl/osom/management/ServiceOrderManager.java +++ b/src/main/java/org/etsi/osl/osom/management/ServiceOrderManager.java @@ -34,6 +34,7 @@ import org.apache.commons.logging.LogFactory; import org.etsi.osl.model.nfv.DeploymentDescriptor; import org.etsi.osl.model.nfv.NetworkServiceDescriptor; import org.etsi.osl.model.nfv.ScaleDescriptor; +import org.etsi.osl.osom.lcm.ChatClient; import org.etsi.osl.osom.serviceactions.NSActionRequestPayload; import org.etsi.osl.tmf.pm628.model.MeasurementCollectionJob; import org.etsi.osl.tmf.pm628.model.MeasurementCollectionJobFVO; @@ -204,6 +205,9 @@ public class ServiceOrderManager { @Value("${PM_MEASUREMENT_COLLECTION_JOB_UPDATE}") private String PM_MEASUREMENT_COLLECTION_JOB_UPDATE; + @Autowired + private ChatClient chatClient; + @Transactional public void processOrder(ServiceOrder serviceOrder) { @@ -1204,6 +1208,11 @@ public class ServiceOrderManager { return null; } + public ChatClient getChatClient(String agentName) { + + return chatClient; + } + diff --git a/src/main/java/org/etsi/osl/osom/serviceactions/AutomaticallyHandleAction.java b/src/main/java/org/etsi/osl/osom/serviceactions/AutomaticallyHandleAction.java index 2602be8..2d30dd4 100644 --- a/src/main/java/org/etsi/osl/osom/serviceactions/AutomaticallyHandleAction.java +++ b/src/main/java/org/etsi/osl/osom/serviceactions/AutomaticallyHandleAction.java @@ -67,7 +67,10 @@ public class AutomaticallyHandleAction implements JavaDelegate { ResourceRef rr = aService.getSupportingResource().stream().findFirst().get(); Resource relatedResource = serviceOrderManager.retrieveResource( rr.getId() ); - + if ( relatedResource == null ) { + serviceOrderManager.deleteServiceActionQueueItem( item ); + return; + } ResourceUpdate aResourceUpdate = resourceToResourceUpdate(relatedResource); //pass characteristic values from services to resource @@ -118,7 +121,7 @@ public class AutomaticallyHandleAction implements JavaDelegate { } } else { - + //metric deletion arrives here also response = createNewResourceDeleteRequest(aService, relatedResource, aResourceUpdate, serviceOrderID ); @@ -156,11 +159,11 @@ public class AutomaticallyHandleAction implements JavaDelegate { private ResourceUpdate resourceToResourceUpdate(Resource source) { + ResourceUpdate resourceUpdate = new ResourceUpdate(); if ( source == null ) { - return null; + return resourceUpdate; } - ResourceUpdate resourceUpdate = new ResourceUpdate(); resourceUpdate.setCategory( source.getCategory() ); resourceUpdate.setDescription( source.getDescription() ); -- GitLab From 16c06b5f6418e4e3573a33f8c0a06b28bb5c29ef Mon Sep 17 00:00:00 2001 From: Kostis Trantzas Date: Sat, 24 Jan 2026 21:27:50 +0000 Subject: [PATCH 4/4] Preparation for Release 2025Q4 --- Dockerfile | 6 +++--- pom.xml | 2 +- 2 files changed, 4 insertions(+), 4 deletions(-) diff --git a/Dockerfile b/Dockerfile index 0ec0533..0d27f75 100644 --- a/Dockerfile +++ b/Dockerfile @@ -2,7 +2,7 @@ FROM ibm-semeru-runtimes:open-17.0.7_7-jdk MAINTAINER openslice.io RUN mkdir /opt/shareclasses RUN mkdir -p /opt/openslice/lib/ -COPY target/org.etsi.osl.osom-1.3.0-SNAPSHOT.jar /opt/openslice/lib/ -COPY target/org.etsi.osl.osom-1.3.0-SNAPSHOT-exec.jar /opt/openslice/lib/ +COPY target/org.etsi.osl.osom-1.3.0.jar /opt/openslice/lib/ +COPY target/org.etsi.osl.osom-1.3.0-exec.jar /opt/openslice/lib/ COPY . /opt/openslice/lib/ -CMD ["java", "-Xshareclasses:cacheDir=/opt/shareclasses","-jar", "/opt/openslice/lib/org.etsi.osl.osom-1.3.0-SNAPSHOT-exec.jar"] \ No newline at end of file +CMD ["java", "-Xshareclasses:cacheDir=/opt/shareclasses","-jar", "/opt/openslice/lib/org.etsi.osl.osom-1.3.0-exec.jar"] \ No newline at end of file diff --git a/pom.xml b/pom.xml index 68670a8..c5491e4 100644 --- a/pom.xml +++ b/pom.xml @@ -5,7 +5,7 @@ org.etsi.osl org.etsi.osl.main - 2025Q4-SNAPSHOT + 2025Q4 ../org.etsi.osl.main -- GitLab