Added information in the GET consumer job-status 14/6314/2
authorPatrikBuhr <patrik.buhr@est.tech>
Mon, 14 Jun 2021 10:09:11 +0000 (12:09 +0200)
committerPatrikBuhr <patrik.buhr@est.tech>
Mon, 14 Jun 2021 10:17:30 +0000 (12:17 +0200)
Added information about connected data producers for the information JOB.

Signed-off-by: PatrikBuhr <patrik.buhr@est.tech>
Issue-ID: NONRTRIC-524
Change-Id: Iff33f54c00805547834a2b77afe5669e3d973df4

enrichment-coordinator-service/api/ecs-api.json
enrichment-coordinator-service/api/ecs-api.yaml
enrichment-coordinator-service/src/main/java/org/oransc/enrichment/controllers/r1consumer/ConsumerController.java
enrichment-coordinator-service/src/main/java/org/oransc/enrichment/controllers/r1consumer/ConsumerJobStatus.java
enrichment-coordinator-service/src/main/java/org/oransc/enrichment/controllers/r1producer/ProducerController.java
enrichment-coordinator-service/src/main/java/org/oransc/enrichment/controllers/r1producer/ProducerStatusInfo.java
enrichment-coordinator-service/src/test/java/org/oransc/enrichment/ApplicationTest.java

