diff options
author | andre.schmid <andre.schmid@est.tech> | 2022-02-23 21:09:56 +0000 |
---|---|---|
committer | andre.schmid <andre.schmid@est.tech> | 2022-03-03 10:41:23 +0000 |
commit | 3dcbae860f1a4bc8e6596cddc9cb19611d0c3dc7 (patch) | |
tree | 01a34ad9bdc56a437632752ba3d1aedcaf5d0db2 /openecomp-be/api/openecomp-sdc-rest-webapp/vendor-software-products-rest/vendor-software-products-rest-services/src/main/java/org/openecomp/sdcrests/vsp/rest/services/OrchestrationTemplateCandidateImpl.java | |
parent | c4a8271d664deb39e69fbba329b11ff57b9b276b (diff) |
Obtain upload lock before uploading
Before uploading, the system will now set the status as uploading in
order to have more control of the upload process and status.
Without that the UI status updates could show up incorrectly.
Also, this behaviour removes the need to upload a file to set the
upload in progress, which avoids a concurrent upload try to upload
a file if there is another upload in progress.
Change-Id: Ic008560aa57e1ee7a50389ad26f1a8890f1cf198
Issue-ID: SDC-3888
Signed-off-by: andre.schmid <andre.schmid@est.tech>
Diffstat (limited to 'openecomp-be/api/openecomp-sdc-rest-webapp/vendor-software-products-rest/vendor-software-products-rest-services/src/main/java/org/openecomp/sdcrests/vsp/rest/services/OrchestrationTemplateCandidateImpl.java')
1 files changed, 16 insertions, 1 deletions
diff --git a/openecomp-be/api/openecomp-sdc-rest-webapp/vendor-software-products-rest/vendor-software-products-rest-services/src/main/java/org/openecomp/sdcrests/vsp/rest/services/OrchestrationTemplateCandidateImpl.java b/openecomp-be/api/openecomp-sdc-rest-webapp/vendor-software-products-rest/vendor-software-products-rest-services/src/main/java/org/openecomp/sdcrests/vsp/rest/services/OrchestrationTemplateCandidateImpl.java index 01d2a59e45..93483f3de1 100644 --- a/openecomp-be/api/openecomp-sdc-rest-webapp/vendor-software-products-rest/vendor-software-products-rest-services/src/main/java/org/openecomp/sdcrests/vsp/rest/services/OrchestrationTemplateCandidateImpl.java +++ b/openecomp-be/api/openecomp-sdc-rest-webapp/vendor-software-products-rest/vendor-software-products-rest-services/src/main/java/org/openecomp/sdcrests/vsp/rest/services/OrchestrationTemplateCandidateImpl.java @@ -30,6 +30,7 @@ import static org.openecomp.sdc.common.errors.Messages.ERROR_HAS_OCCURRED_WHILE_ import static org.openecomp.sdc.common.errors.Messages.NO_FILE_WAS_UPLOADED_OR_FILE_NOT_EXIST; import static org.openecomp.sdc.common.errors.Messages.PACKAGE_PROCESS_ERROR; import static org.openecomp.sdc.common.errors.Messages.UNEXPECTED_PROBLEM_HAPPENED_WHILE_GETTING; +import static org.openecomp.sdcrests.vsp.rest.exception.OrchestrationTemplateCandidateUploadManagerExceptionSupplier.vspUploadAlreadyInProgress; import java.io.ByteArrayInputStream; import java.io.FileInputStream; @@ -144,7 +145,11 @@ public class OrchestrationTemplateCandidateImpl implements OrchestrationTemplate final Response response; VspUploadStatusDto vspUploadStatus = null; try { - vspUploadStatus = orchestrationTemplateCandidateUploadManager.putUploadInProgress(vspId, versionId, user); + vspUploadStatus = getVspUploadStatus(vspId, versionId, user); + + if (vspUploadStatus.getStatus() != VspUploadStatus.UPLOADING) { + throw vspUploadAlreadyInProgress(vspId, versionId).get(); + } final byte[] fileToUploadBytes; final DataHandler dataHandler = fileToUpload.getDataHandler(); final var filename = ValidationUtils.sanitizeInputString(dataHandler.getName()); @@ -199,6 +204,16 @@ public class OrchestrationTemplateCandidateImpl implements OrchestrationTemplate return response; } + private VspUploadStatusDto getVspUploadStatus(final String vspId, final String versionId, final String user) { + final Optional<VspUploadStatusDto> vspUploadStatusOpt = + orchestrationTemplateCandidateUploadManager.findLatestStatus(vspId, versionId, user); + if (vspUploadStatusOpt.isEmpty() || vspUploadStatusOpt.get().isComplete()) { + return orchestrationTemplateCandidateUploadManager.putUploadInProgress(vspId, versionId, user); + } + + return vspUploadStatusOpt.get(); + } + private ArtifactInfo handleArtifactStorage(final String vspId, final String versionId, final String filename, final DataHandler artifactDataHandler) { final Path tempArtifactPath; |