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;
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
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;
</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