From: PatrikBuhr Date: Mon, 14 Jun 2021 10:09:11 +0000 (+0200) Subject: Added information in the GET consumer job-status X-Git-Tag: 2.2.0~12^2 X-Git-Url: https://gerrit.o-ran-sc.org/r/gitweb?a=commitdiff_plain;h=9308f75bda6cd0bce421d8afded6b96c1822a999;p=nonrtric.git Added information in the GET consumer job-status Added information about connected data producers for the information JOB. Signed-off-by: PatrikBuhr Issue-ID: NONRTRIC-524 Change-Id: Iff33f54c00805547834a2b77afe5669e3d973df4 --- diff --git a/enrichment-coordinator-service/api/ecs-api.json b/enrichment-coordinator-service/api/ecs-api.json index 6e7b541e..c89d6138 100644 --- a/enrichment-coordinator-service/api/ecs-api.json +++ b/enrichment-coordinator-service/api/ecs-api.json @@ -103,15 +103,28 @@ "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", diff --git a/enrichment-coordinator-service/api/ecs-api.yaml b/enrichment-coordinator-service/api/ecs-api.yaml index 50b8a12e..6318ee16 100644 --- a/enrichment-coordinator-service/api/ecs-api.yaml +++ b/enrichment-coordinator-service/api/ecs-api.yaml @@ -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: diff --git a/enrichment-coordinator-service/src/main/java/org/oransc/enrichment/controllers/r1consumer/ConsumerController.java b/enrichment-coordinator-service/src/main/java/org/oransc/enrichment/controllers/r1consumer/ConsumerController.java index 18897c30..9f16728b 100644 --- a/enrichment-coordinator-service/src/main/java/org/oransc/enrichment/controllers/r1consumer/ConsumerController.java +++ b/enrichment-coordinator-service/src/main/java/org/oransc/enrichment/controllers/r1consumer/ConsumerController.java @@ -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 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); } diff --git a/enrichment-coordinator-service/src/main/java/org/oransc/enrichment/controllers/r1consumer/ConsumerJobStatus.java b/enrichment-coordinator-service/src/main/java/org/oransc/enrichment/controllers/r1consumer/ConsumerJobStatus.java index d40ecda5..84f605b9 100644 --- a/enrichment-coordinator-service/src/main/java/org/oransc/enrichment/controllers/r1consumer/ConsumerJobStatus.java +++ b/enrichment-coordinator-service/src/main/java/org/oransc/enrichment/controllers/r1consumer/ConsumerJobStatus.java @@ -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 producers; + public ConsumerJobStatus() { } - public ConsumerJobStatus(InfoJobStatusValues state) { + public ConsumerJobStatus(InfoJobStatusValues state, Collection producers) { this.state = state; + this.producers = producers; } } diff --git a/enrichment-coordinator-service/src/main/java/org/oransc/enrichment/controllers/r1producer/ProducerController.java b/enrichment-coordinator-service/src/main/java/org/oransc/enrichment/controllers/r1producer/ProducerController.java index 8d2fef9b..15bd56dd 100644 --- a/enrichment-coordinator-service/src/main/java/org/oransc/enrichment/controllers/r1producer/ProducerController.java +++ b/enrichment-coordinator-service/src/main/java/org/oransc/enrichment/controllers/r1producer/ProducerController.java @@ -230,7 +230,7 @@ public class ProducerController { public ResponseEntity 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) { diff --git a/enrichment-coordinator-service/src/main/java/org/oransc/enrichment/controllers/r1producer/ProducerStatusInfo.java b/enrichment-coordinator-service/src/main/java/org/oransc/enrichment/controllers/r1producer/ProducerStatusInfo.java index 055ab913..3bb2a051 100644 --- a/enrichment-coordinator-service/src/main/java/org/oransc/enrichment/controllers/r1producer/ProducerStatusInfo.java +++ b/enrichment-coordinator-service/src/main/java/org/oransc/enrichment/controllers/r1producer/ProducerStatusInfo.java @@ -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") diff --git a/enrichment-coordinator-service/src/test/java/org/oransc/enrichment/ApplicationTest.java b/enrichment-coordinator-service/src/test/java/org/oransc/enrichment/ApplicationTest.java index cbc34cbd..dceed3ca 100644 --- a/enrichment-coordinator-service/src/test/java/org/oransc/enrichment/ApplicationTest.java +++ b/enrichment-coordinator-service/src/test/java/org/oransc/enrichment/ApplicationTest.java @@ -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