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
"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",
consumer_job_status:
required:
- info_job_status
+ - producers
type: object
properties:
info_job_status:
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:
import java.net.URI;
import java.net.URISyntaxException;
import java.util.ArrayList;
+import java.util.Collection;
import java.util.List;
import org.json.JSONObject;
}
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);
}
import io.swagger.v3.oas.annotations.media.Schema;
+import java.util.Collection;
+
import org.immutables.gson.Gson;
@Gson.TypeAdapters
+ "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;
}
}
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) {
}
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")
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;
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