summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
-rw-r--r--dmi-service/openapi/openapi-datajob.yml20
-rw-r--r--dmi-service/pom.xml2
-rw-r--r--dmi-stub/dmi-plugin-demo-and-csit-stub-service/pom.xml5
-rw-r--r--dmi-stub/dmi-plugin-demo-and-csit-stub-service/src/main/java/org/onap/cps/ncmp/dmi/rest/stub/controller/DmiRestStubController.java36
-rw-r--r--dmi-stub/pom.xml62
-rw-r--r--docs/api/swagger/openapi-datajob.yaml19
6 files changed, 135 insertions, 9 deletions
diff --git a/dmi-service/openapi/openapi-datajob.yml b/dmi-service/openapi/openapi-datajob.yml
index 989218d9..31a76bbd 100644
--- a/dmi-service/openapi/openapi-datajob.yml
+++ b/dmi-service/openapi/openapi-datajob.yml
@@ -240,6 +240,25 @@ components:
type: string
Object:
type: object
+ SubjobWriteResponse:
+ type: object
+ required:
+ - subJobId
+ - dmiServiceName
+ - dataProducerId
+ properties:
+ subJobId:
+ description: Unique identifier for the sub-job
+ example: my-sub-job-id
+ type: string
+ dmiServiceName:
+ description: Name of the relevant DMI Service
+ example: my-dmi-service
+ type: string
+ dataProducerId:
+ description: ID of the producer registered by DMI for the paths in the operations in this request
+ example: my-data-producer-identifier
+ type: string
responses:
NotImplemented:
description: Not Implemented
@@ -251,4 +270,3 @@ components:
status: 501
message: Not Implemented
details: Method Not Implemented
-
diff --git a/dmi-service/pom.xml b/dmi-service/pom.xml
index 033fd53d..a2a1f054 100644
--- a/dmi-service/pom.xml
+++ b/dmi-service/pom.xml
@@ -44,7 +44,7 @@
<dependency>
<groupId>io.swagger.core.v3</groupId>
<artifactId>swagger-annotations</artifactId>
- <version>2.2.10</version>
+ <version>2.2.22</version>
</dependency>
<dependency>
<groupId>io.cloudevents</groupId>
diff --git a/dmi-stub/dmi-plugin-demo-and-csit-stub-service/pom.xml b/dmi-stub/dmi-plugin-demo-and-csit-stub-service/pom.xml
index 78b56852..7118a616 100644
--- a/dmi-stub/dmi-plugin-demo-and-csit-stub-service/pom.xml
+++ b/dmi-stub/dmi-plugin-demo-and-csit-stub-service/pom.xml
@@ -93,6 +93,11 @@
<artifactId>cps-ncmp-events</artifactId>
<version>3.4.9</version>
</dependency>
+ <dependency>
+ <groupId>io.swagger.core.v3</groupId>
+ <artifactId>swagger-annotations</artifactId>
+ </dependency>
+
<!-- T E S T D E P E N D E N C I E S -->
<dependency>
<groupId>org.spockframework</groupId>
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 d97173ce..b8b46f06 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
@@ -32,11 +32,14 @@ import java.util.HashMap;
import java.util.List;
import java.util.Map;
import java.util.UUID;
+import java.util.concurrent.atomic.AtomicInteger;
import java.util.stream.Collectors;
import lombok.RequiredArgsConstructor;
import lombok.extern.slf4j.Slf4j;
import org.json.simple.parser.JSONParser;
import org.json.simple.parser.ParseException;
+import org.onap.cps.ncmp.dmi.datajobs.model.SubjobWriteRequest;
+import org.onap.cps.ncmp.dmi.datajobs.model.SubjobWriteResponse;
import org.onap.cps.ncmp.dmi.rest.stub.model.data.operational.DataOperationRequest;
import org.onap.cps.ncmp.dmi.rest.stub.model.data.operational.DmiDataOperationRequest;
import org.onap.cps.ncmp.dmi.rest.stub.model.data.operational.DmiOperationCmHandle;
@@ -86,6 +89,7 @@ public class DmiRestStubController {
private long readDataForCmHandleDelayMs;
@Value("${delay.write-data-for-cm-handle-delay-ms}")
private long writeDataForCmHandleDelayMs;
+ private AtomicInteger subJobWriteRequestCounter;
/**
* This code defines a REST API endpoint for adding new the module set tag mapping. The endpoint receives the
@@ -257,6 +261,38 @@ public class DmiRestStubController {
return new ResponseEntity<>(HttpStatus.ACCEPTED);
}
+ /**
+ * Consume sub-job write requests from NCMP.
+ *
+ * @param requestId requestId generated by NCMP as an ack for client.
+ * @param subJobWriteRequest contains a collection of write requests and metadata.
+ * @return (@ code ResponseEntity) response for the write request.
+ */
+ @PostMapping("/v1/writeJob/{requestId}")
+ public ResponseEntity<SubjobWriteResponse> consumeWriteSubJobs(@PathVariable("requestId") final String requestId,
+ @RequestBody final SubjobWriteRequest subJobWriteRequest) {
+ log.debug("Request ID: {}", requestId);
+ log.debug("Request body: {}", subJobWriteRequest);
+ return ResponseEntity.ok(new SubjobWriteResponse(String.valueOf(subJobWriteRequestCounter.incrementAndGet()),
+ "some-dmi-service-name", "my-data-producer-id"));
+ }
+
+ /**
+ * Retrieves the status of a given data job identified by {@code requestId} and {@code dataProducerJobId}.
+ *
+ * @param requestId Unique identifier for the outgoing request.
+ * @param dataProducerJobId Identifier of the data producer job.
+ * @return A ResponseEntity with HTTP status 200 (OK) and the data job's status as a string.
+ */
+ @GetMapping("/v1/dataJob/{requestId}/dataProducerJob/{dataProducerJobId}/status")
+ public ResponseEntity<String> retrieveDataJobStatus(
+ @PathVariable("requestId") final String requestId,
+ @PathVariable("dataProducerJobId") final String dataProducerJobId) {
+ log.info("Received request to retrieve data job status. Request ID: {}, Data Producer Job ID: {}",
+ requestId, dataProducerJobId);
+ return ResponseEntity.ok("FINISHED");
+ }
+
private CloudEvent buildAndGetCloudEvent(final String topic, final String requestId,
final DataOperationEvent dataOperationEvent) {
CloudEvent cloudEvent = null;
diff --git a/dmi-stub/pom.xml b/dmi-stub/pom.xml
index 379d873d..17def900 100644
--- a/dmi-stub/pom.xml
+++ b/dmi-stub/pom.xml
@@ -41,13 +41,61 @@
</modules>
<dependencyManagement>
<dependencies>
- <dependency>
- <groupId>org.onap.cps</groupId>
- <artifactId>cps-dependencies</artifactId>
- <version>3.5.1</version>
- <type>pom</type>
- <scope>import</scope>
- </dependency>
+ <dependency>
+ <groupId>org.onap.cps</groupId>
+ <artifactId>cps-dependencies</artifactId>
+ <version>3.5.1</version>
+ <type>pom</type>
+ <scope>import</scope>
+ </dependency>
</dependencies>
</dependencyManagement>
+<build>
+ <plugins>
+ <plugin>
+ <groupId>org.openapitools</groupId>
+ <artifactId>openapi-generator-maven-plugin</artifactId>
+ <version>6.6.0</version>
+ <executions>
+ <execution>
+ <id>code-gen</id>
+ <goals>
+ <goal>generate</goal>
+ </goals>
+ <configuration>
+ <inputSpec>${maven.multiModuleProjectDirectory}/docs/api/swagger/openapi-datajob.yaml</inputSpec>
+ <modelPackage>org.onap.cps.ncmp.dmi.datajobs.model</modelPackage>
+ <apiPackage>org.onap.cps.ncmp.dmi.datajobs.rest.api</apiPackage>
+ <generatorName>spring</generatorName>
+ <generateSupportingFiles>false</generateSupportingFiles>
+ <configOptions>
+ <sourceFolder>src/gen/java</sourceFolder>
+ <dateLibrary>java11</dateLibrary>
+ <interfaceOnly>true</interfaceOnly>
+ <useSpringBoot3>true</useSpringBoot3>
+ <useTags>true</useTags>
+ <openApiNullable>false</openApiNullable>
+ <skipDefaultInterface>true</skipDefaultInterface>
+ </configOptions>
+ </configuration>
+ </execution>
+ <execution>
+ <id>openapi-yaml-gen</id>
+ <goals>
+ <goal>generate</goal>
+ </goals>
+ <phase>compile</phase>
+ <configuration>
+ <inputSpec>${maven.multiModuleProjectDirectory}/docs/api/swagger/openapi-datajob.yaml</inputSpec>
+ <generatorName>openapi-yaml</generatorName>
+ <configOptions>
+ <outputFile>openapi-datajob.yaml</outputFile>
+ </configOptions>
+ </configuration>
+ </execution>
+ </executions>
+ </plugin>
+ </plugins>
+ </build>
+
</project> \ No newline at end of file
diff --git a/docs/api/swagger/openapi-datajob.yaml b/docs/api/swagger/openapi-datajob.yaml
index e58591e0..284b372e 100644
--- a/docs/api/swagger/openapi-datajob.yaml
+++ b/docs/api/swagger/openapi-datajob.yaml
@@ -282,3 +282,22 @@ components:
- op
- path
type: object
+ SubjobWriteResponse:
+ type: object
+ required:
+ - subJobId
+ - dmiServiceName
+ - dataProducerId
+ properties:
+ subJobId:
+ description: Unique identifier for the sub-job
+ example: my-sub-job-id
+ type: string
+ dmiServiceName:
+ description: Name of the relevant DMI Service
+ example: my-dmi-service
+ type: string
+ dataProducerId:
+ description: ID of the producer registered by DMI for the paths in the operations in this request
+ example: my-data-producer-identifier
+ type: string