index 6e7b541..c89d613 100644 (file)
         "consumer_job_status": {
             "description": "Status for an Information Job",
             "type": "object",
-            "required": ["info_job_status"],
-            "properties": {"info_job_status": {
-                "description": "Allowed values for Information Job status",
-                "type": "string",
-                "enum": [
-                    "ENABLED",
-                    "DISABLED"
-                ]
-            }}
+            "required": [
+                "info_job_status",
+                "producers"
+            ],
+            "properties": {
+                "info_job_status": {
+                    "description": "Allowed values for Information Job status",
+                    "type": "string",
+                    "enum": [
+                        "ENABLED",
+                        "DISABLED"
+                    ]
+                },
+                "producers": {
+                    "description": "An array of all registerred Information Producer Identifiers.",
+                    "type": "array",
+                    "items": {
+                        "description": "An array of all registerred Information Producer Identifiers.",
+                        "type": "string"
+                    }
+                }
+            }
         },
         "EiJobObject": {
             "description": "Information for an Enrichment Information Job",
index 50b8a12..6318ee1 100644 (file)
@@ -948,6 +948,7 @@ components:
     consumer_job_status:
       required:
       - info_job_status
+      - producers
       type: object
       properties:
         info_job_status:
@@ -956,6 +957,12 @@ components:
           enum:
           - ENABLED
           - DISABLED
+        producers:
+          type: array
+          description: An array of all registerred Information Producer Identifiers.
+          items:
+            type: string
+            description: An array of all registerred Information Producer Identifiers.
       description: Status for an Information Job
     EiJobObject:
       required:
index 18897c3..9f16728 100644 (file)
@@ -37,6 +37,7 @@ import java.lang.invoke.MethodHandles;
 import java.net.URI;
 import java.net.URISyntaxException;
 import java.util.ArrayList;
+import java.util.Collection;
 import java.util.List;
 
 import org.json.JSONObject;
@@ -226,9 +227,11 @@ public class ConsumerController {
     }
 
     private ConsumerJobStatus toInfoJobStatus(InfoJob job) {
+        Collection<String> producerIds = new ArrayList<>();
+        this.infoProducers.getProducersForType(job.getTypeId()).forEach(producer -> producerIds.add(producer.getId()));
         return this.infoProducers.isJobEnabled(job)
-            ? new ConsumerJobStatus(ConsumerJobStatus.InfoJobStatusValues.ENABLED)
-            : new ConsumerJobStatus(ConsumerJobStatus.InfoJobStatusValues.DISABLED);
+            ? new ConsumerJobStatus(ConsumerJobStatus.InfoJobStatusValues.ENABLED, producerIds)
+            : new ConsumerJobStatus(ConsumerJobStatus.InfoJobStatusValues.DISABLED, producerIds);
 
     }
 
index d40ecda..84f605b 100644 (file)
@@ -25,6 +25,8 @@ import com.google.gson.annotations.SerializedName;
 
 import io.swagger.v3.oas.annotations.media.Schema;
 
+import java.util.Collection;
+
 import org.immutables.gson.Gson;
 
 @Gson.TypeAdapters
@@ -41,16 +43,24 @@ public class ConsumerJobStatus {
         + "ENABLED: the A1-Information producer is able to deliver result for the Information Job\n" //
         + "DISABLED: the A1-Information producer is unable to deliver result for the Information Job";
 
+    private static final String PRODUCERS_DESCRIPTION = "An array of all registerred Information Producer Identifiers.";
+
     @Schema(name = "info_job_status", description = OPERATIONAL_STATE_DESCRIPTION, required = true)
     @SerializedName("info_job_status")
     @JsonProperty(value = "info_job_status", required = true)
     public InfoJobStatusValues state;
 
+    @Schema(name = "producers", description = PRODUCERS_DESCRIPTION, required = true)
+    @SerializedName("producers")
+    @JsonProperty(value = "producers", required = true)
+    public Collection<String> producers;
+
     public ConsumerJobStatus() {
     }
 
-    public ConsumerJobStatus(InfoJobStatusValues state) {
+    public ConsumerJobStatus(InfoJobStatusValues state, Collection<String> producers) {
         this.state = state;
+        this.producers = producers;
     }
 
 }
index 8d2fef9..15bd56d 100644 (file)
@@ -230,7 +230,7 @@ public class ProducerController {
     public ResponseEntity<Object> getInfoProducer( //
         @PathVariable("infoProducerId") String infoProducerId) {
         try {
-            InfoProducer  producer = this.infoProducers.getProducer(infoProducerId);
+            InfoProducer producer = this.infoProducers.getProducer(infoProducerId);
             ProducerRegistrationInfo info = toProducerRegistrationInfo(producer);
             return new ResponseEntity<>(gson.toJson(info), HttpStatus.OK);
         } catch (Exception e) {
index 055ab91..3bb2a05 100644 (file)
@@ -38,8 +38,8 @@ public class ProducerStatusInfo {
     }
 
     private static final String OPERATIONAL_STATE_DESCRIPTION = "Operational state, values:\n" //
-        + "ENABLED: TBD\n" //
-        + "DISABLED: TBD.";
+        + "ENABLED: the producer is operational\n" //
+        + "DISABLED: the producer is not operational";
 
     @Schema(name = "operational_state", description = OPERATIONAL_STATE_DESCRIPTION, required = true)
     @SerializedName("operational_state")
index cbc34cb..dceed3c 100644 (file)
@@ -57,6 +57,7 @@ import org.oransc.enrichment.controllers.a1e.A1eEiTypeInfo;
 import org.oransc.enrichment.controllers.r1consumer.ConsumerConsts;
 import org.oransc.enrichment.controllers.r1consumer.ConsumerInfoTypeInfo;
 import org.oransc.enrichment.controllers.r1consumer.ConsumerJobInfo;
+import org.oransc.enrichment.controllers.r1consumer.ConsumerJobStatus;
 import org.oransc.enrichment.controllers.r1producer.ProducerCallbacks;
 import org.oransc.enrichment.controllers.r1producer.ProducerConsts;
 import org.oransc.enrichment.controllers.r1producer.ProducerInfoTypeInfo;
@@ -352,6 +353,10 @@ class ApplicationTest {
         String url = ConsumerConsts.API_ROOT + "/info-jobs/jobId/status";
         String rsp = restClient().get(url).block();
         assertThat(rsp).contains("ENABLED");
+        assertThat(rsp).contains(PRODUCER_ID);
+
+        ConsumerJobStatus status = gson.fromJson(rsp, ConsumerJobStatus.class);
+        assertThat(status.producers).contains(PRODUCER_ID);
     }
 
     @Test