From f466ba91ff680acdacaa21a9ba147403d5bd3c0a Mon Sep 17 00:00:00 2001
From: George Tziavas <g.tziavas@ac.upatras.gr>
Date: Mon, 14 Oct 2024 14:22:40 +0300
Subject: [PATCH] Changes to be committed: 	renamed:    Documentation.md
 -> Documentation/Documentation.md 	new file:  
 Documentation/FlowDiagram.puml 	modified:   pom.xml 	new file:  
 src/main/java/org/etsi/osl/metrico/MetricoRouteBuilder.java 	modified:  
 src/main/resources/application.yml

MetricoRouteBuilder is not running
---
 .../Documentation.md                          |  0
 Documentation/FlowDiagram.puml                | 34 ++++++++++++++
 pom.xml                                       |  5 +++
 .../etsi/osl/metrico/MetricoRouteBuilder.java | 45 +++++++++++++++++++
 src/main/resources/application.yml            | 12 ++++-
 5 files changed, 95 insertions(+), 1 deletion(-)
 rename Documentation.md => Documentation/Documentation.md (100%)
 create mode 100644 Documentation/FlowDiagram.puml
 create mode 100644 src/main/java/org/etsi/osl/metrico/MetricoRouteBuilder.java

diff --git a/Documentation.md b/Documentation/Documentation.md
similarity index 100%
rename from Documentation.md
rename to Documentation/Documentation.md
diff --git a/Documentation/FlowDiagram.puml b/Documentation/FlowDiagram.puml
new file mode 100644
index 0000000..10dc57e
--- /dev/null
+++ b/Documentation/FlowDiagram.puml
@@ -0,0 +1,34 @@
+@startuml FlowDiagram
+actor        "ACTOR"              as actor
+participant  "OSOM"               as osom
+participant  "TMF API"            as tmf_api
+queue        amq                  as amq
+participant  "Monitoring Service" as smon
+participant  prometheus           as prom
+
+
+actor   -> tmf_api: CREATE: Service Order Monitoring aaS
+osom    -> osom: PROCESS ORDER
+osom    -> tmf_api: CREATE: service instance of monitoring aaS (CFS)
+osom    -> tmf_api: CREATE: service instance of monitoring aaS (RFS)
+
+osom    -> amq: CREATE: TMF628 Measurement Collection Job
+amq     -> tmf_api: CREATE: TMF628 Measurement Collection Job
+tmf_api -> amq: PUBLISH EVENT: Monitoring Job Created
+amq     -> smon: RECEIVE EVENT: Monitoring Job Created
+smon    -> smon: create job
+smon    -> amq: UPDATE TMF628 Performance Indicator Job
+amq     -> tmf_api: UPDATE TMF628 object
+
+smon -> smon: Create a java job with refresh rate
+group "java job"
+    smon -> smon   : set how often job is done
+    smon -> prom   : send prom req
+    prom -> smon   : reply to prom req
+    smon -> smon   : parse data from reply and cast them to performance indicator
+    smon -> amq    : "UPDATE: TMF628 object"
+    amq  -> tmf_api: "UPDATE: TMF628 object"
+    smon -> amq    : "UPDATE: Related service to the Service Inventory"
+    amq  -> tmf_api: "UPDATE: Related service to the Service Inventory"    
+end
+@enduml
diff --git a/pom.xml b/pom.xml
index faa074b..ab42bdf 100644
--- a/pom.xml
+++ b/pom.xml
@@ -78,6 +78,11 @@
 			<artifactId>org.etsi.osl.model.tmf</artifactId>
 			<version>${org.etsi.osl.model.tmf.version}</version>
 		</dependency>
+		<dependency>
+			<groupId>org.etsi.osl</groupId>
+			<artifactId>org.etsi.osl.centrallog.client</artifactId>
+			<version>${org.etsi.osl.centrallog.client.version}</version>
+		</dependency>
 
 <!-- Lombok -->
 		<dependency>
