/*- * ============LICENSE_START======================================================= * SDC * ================================================================================ * Copyright (C) 2017 AT&T Intellectual Property. All rights reserved. * ================================================================================ * 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. * ============LICENSE_END========================================================= */ package org.openecomp.sdc.ci.tests.utils.general; import com.aventstack.extentreports.Status; import com.clearspring.analytics.util.Pair; import org.apache.commons.io.IOUtils; import org.apache.http.HttpEntity; import org.apache.http.client.ClientProtocolException; import org.apache.http.client.methods.CloseableHttpResponse; import org.apache.http.client.methods.HttpPost; import org.apache.http.entity.mime.MultipartEntityBuilder; import org.apache.http.entity.mime.content.FileBody; import org.apache.http.impl.client.CloseableHttpClient; import org.apache.http.impl.client.HttpClients; import org.json.JSONException; import org.json.JSONObject; import org.json.simple.JSONArray; import org.json.simple.JSONValue; import org.openecomp.sdc.be.model.User; import org.openecomp.sdc.ci.tests.api.ComponentBaseTest; import org.openecomp.sdc.ci.tests.api.ExtentTestActions; import org.openecomp.sdc.ci.tests.config.Config; import org.openecomp.sdc.ci.tests.datatypes.AmdocsLicenseMembers; import org.openecomp.sdc.ci.tests.datatypes.http.HttpHeaderEnum; import org.openecomp.sdc.ci.tests.datatypes.http.HttpRequest; import org.openecomp.sdc.ci.tests.datatypes.http.RestResponse; import org.openecomp.sdc.ci.tests.utils.Utils; import org.openecomp.sdc.ci.tests.utils.rest.ResponseParser; import java.io.*; import java.nio.file.FileSystems; import java.util.*; import static org.testng.AssertJUnit.assertEquals; public class OnboardingUtils { protected static List exludeVnfList = Arrays.asList("2016-197_vscp_vscp-fw_1610_e2e.zip", "2016-281_vProbes_BE_11_1_f_30_1610_e2e.zip", "2016-282_vProbes_FE_11_1_f_30_1610_e2e.zip", "2016-044_vfw_fnat_30_1607_e2e.zip", "2017-376_vMOG_11_1.zip", "vMOG.zip", "vMRF_USP_AIC3.0_1702.zip", "2016-211_vprobesbe_vprobes_be_30_1610_e2e.zip", "2016-005_vprobesfe_vprobes_fe_30_1607_e2e.zip", "vMRF_RTT.zip", "2016-006_vvm_vvm_30_1607_e2e.zip", "2016-001_vvm_vvm_30_1607_e2e.zip"); protected static List exludeVnfListForToscaParser = Arrays.asList("2016-043_vsaegw_fdnt_30_1607_e2e.zip", "vIRC_CC.zip", "2016-045_vlb_lmsp_30_1607_e2e.zip", "2016-050_vdns_vmdns_30_1607_e2e.zip", "2016-247_mns_mns_30_1610_e2e.zip", "2016-044_vfw_fcgi_30_1607_e2e.zip"); public OnboardingUtils() { } public static Pair> createVendorSoftwareProduct(String HeatFileName, String filepath, User user, AmdocsLicenseMembers amdocsLicenseMembers) throws Exception { Pair> pair = createVSP(HeatFileName, filepath, user, amdocsLicenseMembers); String vspid = pair.right.get("vspId"); prepareVspForUse(user, vspid); return pair; } public static void prepareVspForUse(User user, String vspid) throws Exception { RestResponse checkin = checkinVendorSoftwareProduct(vspid, user); assertEquals("did not succeed to checking new VSP", 200, checkin.getErrorCode().intValue()); RestResponse submit = submitVendorSoftwareProduct(vspid, user); assertEquals("did not succeed to submit new VSP", 200, submit.getErrorCode().intValue()); RestResponse createPackage = createPackageOfVendorSoftwareProduct(vspid, user); assertEquals("did not succeed to create package of new VSP ", 200, createPackage.getErrorCode().intValue()); ComponentBaseTest.getExtendTest().log(Status.INFO, "Succeeded in creating the vendor software product"); } public static Pair> createVSP(String HeatFileName, String filepath, User user, AmdocsLicenseMembers amdocsLicenseMembers) throws Exception { String vspName = handleFilename(HeatFileName); ComponentBaseTest.getExtendTest().log(Status.INFO, "Starting to create the vendor software product"); Pair> createNewVspPair = createNewVendorSoftwareProduct(vspName, amdocsLicenseMembers, user); RestResponse createNewVendorSoftwareProduct = createNewVspPair.left; assertEquals("did not succeed to create new VSP", 200,createNewVendorSoftwareProduct.getErrorCode().intValue()); String vspid = ResponseParser.getValueFromJsonResponse(createNewVendorSoftwareProduct.getResponse(), "vspId"); String componentId = ResponseParser.getValueFromJsonResponse(createNewVendorSoftwareProduct.getResponse(), "componentId"); Map vspMeta = createNewVspPair.right; Map vspObject = new HashMap(); Iterator iterator = vspMeta.keySet().iterator(); while(iterator.hasNext()){ Object key = iterator.next(); Object value = vspMeta.get(key); vspObject.put(key.toString(), value.toString()); } vspObject.put("vspId", vspid); vspObject.put("componentId", componentId); vspObject.put("vendorName", amdocsLicenseMembers.getVendorLicenseName()); vspObject.put("attContact", user.getUserId()); RestResponse uploadHeatPackage = uploadHeatPackage(filepath, HeatFileName, vspid, user); assertEquals("did not succeed to upload HEAT package", 200, uploadHeatPackage.getErrorCode().intValue()); RestResponse validateUpload = validateUpload(vspid, user); assertEquals("did not succeed to validate upload process", 200, validateUpload.getErrorCode().intValue()); Pair> pair = new Pair>(vspName, vspObject); return pair; } public static void updateVspWithVfcArtifacts(String filepath, String vspId, String updatedSnmpPoll, String updatedSnmpTrap, String componentId, User user) throws Exception{ RestResponse checkout = checkoutVendorSoftwareProduct(vspId, user); assertEquals("did not succeed to checkout new VSP", 200, checkout.getErrorCode().intValue()); ExtentTestActions.log(Status.INFO, "Deleting SNMP POLL"); deleteSnmpArtifact(componentId, vspId, user, SnmpTypeEnum.SNMP_POLL); ExtentTestActions.log(Status.INFO, "Deleting SNMP TRAP"); deleteSnmpArtifact(componentId, vspId, user, SnmpTypeEnum.SNMP_TRAP); addVFCArtifacts(filepath, updatedSnmpPoll, updatedSnmpTrap, vspId, user, componentId); prepareVspForUse(user, vspId); } public static String updateVendorSoftwareProduct(String vspId, String HeatFileName, String filepath, User user) throws Exception, Throwable { String vspName = handleFilename(HeatFileName); ComponentBaseTest.getExtendTest().log(Status.INFO, "Starting to update the vendor software product"); RestResponse checkout = checkoutVendorSoftwareProduct(vspId, user); assertEquals("did not succeed to checkout new VSP", 200, checkout.getErrorCode().intValue()); RestResponse uploadHeatPackage = uploadHeatPackage(filepath, HeatFileName, vspId, user); assertEquals("did not succeed to upload HEAT package", 200, uploadHeatPackage.getErrorCode().intValue()); RestResponse validateUpload = validateUpload(vspId, user); assertEquals("did not succeed to validate upload process", 200, validateUpload.getErrorCode().intValue()); RestResponse checkin = checkinVendorSoftwareProduct(vspId, user); assertEquals("did not succeed to checking VSP", 200, checkin.getErrorCode().intValue()); RestResponse submit = submitVendorSoftwareProduct(vspId, user); assertEquals("did not succeed to submit VSP", 200, submit.getErrorCode().intValue()); RestResponse createPackage = createPackageOfVendorSoftwareProduct(vspId, user); assertEquals("did not succeed to update package of VSP ", 200, createPackage.getErrorCode().intValue()); ComponentBaseTest.getExtendTest().log(Status.INFO, "Succeeded in updating the vendor software product"); return vspName; } public static String handleFilename(String heatFileName) { final String namePrefix = "ciVFOnboarded-"; final String nameSuffix = "-" + getShortUUID(); String subHeatFileName = heatFileName.substring(0, heatFileName.lastIndexOf(".")); if ((namePrefix + subHeatFileName + nameSuffix).length() >= 50) { subHeatFileName = subHeatFileName.substring(0, 50 - namePrefix.length() - nameSuffix.length()); } if (subHeatFileName.contains("(") || subHeatFileName.contains(")")) { subHeatFileName = subHeatFileName.replace("(", "-"); subHeatFileName = subHeatFileName.replace(")", "-"); } String vnfName = namePrefix + subHeatFileName + nameSuffix; return vnfName; } public static String addVFCArtifacts(String filepath, String snmpPoll, String snmpTrap, String vspid, User user, String vspComponentId) throws Exception{ vspComponentId = (vspComponentId == null) ? getVSPComponentId(vspid, user) : vspComponentId; if (vspComponentId != null){ if (snmpPoll != null){ ExtentTestActions.log(Status.INFO, "Adding VFC artifact of type SNMP POLL with the file " + snmpPoll); RestResponse uploadSnmpPollArtifact = uploadSnmpPollArtifact(filepath, snmpPoll, vspid, user, vspComponentId); assertEquals("Did not succeed to add SNMP POLL", 200, uploadSnmpPollArtifact.getErrorCode().intValue()); } if (snmpTrap != null){ ExtentTestActions.log(Status.INFO, "Adding VFC artifact of type SNMP TRAP with the file " + snmpTrap); RestResponse uploadSnmpTrapArtifact = uploadSnmpTrapArtifact(filepath, snmpTrap, vspid, user, vspComponentId); assertEquals("Did not succeed to add SNMP TRAP", 200, uploadSnmpTrapArtifact.getErrorCode().intValue()); } } return vspComponentId; } public static String addVFCArtifacts(String filepath, String snmpPoll, String snmpTrap, String vspid, User user) throws Exception{ return addVFCArtifacts(filepath, snmpPoll, snmpTrap, vspid, user, null); } private static RestResponse uploadSnmpPollArtifact(String filepath, String zipArtifact, String vspid, User user, String vspComponentId) throws FileNotFoundException, IOException, ClientProtocolException { Config config = Utils.getConfig(); String snmpPollUrl = String.format("http://%s:%s/onboarding-api/v1.0/vendor-software-products/%s/versions/0.1/components/%s/monitors/snmp/upload", config.getCatalogBeHost(),config.getCatalogBePort(), vspid, vspComponentId); return uploadFile(filepath, zipArtifact, snmpPollUrl, user); } private static RestResponse uploadSnmpTrapArtifact(String filepath, String zipArtifact, String vspid, User user, String vspComponentId) throws FileNotFoundException, IOException, ClientProtocolException { Config config = Utils.getConfig(); String snmpTrapUrl = String.format("http://%s:%s/onboarding-api/v1.0/vendor-software-products/%s/versions/0.1/components/%s/monitors/snmp-trap/upload", config.getCatalogBeHost(),config.getCatalogBePort(), vspid, vspComponentId); return uploadFile(filepath, zipArtifact, snmpTrapUrl, user); } private static RestResponse deleteSnmpArtifact(String componentId, String vspId, User user, SnmpTypeEnum snmpType) throws Exception { Config config = Utils.getConfig(); String url = String.format("http://%s:%s/onboarding-api/v1.0/vendor-software-products/%s/versions/0.1/components/%s/monitors/%s", config.getCatalogBeHost(),config.getCatalogBePort(), vspId, componentId, snmpType.getValue()); String userId = user.getUserId(); Map headersMap = prepareHeadersMap(userId); HttpRequest http = new HttpRequest(); RestResponse response = http.httpSendDelete(url, headersMap); return response; } private static String getVSPComponentId(String vspid, User user) throws Exception, JSONException { RestResponse components = getVSPComponents(vspid, user); String response = components.getResponse(); Map responseMap = (Map) JSONValue.parse(response); JSONArray results = (JSONArray)responseMap.get("results"); for (Object res : results){ Map compMap= (Map) JSONValue.parse(res.toString()); String componentId = compMap.get("id").toString(); return componentId; } return null; } private static RestResponse getVSPComponents(String vspid, User user) throws Exception{ Config config = Utils.getConfig(); String url = String.format("http://%s:%s/onboarding-api/v1.0/vendor-software-products/%s/versions/0.1/components", config.getCatalogBeHost(),config.getCatalogBePort(), vspid); String userId = user.getUserId(); Map headersMap = prepareHeadersMap(userId); HttpRequest http = new HttpRequest(); RestResponse response = http.httpSendGet(url, headersMap); return response; } public static AmdocsLicenseMembers createVendorLicense(User user) throws Exception { AmdocsLicenseMembers amdocsLicenseMembers; ComponentBaseTest.getExtendTest().log(Status.INFO, "Starting to create the vendor license"); String vendorLicenseName = "ciLicense" + getShortUUID(); RestResponse vendorLicenseResponse = createVendorLicenseModels_1(vendorLicenseName, user); assertEquals("did not succeed to create vendor license model", 200, vendorLicenseResponse.getErrorCode().intValue()); String vendorId = ResponseParser.getValueFromJsonResponse(vendorLicenseResponse.getResponse(), "value"); RestResponse vendorKeyGroupsResponse = createVendorKeyGroups_2(vendorId, user); assertEquals("did not succeed to create vendor key groups", 200, vendorKeyGroupsResponse.getErrorCode().intValue()); String keyGroupId = ResponseParser.getValueFromJsonResponse(vendorKeyGroupsResponse.getResponse(), "value"); RestResponse vendorEntitlementPool = createVendorEntitlementPool_3(vendorId, user); assertEquals("did not succeed to create vendor entitlement pool", 200, vendorEntitlementPool.getErrorCode().intValue()); String entitlementPoolId = ResponseParser.getValueFromJsonResponse(vendorEntitlementPool.getResponse(), "value"); RestResponse vendorLicenseFeatureGroups = createVendorLicenseFeatureGroups_4(vendorId, keyGroupId, entitlementPoolId, user); assertEquals("did not succeed to create vendor license feature groups", 200, vendorLicenseFeatureGroups.getErrorCode().intValue()); String featureGroupId = ResponseParser.getValueFromJsonResponse(vendorLicenseFeatureGroups.getResponse(), "value"); RestResponse vendorLicenseAgreement = createVendorLicenseAgreement_5(vendorId, featureGroupId, user); assertEquals("did not succeed to create vendor license agreement", 200, vendorLicenseAgreement.getErrorCode().intValue()); String vendorLicenseAgreementId = ResponseParser.getValueFromJsonResponse(vendorLicenseAgreement.getResponse(), "value"); RestResponse checkinVendorLicense = checkinVendorLicense(vendorId, user); assertEquals("did not succeed to checkin vendor license", 200, checkinVendorLicense.getErrorCode().intValue()); RestResponse submitVendorLicense = submitVendorLicense(vendorId, user); assertEquals("did not succeed to submit vendor license", 200, submitVendorLicense.getErrorCode().intValue()); ComponentBaseTest.getExtendTest().log(Status.INFO, "Succeeded in creating the vendor license"); amdocsLicenseMembers = new AmdocsLicenseMembers(vendorId, vendorLicenseName, vendorLicenseAgreementId, featureGroupId); return amdocsLicenseMembers; } private static String getShortUUID() { return UUID.randomUUID().toString().split("-")[0]; } private static RestResponse actionOnComponent(String vspid, String action, String onboardComponent, User user) throws Exception { Config config = Utils.getConfig(); String url = String.format("http://%s:%s/onboarding-api/v1.0/" + onboardComponent + "/%s/versions/0.1/actions", config.getCatalogBeHost(), config.getCatalogBePort(), vspid); String userId = user.getUserId(); JSONObject jObject = new JSONObject(); jObject.put("action", action); Map headersMap = prepareHeadersMap(userId); HttpRequest http = new HttpRequest(); RestResponse response = http.httpSendPut(url, jObject.toString(), headersMap); return response; } public static RestResponse checkinVendorLicense(String vspid, User user) throws Exception { return actionOnComponent(vspid, "Checkin", "vendor-license-models", user); } public static RestResponse submitVendorLicense(String vspid, User user) throws Exception { return actionOnComponent(vspid, "Submit", "vendor-license-models", user); } public static RestResponse createVendorLicenseModels_1(String name, User user) throws Exception { Config config = Utils.getConfig(); String url = String.format("http://%s:%s/onboarding-api/v1.0/vendor-license-models", config.getCatalogBeHost(), config.getCatalogBePort()); String userId = user.getUserId(); JSONObject jObject = new JSONObject(); jObject.put("vendorName", name); jObject.put("description", "new vendor license model"); jObject.put("iconRef", "icon"); Map headersMap = prepareHeadersMap(userId); HttpRequest http = new HttpRequest(); RestResponse response = http.httpSendPost(url, jObject.toString(), headersMap); return response; } public static RestResponse createVendorLicenseAgreement_5(String vspid, String featureGroupId, User user) throws Exception { Config config = Utils.getConfig(); String url = String.format("http://%s:%s/onboarding-api/v1.0/vendor-license-models/%s/versions/0.1/license-agreements", config.getCatalogBeHost(), config.getCatalogBePort(), vspid); String userId = user.getUserId(); JSONObject licenseTermpObject = new JSONObject(); licenseTermpObject.put("choice", "Fixed_Term"); licenseTermpObject.put("other", ""); JSONObject jObjectBody = new JSONObject(); jObjectBody.put("name", "abc"); jObjectBody.put("description", "new vendor license agreement"); jObjectBody.put("requirementsAndConstrains", "abc"); jObjectBody.put("licenseTerm", licenseTermpObject); jObjectBody.put("addedFeatureGroupsIds", Arrays.asList(featureGroupId).toArray()); Map headersMap = prepareHeadersMap(userId); HttpRequest http = new HttpRequest(); RestResponse response = http.httpSendPost(url, jObjectBody.toString(), headersMap); return response; } public static RestResponse createVendorLicenseFeatureGroups_4(String vspid, String licenseKeyGroupId, String entitlementPoolId, User user) throws Exception { Config config = Utils.getConfig(); String url = String.format("http://%s:%s/onboarding-api/v1.0/vendor-license-models/%s/versions/0.1/feature-groups", config.getCatalogBeHost(), config.getCatalogBePort(), vspid); String userId = user.getUserId(); JSONObject jObject = new JSONObject(); jObject.put("name", "xyz"); jObject.put("description", "new vendor license feature groups"); jObject.put("partNumber", "123abc456"); jObject.put("manufacturerReferenceNumber", "5"); jObject.put("addedLicenseKeyGroupsIds", Arrays.asList(licenseKeyGroupId).toArray()); jObject.put("addedEntitlementPoolsIds", Arrays.asList(entitlementPoolId).toArray()); Map headersMap = prepareHeadersMap(userId); HttpRequest http = new HttpRequest(); RestResponse response = http.httpSendPost(url, jObject.toString(), headersMap); return response; } public static RestResponse createVendorEntitlementPool_3(String vspid, User user) throws Exception { Config config = Utils.getConfig(); String url = String.format("http://%s:%s/onboarding-api/v1.0/vendor-license-models/%s/versions/0.1/entitlement-pools", config.getCatalogBeHost(), config.getCatalogBePort(), vspid); String userId = user.getUserId(); JSONObject jEntitlementMetricObject = new JSONObject(); jEntitlementMetricObject.put("choice", "CPU"); jEntitlementMetricObject.put("other", ""); JSONObject jAggregationFunctionObject = new JSONObject(); jAggregationFunctionObject.put("choice", "Peak"); jAggregationFunctionObject.put("other", ""); JSONObject jOperationalScope = new JSONObject(); jOperationalScope.put("choices", Arrays.asList("Availability_Zone").toArray()); jOperationalScope.put("other", ""); JSONObject jTimeObject = new JSONObject(); jTimeObject.put("choice", "Hour"); jTimeObject.put("other", ""); JSONObject jObjectBody = new JSONObject(); jObjectBody.put("name", "def"+ getShortUUID()); jObjectBody.put("description", "new vendor license entitlement pool"); jObjectBody.put("thresholdValue", "23"); jObjectBody.put("thresholdUnits", "Absolute"); jObjectBody.put("entitlementMetric", jEntitlementMetricObject); jObjectBody.put("increments", "abcd"); jObjectBody.put("aggregationFunction", jAggregationFunctionObject); jObjectBody.put("operationalScope", jOperationalScope); jObjectBody.put("time", jTimeObject); jObjectBody.put("manufacturerReferenceNumber", "123aaa"); Map headersMap = prepareHeadersMap(userId); HttpRequest http = new HttpRequest(); RestResponse response = http.httpSendPost(url, jObjectBody.toString(), headersMap); return response; } public static RestResponse createVendorKeyGroups_2(String vspid, User user) throws Exception { Config config = Utils.getConfig(); String url = String.format("http://%s:%s/onboarding-api/v1.0/vendor-license-models/%s/versions/0.1/license-key-groups", config.getCatalogBeHost(), config.getCatalogBePort(), vspid); String userId = user.getUserId(); JSONObject jOperationalScope = new JSONObject(); jOperationalScope.put("choices", Arrays.asList("Tenant").toArray()); jOperationalScope.put("other", ""); JSONObject jObjectBody = new JSONObject(); jObjectBody.put("name", "keyGroup" + getShortUUID()); jObjectBody.put("description", "new vendor license key group"); jObjectBody.put("operationalScope", jOperationalScope); jObjectBody.put("type", "Universal"); Map headersMap = prepareHeadersMap(userId); HttpRequest http = new HttpRequest(); RestResponse response = http.httpSendPost(url, jObjectBody.toString(), headersMap); return response; } public static Pair> createNewVendorSoftwareProduct(String name, AmdocsLicenseMembers amdocsLicenseMembers, User user) throws Exception { Map vspMetadta = new HashMap(); Config config = Utils.getConfig(); String url = String.format("http://%s:%s/onboarding-api/v1.0/vendor-software-products", config.getCatalogBeHost(), config.getCatalogBePort()); String userId = user.getUserId(); JSONObject jlicensingDataObj = new JSONObject(); jlicensingDataObj.put("licenseAgreement", amdocsLicenseMembers.getVendorLicenseAgreementId()); jlicensingDataObj.put("featureGroups", Arrays.asList(amdocsLicenseMembers.getFeatureGroupId()).toArray()); JSONObject jlicensingVersionObj = new JSONObject(); jlicensingVersionObj.put("id", "1.0"); jlicensingVersionObj.put("label", "1.0"); JSONObject jObject = new JSONObject(); jObject.put("name", name); jObject.put("description", "new VSP description"); jObject.put("category", "resourceNewCategory.generic"); jObject.put("subCategory", "resourceNewCategory.generic.database"); jObject.put("onboardingMethod", "NetworkPackage"); jObject.put("licensingVersion", jlicensingVersionObj); jObject.put("vendorName", amdocsLicenseMembers.getVendorLicenseName()); jObject.put("vendorId", amdocsLicenseMembers.getVendorId()); jObject.put("icon", "icon"); jObject.put("licensingData", jlicensingDataObj); vspMetadta.put("description", jObject.getString("description")); vspMetadta.put("category", jObject.getString("category")); vspMetadta.put("subCategory", jObject.getString("subCategory").split("\\.")[2]); Map headersMap = prepareHeadersMap(userId); HttpRequest http = new HttpRequest(); RestResponse response = http.httpSendPost(url, jObject.toString(), headersMap); return new Pair>(response, vspMetadta); } public static RestResponse validateUpload(String vspid, User user) throws Exception { Config config = Utils.getConfig(); String url = String.format("http://%s:%s/onboarding-api/v1.0/vendor-software-products/%s/versions/0.1/orchestration-template-candidate/process", config.getCatalogBeHost(), config.getCatalogBePort(), vspid); String userId = user.getUserId(); Map headersMap = prepareHeadersMap(userId); HttpRequest http = new HttpRequest(); String body =null; RestResponse response = http.httpSendPut(url, body, headersMap); return response; } public static RestResponse uploadHeatPackage(String filepath, String filename, String vspid, User user) throws Exception { Config config = Utils.getConfig(); String url = String.format("http://%s:%s/onboarding-api/v1.0/vendor-software-products/%s/versions/0.1/orchestration-template-candidate", config.getCatalogBeHost(), config.getCatalogBePort(), vspid); return uploadFile(filepath, filename, url, user); } private static RestResponse uploadFile(String filepath, String filename, String url, User user) throws FileNotFoundException, IOException, ClientProtocolException { CloseableHttpResponse response = null; MultipartEntityBuilder mpBuilder = MultipartEntityBuilder.create(); mpBuilder.addPart("upload", new FileBody(getTestZipFile(filepath, filename))); Map headersMap = prepareHeadersMap(user.getUserId()); headersMap.put(HttpHeaderEnum.CONTENT_TYPE.getValue(), "multipart/form-data"); CloseableHttpClient client = HttpClients.createDefault(); try { HttpPost httpPost = new HttpPost(url); RestResponse restResponse = new RestResponse(); Iterator iterator = headersMap.keySet().iterator(); while (iterator.hasNext()) { String key = iterator.next(); String value = headersMap.get(key); httpPost.addHeader(key, value); } httpPost.setEntity(mpBuilder.build()); response = client.execute(httpPost); HttpEntity entity = response.getEntity(); String responseBody = null; if (entity != null) { InputStream instream = entity.getContent(); StringWriter writer = new StringWriter(); IOUtils.copy(instream, writer); responseBody = writer.toString(); try { } finally { instream.close(); } } restResponse.setErrorCode(response.getStatusLine().getStatusCode()); restResponse.setResponse(responseBody); return restResponse; } finally { closeResponse(response); closeHttpClient(client); } } private static void closeResponse(CloseableHttpResponse response) { try { if (response != null) { response.close(); } } catch (IOException e) { System.out.println(String.format("failed to close client or response: %s", e.getMessage())); } } private static void closeHttpClient(CloseableHttpClient client) { try { if (client != null) { client.close(); } } catch (IOException e) { System.out.println(String.format("failed to close client or response: %s", e.getMessage())); } } private static File getTestZipFile(String filepath, String filename) throws IOException { Config config = Utils.getConfig(); String sourceDir = config.getImportResourceTestsConfigDir(); java.nio.file.Path filePath = FileSystems.getDefault().getPath(filepath + File.separator + filename); return filePath.toFile(); } public static RestResponse checkinVendorSoftwareProduct(String vspid, User user) throws Exception { return actionOnComponent(vspid, "Checkin", "vendor-software-products", user); } private static RestResponse checkoutVendorSoftwareProduct(String vspid, User user) throws Exception { return actionOnComponent(vspid, "Checkout", "vendor-software-products", user); } public static RestResponse submitVendorSoftwareProduct(String vspid, User user) throws Exception { return actionOnComponent(vspid, "Submit", "vendor-software-products", user); } public static RestResponse createPackageOfVendorSoftwareProduct(String vspid, User user) throws Exception { return actionOnComponent(vspid, "Create_Package", "vendor-software-products", user); } protected static Map prepareHeadersMap(String userId) { Map headersMap = new HashMap(); headersMap.put(HttpHeaderEnum.CONTENT_TYPE.getValue(), "application/json"); headersMap.put(HttpHeaderEnum.ACCEPT.getValue(), "application/json"); headersMap.put(HttpHeaderEnum.USER_ID.getValue(), userId); return headersMap; } // private static void importUpdateVSP(Pair> vsp, boolean isUpdate) throws Exception{ // String vspName = vsp.left; // Map vspMetadata = vsp.right; // boolean vspFound = HomePage.searchForVSP(vspName); // // if (vspFound){ // // List elemenetsFromTable = HomePage.getElemenetsFromTable(); //// WebDriverWait wait = new WebDriverWait(GeneralUIUtils.getDriver(), 30); //// WebElement findElement = wait.until(ExpectedConditions.visibilityOf(elemenetsFromTable.get(1))); //// findElement.click(); // elemenetsFromTable.get(1).click(); // GeneralUIUtils.waitForLoader(); // // if (isUpdate){ // GeneralUIUtils.clickOnElementByTestId(DataTestIdEnum.ImportVfRepository.UPDATE_VSP.getValue()); // // } // else{ // GeneralUIUtils.clickOnElementByTestId(DataTestIdEnum.ImportVfRepository.IMPORT_VSP.getValue()); // } // // String lifeCycleState = ResourceGeneralPage.getLifeCycleState(); // boolean needCheckout = lifeCycleState.equals(LifeCycleStateEnum.CHECKIN.getValue()) || lifeCycleState.equals(LifeCycleStateEnum.CERTIFIED.getValue()); // if (needCheckout) // { // try { // ResourceGeneralPage.clickCheckoutButton(); // Assert.assertTrue(ResourceGeneralPage.getLifeCycleState().equals(LifeCycleStateEnum.CHECKOUT.getValue()), "Did not succeed to checkout"); // // } catch (Exception e) { // ExtentTestActions.log(Status.ERROR, "Did not succeed to checkout"); // e.printStackTrace(); // } // GeneralUIUtils.waitForLoader(); // } // // //Metadata verification // VfVerificator.verifyOnboardedVnfMetadata(vspName, vspMetadata); // // ExtentTestActions.log(Status.INFO, "Clicking create/update VNF"); // String duration = GeneralUIUtils.getActionDuration(() -> waitUntilVnfCreated()); // ExtentTestActions.log(Status.INFO, "Succeeded in importing/updating " + vspName, duration); // } // else{ // Assert.fail("Did not find VSP named " + vspName); // } // } // private static void waitUntilVnfCreated() { // GeneralUIUtils.clickOnElementByTestIdWithoutWait(DataTestIdEnum.GeneralElementsEnum.CREATE_BUTTON.getValue()); // GeneralUIUtils.waitForLoader(60*10); // GeneralUIUtils.waitForAngular(); // GeneralUIUtils.getWebElementByTestID(DataTestIdEnum.GeneralElementsEnum.CHECKIN_BUTTON.getValue()); // } // // public static void updateVSP(Pair> vsp) throws Exception{ // ExtentTestActions.log(Status.INFO, "Updating VSP " + vsp.left); // importUpdateVSP(vsp, true); // } // // public static void importVSP(Pair> vsp) throws Exception{ // ExtentTestActions.log(Status.INFO, "Importing VSP " + vsp.left); // importUpdateVSP(vsp, false); // } // // public static void updateVnfAndValidate(String filepath, Pair> vsp, String updatedVnfFile, User user) throws Exception, Throwable { // ExtentTestActions.log(Status.INFO, String.format("Going to update the VNF with %s......", updatedVnfFile)); // System.out.println(String.format("Going to update the VNF with %s......", updatedVnfFile)); // // Map vspMap = vsp.right; // String vspId = vspMap.get("vspId"); // // updateVendorSoftwareProduct(vspId, updatedVnfFile, filepath, user); // HomePage.showVspRepository(); // updateVSP(vsp); // ResourceGeneralPage.getLeftMenu().moveToDeploymentArtifactScreen(); // DeploymentArtifactPage.verifyArtifactsExistInTable(filepath, updatedVnfFile); // } // // public static Pair> onboardAndValidate(String filepath, String vnfFile, User user) throws Exception { // ExtentTestActions.log(Status.INFO, String.format("Going to onboard the VNF %s", vnfFile)); // System.out.println(String.format("Going to onboard the VNF %s", vnfFile)); // // AmdocsLicenseMembers amdocsLicenseMembers = createVendorLicense(user); // Pair> createVendorSoftwareProduct = createVendorSoftwareProduct(vnfFile, filepath, user, amdocsLicenseMembers); // String vspName = createVendorSoftwareProduct.left; // // DownloadManager.downloadCsarByNameFromVSPRepository(vspName, createVendorSoftwareProduct.right.get("vspId")); // File latestFilefromDir = FileHandling.getLastModifiedFileNameFromDir(); // // ExtentTestActions.log(Status.INFO, String.format("Searching for onboarded %s", vnfFile)); // HomePage.showVspRepository(); // ExtentTestActions.log(Status.INFO,String.format("Going to import %s", vnfFile.substring(0, vnfFile.indexOf(".")))); // importVSP(createVendorSoftwareProduct); // // ResourceGeneralPage.getLeftMenu().moveToDeploymentArtifactScreen(); // // // Verify deployment artifacts // Map combinedMap = ArtifactFromCsar.combineHeatArtifacstWithFolderArtifacsToMap(latestFilefromDir.getAbsolutePath()); // // LinkedList deploymentArtifacts = ((LinkedList) combinedMap.get("Deployment")); // ArtifactsCorrelationManager.addVNFartifactDetails(vspName, deploymentArtifacts); // // List heatEnvFilesFromCSAR = deploymentArtifacts.stream().filter(e -> e.getType().equals("HEAT_ENV")). // map(e -> e.getFileName()). // collect(Collectors.toList()); // // validateDeploymentArtifactsVersion(deploymentArtifacts, heatEnvFilesFromCSAR); // // DeploymentArtifactPage.verifyArtifactsExistInTable(filepath, vnfFile); // return createVendorSoftwareProduct; // } // // public static void validateDeploymentArtifactsVersion(LinkedList deploymentArtifacts, // List heatEnvFilesFromCSAR) { // String artifactVersion; // String artifactName; // // for(HeatMetaFirstLevelDefinition deploymentArtifact: deploymentArtifacts) { // artifactVersion = "1"; // // if(deploymentArtifact.getType().equals("HEAT_ENV")) { // continue; // } else if(deploymentArtifact.getFileName().contains(".")) { // artifactName = deploymentArtifact.getFileName().trim().substring(0, deploymentArtifact.getFileName().lastIndexOf(".")); // } else { // artifactName = deploymentArtifact.getFileName().trim(); // } // // if (heatEnvFilesFromCSAR.contains(artifactName + ".env")){ // artifactVersion = "2"; // } // ArtifactUIUtils.validateArtifactNameVersionType(artifactName, artifactVersion, deploymentArtifact.getType()); // } // } /** * @return * The method returns VNF names list from Files directory under sdc-vnfs repository */ public static List getVnfNamesFileList() { String filepath = FileHandling.getVnfRepositoryPath(); List fileNamesFromFolder = FileHandling.getZipFileNamesFromFolder(filepath); fileNamesFromFolder.removeAll(exludeVnfList); return fileNamesFromFolder; } /** * @return * The method returns VNF names list from Files directory under sdc-vnfs repository excluding zip files that known as failed in tosca parser */ public static List getVnfNamesFileListExcludeToscaParserFailure() { List fileNamesFromFolder = getVnfNamesFileList(); fileNamesFromFolder.removeAll(exludeVnfListForToscaParser); return fileNamesFromFolder; } }