diff options
Diffstat (limited to 'nokiav2/driver/src/main/java/org/onap/vfc/nfvo/driver/vnfm/svnfm/nokia/packagetransformer/CbamVnfPackageBuilder.java')
-rw-r--r-- | nokiav2/driver/src/main/java/org/onap/vfc/nfvo/driver/vnfm/svnfm/nokia/packagetransformer/CbamVnfPackageBuilder.java | 72 |
1 files changed, 72 insertions, 0 deletions
diff --git a/nokiav2/driver/src/main/java/org/onap/vfc/nfvo/driver/vnfm/svnfm/nokia/packagetransformer/CbamVnfPackageBuilder.java b/nokiav2/driver/src/main/java/org/onap/vfc/nfvo/driver/vnfm/svnfm/nokia/packagetransformer/CbamVnfPackageBuilder.java new file mode 100644 index 00000000..5f9f6341 --- /dev/null +++ b/nokiav2/driver/src/main/java/org/onap/vfc/nfvo/driver/vnfm/svnfm/nokia/packagetransformer/CbamVnfPackageBuilder.java @@ -0,0 +1,72 @@ +/* + * Copyright 2016-2017, Nokia Corporation + * + * 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. + */ + +package org.onap.vfc.nfvo.driver.vnfm.svnfm.nokia.packagetransformer; + +import com.google.common.io.ByteStreams; + +import java.io.ByteArrayInputStream; +import java.io.ByteArrayOutputStream; +import java.io.IOException; +import java.util.zip.ZipEntry; +import java.util.zip.ZipInputStream; +import java.util.zip.ZipOutputStream; + +import static org.onap.vfc.nfvo.driver.vnfm.svnfm.nokia.util.SystemFunctions.systemFunctions; + +/** + * Builds a CBAM VNF package capable to be deployed on ONAP from a CBAM package + */ +public class CbamVnfPackageBuilder { + + /** + * @param originalCbamVnfPackage the original CBAM VNF package + * @param vnfdLocation the location of the VNFD within the CBAM VNF package + * @param modifiedCbamVnfdContent the modified CBAM VNFD content + * @return the mod + */ + public byte[] toModifiedCbamVnfPackage(byte[] originalCbamVnfPackage, String vnfdLocation, String modifiedCbamVnfdContent) throws IOException { + ZipInputStream zipInputStream = new ZipInputStream(new ByteArrayInputStream(originalCbamVnfPackage)); + ByteArrayOutputStream result = new ByteArrayOutputStream(); + ZipOutputStream out = new ZipOutputStream(result); + ZipEntry zipEntry; + while ((zipEntry = zipInputStream.getNextEntry()) != null) { + if (zipEntry.getName().matches(vnfdLocation)) { + out.putNextEntry(new ZipEntry(vnfdLocation)); + out.write(modifiedCbamVnfdContent.getBytes()); + out.closeEntry(); + } else { + out.putNextEntry(new ZipEntry(zipEntry.getName())); + ByteArrayOutputStream byteArrayOutputStream = new ByteArrayOutputStream(); + ByteStreams.copy(zipInputStream, byteArrayOutputStream); + out.write(byteArrayOutputStream.toByteArray()); + out.closeEntry(); + } + } + out.putNextEntry(new ZipEntry("javascript/cbam.pre.collectConnectionPoints.js")); + out.write(systemFunctions().loadFile("cbam.pre.collectConnectionPoints.js")); + out.closeEntry(); + out.putNextEntry(new ZipEntry("javascript/cbam.collectConnectionPoints.js")); + out.write(systemFunctions().loadFile("cbam.collectConnectionPoints.js")); + out.closeEntry(); + out.putNextEntry(new ZipEntry("javascript/cbam.post.collectConnectionPoints.js")); + out.write(systemFunctions().loadFile("cbam.post.collectConnectionPoints.js")); + out.closeEntry(); + out.close(); + zipInputStream.close(); + return result.toByteArray(); + } +} |