diff --git a/src/main/java/org/etsi/osl/metrico/MetricoRouteBuilder.java b/src/main/java/org/etsi/osl/metrico/MetricoRouteBuilder.java
new file mode 100644
index 0000000..96e060d
--- /dev/null
+++ b/src/main/java/org/etsi/osl/metrico/MetricoRouteBuilder.java
@@ -0,0 +1,45 @@
+package org.etsi.osl.metrico;
+
+
+import org.apache.camel.LoggingLevel;
+import org.apache.camel.builder.RouteBuilder;
+import org.apache.commons.logging.Log;
+import org.apache.commons.logging.LogFactory;
+import org.etsi.osl.metrico.prometheus.PrometheusQueries;
+import org.etsi.osl.metrico.reposervices.JobRepoService;
+import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.beans.factory.annotation.Value;
+import org.springframework.context.annotation.Configuration;
+import org.springframework.stereotype.Component;
+import org.etsi.osl.centrallog.client.CentralLogger;
+
+@Configuration
+@Component
+public class MetricoRouteBuilder extends RouteBuilder {
+
+    private static final transient Log logger = LogFactory.getLog(MetricoRouteBuilder.class);
+
+    final JobRepoService jobRepoService;
+    private final PrometheusQueries prometheusQueries;
+
+    public MetricoRouteBuilder(JobRepoService jobRepoService, PrometheusQueries prometheusQueries) {
+        this.jobRepoService = jobRepoService;
+        this.prometheusQueries = prometheusQueries;
+    }
+
+    @Value("${MEASUREMENT_COLLECTION_JOB_CREATED}")
+    private static String MEASUREMENT_COLLECTION_JOB_CREATED;
+
+    @Value("${MEASUREMENT_COLLECTION_JOB_RESPONSE}")
+    private static String MEASUREMENT_COLLECTION_JOB_RESPONSE ;
+
+    public  void configure() throws Exception{
+        from(MEASUREMENT_COLLECTION_JOB_CREATED)
+                .log(LoggingLevel.INFO, log, MEASUREMENT_COLLECTION_JOB_CREATED + "message received!")
+                .to("log:DEBUG?showBody=true&showHeaders=true")
+                .process(exchange -> prometheusQueries.startPeriodicQuery())
+                .setBody(simple("Message received and processed"))
+                .to(MEASUREMENT_COLLECTION_JOB_RESPONSE);
+
+    }
+}
diff --git a/src/main/resources/application.yml b/src/main/resources/application.yml
index 9210047..07b2eac 100644
--- a/src/main/resources/application.yml
+++ b/src/main/resources/application.yml
@@ -59,4 +59,14 @@ logging:
     console: "%d{HH:mm:ss.SSS} [%t] %-5level %logger{36} - %msg%n"
     file: "%d %p %c{1.} [%t] %m%n"
     
-scheduling.enabled: true
\ No newline at end of file
+scheduling.enabled: true
+
+#TMF QUEUES
+PM_GET_MEASUREMENT_COLLECTION_JOB_BY_ID: "jms:queue:PM.GET.MEASUREMENTCOLLECTIONJOB_BY_ID"
+PM_GET_MEASUREMENT_COLLECTION_JOBS: "jms:queue:PM.GET.MEASUREMENTCOLLECTIONJOBS"
+PM_ADD_MEASUREMENT_COLLECTION_JOB: "jms:queue:PM.ADD.MEASUREMENTCOLLECTIONJOB"
+PM_UPDATE_MEASUREMENT_COLLECTION_JOB: "jms:queue:PM.UPD.MEASUREMENTCOLLECTIONJOB"
+
+# COMMON QUEUES
+MEASUREMENT_COLLECTION_JOB_CREATED: "jms:queue:MEASUREMENT_COLLECTION_JOB.CREATED"
+MEASUREMENT_COLLECTION_JOB_RESPONSE: "jms:queue:MEASUREMENT_COLLECTION_JOB.RESPONSE"
\ No newline at end of file
-- 
GitLab