Loading Dockerfile +3 −3 Original line number Diff line number Diff line Loading @@ -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.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.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-exec.jar"] No newline at end of file pom.xml +1 −1 Original line number Diff line number Diff line Loading @@ -5,7 +5,7 @@ <parent> <groupId>org.etsi.osl</groupId> <artifactId>org.etsi.osl.main</artifactId> <version>2025Q2</version> <version>2025Q4</version> <relativePath>../org.etsi.osl.main</relativePath> </parent> Loading src/main/java/org/etsi/osl/osom/lcm/ChatClient.java 0 → 100644 +66 −0 Original line number Diff line number Diff line 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 ""; } } src/main/java/org/etsi/osl/osom/lcm/LcmBaseExecutor.java +15 −0 Original line number Diff line number Diff line Loading @@ -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; Loading Loading @@ -1157,6 +1158,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> T toJsonObj(String content, TypeReference<T> typeReference) throws IOException { ObjectMapper mapper = new ObjectMapper(); mapper.setSerializationInclusion(JsonInclude.Include.NON_NULL); Loading @@ -1168,4 +1181,6 @@ public abstract class LcmBaseExecutor { mapper.setSerializationInclusion(JsonInclude.Include.NON_NULL); return mapper.writeValueAsString(object); } } src/main/java/org/etsi/osl/osom/management/GCOrchestrationCheckDeploymentService.java +1 −1 Original line number Diff line number Diff line Loading @@ -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; Loading Loading
Dockerfile +3 −3 Original line number Diff line number Diff line Loading @@ -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.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.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-exec.jar"] No newline at end of file
pom.xml +1 −1 Original line number Diff line number Diff line Loading @@ -5,7 +5,7 @@ <parent> <groupId>org.etsi.osl</groupId> <artifactId>org.etsi.osl.main</artifactId> <version>2025Q2</version> <version>2025Q4</version> <relativePath>../org.etsi.osl.main</relativePath> </parent> Loading
src/main/java/org/etsi/osl/osom/lcm/ChatClient.java 0 → 100644 +66 −0 Original line number Diff line number Diff line 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 ""; } }
src/main/java/org/etsi/osl/osom/lcm/LcmBaseExecutor.java +15 −0 Original line number Diff line number Diff line Loading @@ -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; Loading Loading @@ -1157,6 +1158,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> T toJsonObj(String content, TypeReference<T> typeReference) throws IOException { ObjectMapper mapper = new ObjectMapper(); mapper.setSerializationInclusion(JsonInclude.Include.NON_NULL); Loading @@ -1168,4 +1181,6 @@ public abstract class LcmBaseExecutor { mapper.setSerializationInclusion(JsonInclude.Include.NON_NULL); return mapper.writeValueAsString(object); } }
src/main/java/org/etsi/osl/osom/management/GCOrchestrationCheckDeploymentService.java +1 −1 Original line number Diff line number Diff line Loading @@ -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; Loading