From 8278b79c92f5149813f0161670a0eb76c33db322 Mon Sep 17 00:00:00 2001 From: vasraz Date: Thu, 8 Jul 2021 18:54:19 +0100 Subject: Support handling of 'Large CSARs' MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit If artifact storage is enabled, stores original onboarded package, leaving a reference in the VSP, instead of the original onboarded package itself. Strips files from configured folders in order to reduce the package size and onboard it. To retrieve the package, one needs to read the reference and go to the artifact storage to retrieve. If disabled, it just goes through the current onboarding process. Change-Id: I3dce0ab8422ea736c8a1ffaeb1136cf8b12a2af4 Signed-off-by: Vasyl Razinkov Signed-off-by: André Schmid Issue-ID: SDC-3635 --- .../sdc/be/csar/storage/ArtifactInfo.java | 32 ++++++++++++ .../sdc/be/csar/storage/ArtifactStorageConfig.java | 28 +++++++++++ .../be/csar/storage/ArtifactStorageManager.java | 57 ++++++++++++++++++++++ .../sdc/be/csar/storage/PackageSizeReducer.java | 32 ++++++++++++ .../be/csar/storage/PackageSizeReducerConfig.java | 28 +++++++++++ 5 files changed, 177 insertions(+) create mode 100644 common-app-api/src/main/java/org/openecomp/sdc/be/csar/storage/ArtifactInfo.java create mode 100644 common-app-api/src/main/java/org/openecomp/sdc/be/csar/storage/ArtifactStorageConfig.java create mode 100644 common-app-api/src/main/java/org/openecomp/sdc/be/csar/storage/ArtifactStorageManager.java create mode 100644 common-app-api/src/main/java/org/openecomp/sdc/be/csar/storage/PackageSizeReducer.java create mode 100644 common-app-api/src/main/java/org/openecomp/sdc/be/csar/storage/PackageSizeReducerConfig.java (limited to 'common-app-api') diff --git a/common-app-api/src/main/java/org/openecomp/sdc/be/csar/storage/ArtifactInfo.java b/common-app-api/src/main/java/org/openecomp/sdc/be/csar/storage/ArtifactInfo.java new file mode 100644 index 0000000000..75847704c8 --- /dev/null +++ b/common-app-api/src/main/java/org/openecomp/sdc/be/csar/storage/ArtifactInfo.java @@ -0,0 +1,32 @@ +/* + * ============LICENSE_START======================================================= + * Copyright (C) 2021 Nordix Foundation + * ================================================================================ + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + * + * SPDX-License-Identifier: Apache-2.0 + * ============LICENSE_END========================================================= + */ + +package org.openecomp.sdc.be.csar.storage; + +import java.nio.file.Path; + +/** + * Represents the stored artifact + */ +public interface ArtifactInfo { + + Path getPath(); + +} diff --git a/common-app-api/src/main/java/org/openecomp/sdc/be/csar/storage/ArtifactStorageConfig.java b/common-app-api/src/main/java/org/openecomp/sdc/be/csar/storage/ArtifactStorageConfig.java new file mode 100644 index 0000000000..edac694933 --- /dev/null +++ b/common-app-api/src/main/java/org/openecomp/sdc/be/csar/storage/ArtifactStorageConfig.java @@ -0,0 +1,28 @@ +/* + * ============LICENSE_START======================================================= + * Copyright (C) 2021 Nordix Foundation + * ================================================================================ + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + * + * SPDX-License-Identifier: Apache-2.0 + * ============LICENSE_END========================================================= + */ + +package org.openecomp.sdc.be.csar.storage; + +/** + * Configurations for the {@link ArtifactStorageManager} + */ +public interface ArtifactStorageConfig { + +} diff --git a/common-app-api/src/main/java/org/openecomp/sdc/be/csar/storage/ArtifactStorageManager.java b/common-app-api/src/main/java/org/openecomp/sdc/be/csar/storage/ArtifactStorageManager.java new file mode 100644 index 0000000000..da06db0e68 --- /dev/null +++ b/common-app-api/src/main/java/org/openecomp/sdc/be/csar/storage/ArtifactStorageManager.java @@ -0,0 +1,57 @@ +/* + * ============LICENSE_START======================================================= + * Copyright (C) 2021 Nordix Foundation + * ================================================================================ + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + * + * SPDX-License-Identifier: Apache-2.0 + * ============LICENSE_END========================================================= + */ + +package org.openecomp.sdc.be.csar.storage; + +import java.io.InputStream; + +/** + * Manages the artifact storage and handles operations on the artifacts + */ +public interface ArtifactStorageManager { + + /** + * Persists the uploaded artifact in the storage. + * + * @param vspId the VSP id + * @param versionId the VSP version id + * @param uploadedArtifactInfo the uploaded + * @return the information about the persisted artifact + */ + ArtifactInfo persist(String vspId, String versionId, ArtifactInfo uploadedArtifactInfo); + + /** + * Uploads a file to the Artifact Storage. This file will be temporary until persisted by {@link #persist(String, String, ArtifactInfo)}. + * + * @param vspId the VSP id + * @param versionId the VSP version id + * @param fileToUpload the file input stream + * @return the information about the uploaded artifact + */ + ArtifactInfo upload(String vspId, String versionId, InputStream fileToUpload); + + /** + * Checks if the Artifact Storage is enabled. + * + * @return {@code true} if enable, {@code false} otherwise + */ + boolean isEnabled(); + +} diff --git a/common-app-api/src/main/java/org/openecomp/sdc/be/csar/storage/PackageSizeReducer.java b/common-app-api/src/main/java/org/openecomp/sdc/be/csar/storage/PackageSizeReducer.java new file mode 100644 index 0000000000..290ca08d00 --- /dev/null +++ b/common-app-api/src/main/java/org/openecomp/sdc/be/csar/storage/PackageSizeReducer.java @@ -0,0 +1,32 @@ +/* + * ============LICENSE_START======================================================= + * Copyright (C) 2021 Nordix Foundation + * ================================================================================ + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + * + * SPDX-License-Identifier: Apache-2.0 + * ============LICENSE_END========================================================= + */ + +package org.openecomp.sdc.be.csar.storage; + +import java.nio.file.Path; + +/** + * Handles operations to reduce the package size + */ +public interface PackageSizeReducer { + + byte[] reduce(Path path); + +} diff --git a/common-app-api/src/main/java/org/openecomp/sdc/be/csar/storage/PackageSizeReducerConfig.java b/common-app-api/src/main/java/org/openecomp/sdc/be/csar/storage/PackageSizeReducerConfig.java new file mode 100644 index 0000000000..b45396fb72 --- /dev/null +++ b/common-app-api/src/main/java/org/openecomp/sdc/be/csar/storage/PackageSizeReducerConfig.java @@ -0,0 +1,28 @@ +/* + * ============LICENSE_START======================================================= + * Copyright (C) 2021 Nordix Foundation + * ================================================================================ + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + * + * SPDX-License-Identifier: Apache-2.0 + * ============LICENSE_END========================================================= + */ + +package org.openecomp.sdc.be.csar.storage; + +/** + * Configuration for the {@link PackageSizeReducer} + */ +public interface PackageSizeReducerConfig { + +} -- cgit 1.2.3-korg