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 0000000000000000000000000000000000000000..10dc57e0558e088b99ca36a6228ac747dcc984f8 --- /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 faa074bab0207287f57150235ea1cdd29adec52c..ab42bdf9c800c37c2934a71d38989bd6202f8423 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 0000000000000000000000000000000000000000..96e060db4e9827f1926b5c79b19a2e826ba8fd2e --- /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 9210047bcd9ac9a8d71da8967c0b722cc54e170a..07b2eaca893fda440a4b0c79a853f411a53487c8 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