summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorleventecsanyi <levente.csanyi@est.tech>2024-07-26 13:25:12 +0200
committerleventecsanyi <levente.csanyi@est.tech>2024-07-26 16:41:38 +0200
commitee4242c9d89dc1a814f12d0f90880e3f21745f43 (patch)
treeba07625919bbf93de269a7d46d97888a6b780c6e
parent7f49c706b6fba519d34099b08450b884d53c798b (diff)
Get data job result
- extended openapi - added not-implemented http error for result endpoint - added testware - added stub implementation - fixed writeDataJob bug in stub Issue-ID: CPS-2296 Signed-off-by: leventecsanyi <levente.csanyi@est.tech> Change-Id: I9398cb73b635bec360df886372690187ff54e0d4
-rw-r--r--dmi-service/openapi/openapi-datajob.yml22
-rw-r--r--dmi-service/src/main/java/org/onap/cps/ncmp/dmi/datajobs/rest/controller/DmiDatajobsRestController.java41
-rw-r--r--dmi-service/src/test/groovy/org/onap/cps/ncmp/dmi/datajobs/rest/controller/DmiDatajobsRestControllerSpec.groovy12
-rw-r--r--dmi-stub/dmi-plugin-demo-and-csit-stub-service/src/main/java/org/onap/cps/ncmp/dmi/rest/stub/controller/DmiRestStubController.java23
-rw-r--r--docs/api/swagger/openapi-datajob.yaml64
5 files changed, 149 insertions, 13 deletions
diff --git a/dmi-service/openapi/openapi-datajob.yml b/dmi-service/openapi/openapi-datajob.yml
index 68ee3ecc..aa93623c 100644
--- a/dmi-service/openapi/openapi-datajob.yml
+++ b/dmi-service/openapi/openapi-datajob.yml
@@ -74,6 +74,20 @@ paths:
responses:
"501":
$ref: '#/components/responses/NotImplemented'
+ /v1/dataJob/{requestId}/dataProducerJob/{dataProducerJobId}/result:
+ get:
+ description: Retrieve the result of a data job.
+ operationId: getDataJobResult
+ parameters:
+ - $ref: '#/components/parameters/requestIdInPath'
+ - $ref: '#/components/parameters/dataProducerJobIdInPath'
+ - $ref: '#/components/parameters/dataProducerIdInQuery'
+ - $ref: '#/components/parameters/destinationInQuery'
+ tags:
+ - dmi-datajob
+ responses:
+ "501":
+ $ref: '#/components/responses/NotImplemented'
components:
parameters:
@@ -101,6 +115,14 @@ components:
schema:
type: string
example: some-data-producer-identifier
+ destinationInQuery:
+ name: destination
+ in: query
+ description: The destination of the results (Kafka topic name or s3 bucket name)
+ required: true
+ schema:
+ type: string
+ example: some-destination
schemas:
ErrorMessage:
type: object
diff --git a/dmi-service/src/main/java/org/onap/cps/ncmp/dmi/datajobs/rest/controller/DmiDatajobsRestController.java b/dmi-service/src/main/java/org/onap/cps/ncmp/dmi/datajobs/rest/controller/DmiDatajobsRestController.java
index 8cf9f1fb..928ec6b6 100644
--- a/dmi-service/src/main/java/org/onap/cps/ncmp/dmi/datajobs/rest/controller/DmiDatajobsRestController.java
+++ b/dmi-service/src/main/java/org/onap/cps/ncmp/dmi/datajobs/rest/controller/DmiDatajobsRestController.java
@@ -34,13 +34,13 @@ public class DmiDatajobsRestController implements DmiDatajobApi {
/**
* This method is not implemented for ONAP DMI plugin.
*
- * @param requestId Identifier for the overall Datajob (required)
- * @param subjobReadRequest Operation body (optional)
- * @return (@ code ResponseEntity) response entity
+ * @param requestId Identifier for the overall Datajob (required)
+ * @param subjobReadRequest Operation body (optional)
+ * @return (@ code ResponseEntity) Response entity
*/
@Override
public ResponseEntity<Void> readDataJob(final String requestId,
- final SubjobReadRequest subjobReadRequest) {
+ final SubjobReadRequest subjobReadRequest) {
return new ResponseEntity<>(HttpStatus.NOT_IMPLEMENTED);
}
@@ -48,23 +48,23 @@ public class DmiDatajobsRestController implements DmiDatajobApi {
/**
* This method is not implemented for ONAP DMI plugin.
*
- * @param requestId Identifier for the overall Datajob (required)
- * @param subjobWriteRequest Operation body (optional)
- * @return (@ code ResponseEntity) response entity
+ * @param requestId Identifier for the overall Datajob (required)
+ * @param subjobWriteRequest Operation body (optional)
+ * @return (@ code ResponseEntity) Response entity
*/
@Override
public ResponseEntity<Void> writeDataJob(final String requestId,
- final SubjobWriteRequest subjobWriteRequest) {
+ final SubjobWriteRequest subjobWriteRequest) {
return new ResponseEntity<>(HttpStatus.NOT_IMPLEMENTED);
}
/**
* This method is not implemented for ONAP DMI plugin.
*
- * @param requestId Identifier for the overall Datajob (required)
- * @param dataProducerJobId Identifier for the data producer job (required)
- * @param dataProducerId Identifier for the data producer as a query parameter (required)
- * @return ResponseEntity(Void) response entity indicating the method is not implemented
+ * @param requestId Identifier for the overall Datajob (required)
+ * @param dataProducerJobId Identifier for the data producer job (required)
+ * @param dataProducerId Identifier for the data producer as a query parameter (required)
+ * @return ResponseEntity Response entity indicating the method is not implemented
*/
@Override
public ResponseEntity<Void> getDataJobStatus(final String requestId,
@@ -72,4 +72,21 @@ public class DmiDatajobsRestController implements DmiDatajobApi {
final String dataProducerId) {
return new ResponseEntity<>(HttpStatus.NOT_IMPLEMENTED);
}
+
+ /**
+ * This method is not implemented for ONAP DMI plugin.
+ *
+ * @param requestId Identifier for the overall Datajob (required)
+ * @param dataProducerJobId Identifier for the data producer job (required)
+ * @param dataProducerId Identifier for the data producer as a query parameter (required)
+ * @param destination The destination of the results, Kafka topic name or s3 bucket name (required)
+ * @return ResponseEntity Response entity indicating the method is not implemented
+ */
+ @Override
+ public ResponseEntity<Void> getDataJobResult(final String requestId,
+ final String dataProducerJobId,
+ final String dataProducerId,
+ final String destination) {
+ return new ResponseEntity<>(HttpStatus.NOT_IMPLEMENTED);
+ }
}
diff --git a/dmi-service/src/test/groovy/org/onap/cps/ncmp/dmi/datajobs/rest/controller/DmiDatajobsRestControllerSpec.groovy b/dmi-service/src/test/groovy/org/onap/cps/ncmp/dmi/datajobs/rest/controller/DmiDatajobsRestControllerSpec.groovy
index 69d2ebd2..6c05f6f3 100644
--- a/dmi-service/src/test/groovy/org/onap/cps/ncmp/dmi/datajobs/rest/controller/DmiDatajobsRestControllerSpec.groovy
+++ b/dmi-service/src/test/groovy/org/onap/cps/ncmp/dmi/datajobs/rest/controller/DmiDatajobsRestControllerSpec.groovy
@@ -79,4 +79,16 @@ class DmiDatajobsRestControllerSpec extends Specification{
then: 'response value is Not Implemented'
response.status == HttpStatus.NOT_IMPLEMENTED.value()
}
+
+ def 'get result request should return 501 HTTP Status' () {
+ given: 'URL to get the result of a data job'
+ def getStatus = "${basePathV1}/dataJob/some-identifier/dataProducerJob/some-producer-job-identifier/result?dataProducerId=some-data-producer-identifier&destination=some-destination"
+ when: 'the request is performed'
+ def response = mvc.perform(
+ get(getStatus)
+ .contentType('application/json')
+ ).andReturn().response
+ then: 'response value is Not Implemented'
+ response.status == HttpStatus.NOT_IMPLEMENTED.value()
+ }
}
diff --git a/dmi-stub/dmi-plugin-demo-and-csit-stub-service/src/main/java/org/onap/cps/ncmp/dmi/rest/stub/controller/DmiRestStubController.java b/dmi-stub/dmi-plugin-demo-and-csit-stub-service/src/main/java/org/onap/cps/ncmp/dmi/rest/stub/controller/DmiRestStubController.java
index b8b46f06..5021ae76 100644
--- a/dmi-stub/dmi-plugin-demo-and-csit-stub-service/src/main/java/org/onap/cps/ncmp/dmi/rest/stub/controller/DmiRestStubController.java
+++ b/dmi-stub/dmi-plugin-demo-and-csit-stub-service/src/main/java/org/onap/cps/ncmp/dmi/rest/stub/controller/DmiRestStubController.java
@@ -89,7 +89,7 @@ public class DmiRestStubController {
private long readDataForCmHandleDelayMs;
@Value("${delay.write-data-for-cm-handle-delay-ms}")
private long writeDataForCmHandleDelayMs;
- private AtomicInteger subJobWriteRequestCounter;
+ private final AtomicInteger subJobWriteRequestCounter = new AtomicInteger();
/**
* This code defines a REST API endpoint for adding new the module set tag mapping. The endpoint receives the
@@ -293,6 +293,27 @@ public class DmiRestStubController {
return ResponseEntity.ok("FINISHED");
}
+ /**
+ * Retrieves the result of a given data job identified by {@code requestId} and {@code dataProducerJobId}.
+ *
+ * @param requestId Identifier for the overall Datajob (required)
+ * @param dataProducerJobId Identifier for the data producer job (required)
+ * @param dataProducerId Identifier for the data producer as a query parameter (required)
+ * @param destination The destination of the results, Kafka topic name or s3 bucket name (required)
+ * @return A ResponseEntity with HTTP status 200 (OK) and the data job's result as an Object.
+ */
+ @GetMapping("/v1/dataJob/{requestId}/dataProducerJob/{dataProducerJobId}/result")
+ public ResponseEntity<Object> retrieveDataJobResult(
+ @PathVariable("requestId") final String requestId,
+ @PathVariable("dataProducerJobId") final String dataProducerJobId,
+ @RequestParam(name = "dataProducerId") String dataProducerId,
+ @RequestParam(name = "destination") String destination) {
+ log.debug("Received request to retrieve data job result. Request ID: {}, Data Producer Job ID: {}, " +
+ "Data Producer ID: {}, Destination: {}",
+ requestId, dataProducerJobId, dataProducerId, destination);
+ return ResponseEntity.ok(Map.of("result", "some status"));
+ }
+
private CloudEvent buildAndGetCloudEvent(final String topic, final String requestId,
final DataOperationEvent dataOperationEvent) {
CloudEvent cloudEvent = null;
diff --git a/docs/api/swagger/openapi-datajob.yaml b/docs/api/swagger/openapi-datajob.yaml
index a0b6d4f3..18efbc38 100644
--- a/docs/api/swagger/openapi-datajob.yaml
+++ b/docs/api/swagger/openapi-datajob.yaml
@@ -121,6 +121,60 @@ paths:
description: Not Implemented
tags:
- dmi-datajob
+ /v1/dataJob/{requestId}/dataProducerJob/{dataProducerJobId}/result:
+ get:
+ description: Retrieve the result of a data job.
+ operationId: getDataJobResult
+ parameters:
+ - description: Identifier for the overall Datajob
+ explode: false
+ in: path
+ name: requestId
+ required: true
+ schema:
+ example: some-identifier
+ type: string
+ style: simple
+ - description: Identifier for the data producer job
+ explode: false
+ in: path
+ name: dataProducerJobId
+ required: true
+ schema:
+ example: some-producer-job-identifier
+ type: string
+ style: simple
+ - description: Identifier for the data producer
+ explode: true
+ in: query
+ name: dataProducerId
+ required: true
+ schema:
+ example: some-data-producer-identifier
+ type: string
+ style: form
+ - description: The destination of the results (Kafka topic name or s3 bucket name)
+ explode: true
+ in: query
+ name: destination
+ required: true
+ schema:
+ example: some-destination
+ type: string
+ style: form
+ responses:
+ "501":
+ content:
+ application/json:
+ example:
+ status: 501
+ message: Not Implemented
+ details: Method Not Implemented
+ schema:
+ $ref: '#/components/schemas/ErrorMessage'
+ description: Not Implemented
+ tags:
+ - dmi-datajob
components:
parameters:
requestIdInPath:
@@ -153,6 +207,16 @@ components:
example: some-data-producer-identifier
type: string
style: form
+ destinationInQuery:
+ description: The destination of the results (Kafka topic name or s3 bucket name)
+ explode: true
+ in: query
+ name: destination
+ required: true
+ schema:
+ example: some-destination
+ type: string
+ style: form
responses:
NotImplemented:
content: