1 package org.openecomp.sdc.ci.tests.utils.general;
3 import com.aventstack.extentreports.Status;
4 import com.clearspring.analytics.util.Pair;
5 import com.google.gson.Gson;
6 import org.apache.commons.io.IOUtils;
7 import org.apache.http.HttpEntity;
8 import org.apache.http.client.methods.CloseableHttpResponse;
9 import org.apache.http.client.methods.HttpPost;
10 import org.apache.http.entity.mime.MultipartEntityBuilder;
11 import org.apache.http.entity.mime.content.FileBody;
12 import org.apache.http.impl.client.CloseableHttpClient;
13 import org.apache.http.impl.client.HttpClients;
14 import org.json.simple.JSONArray;
15 import org.json.simple.JSONValue;
16 import org.openecomp.sdc.be.model.User;
17 import org.openecomp.sdc.ci.tests.api.ComponentBaseTest;
18 import org.openecomp.sdc.ci.tests.api.Urls;
19 import org.openecomp.sdc.ci.tests.config.Config;
20 import org.openecomp.sdc.ci.tests.datatypes.*;
21 import org.openecomp.sdc.ci.tests.datatypes.enums.CvfcTypeEnum;
22 import org.openecomp.sdc.ci.tests.datatypes.enums.ResourceCategoryEnum;
23 import org.openecomp.sdc.ci.tests.datatypes.http.HttpHeaderEnum;
24 import org.openecomp.sdc.ci.tests.datatypes.http.HttpRequest;
25 import org.openecomp.sdc.ci.tests.datatypes.http.RestResponse;
26 import org.openecomp.sdc.ci.tests.utils.Utils;
27 import org.openecomp.sdc.ci.tests.utils.rest.BaseRestUtils;
28 import org.openecomp.sdc.ci.tests.utils.rest.ResponseParser;
31 import java.io.IOException;
32 import java.io.InputStream;
33 import java.io.StringWriter;
34 import java.nio.file.FileSystems;
35 import java.util.Arrays;
36 import java.util.HashMap;
37 import java.util.Iterator;
40 import static org.testng.AssertJUnit.assertEquals;
42 public class VendorSoftwareProductRestUtils {
44 public static VendorSoftwareProductObject createVendorSoftwareProduct(ResourceReqDetails resourceReqDetails, String heatFileName, String filepath, User user, AmdocsLicenseMembers amdocsLicenseMembers, Map<CvfcTypeEnum, String> cvfcArtifacts)
47 VendorSoftwareProductObject vendorSoftwareProductObject = createVSP(resourceReqDetails, heatFileName, filepath, user, amdocsLicenseMembers);
48 if(cvfcArtifacts != null && ! cvfcArtifacts.isEmpty()){
49 addCvfcArtifacts(cvfcArtifacts, user, vendorSoftwareProductObject);
51 prepareVspForUse(user, vendorSoftwareProductObject, true);
52 return vendorSoftwareProductObject;
55 public static VendorSoftwareProductObject createVendorSoftwareProduct(ResourceReqDetails resourceReqDetails, String heatFileName, String filepath, User user, AmdocsLicenseMembers amdocsLicenseMembers)
58 Map<CvfcTypeEnum, String> cvfcArtifacts = new HashMap<>();
59 return createVendorSoftwareProduct(resourceReqDetails, heatFileName, filepath, user, amdocsLicenseMembers, cvfcArtifacts);
64 * @param vendorSoftwareProductObject vendorSoftwareProductObject
65 * @param isVspUpdated - in case isVspUpdated = false the commit API should not be issued
66 * the method do commit, submit and create package
69 public static void prepareVspForUse(User user, VendorSoftwareProductObject vendorSoftwareProductObject, Boolean isVspUpdated) throws Exception {
72 RestResponse commit = commitVendorSoftwareProduct(vendorSoftwareProductObject, user);
73 assertEquals("did not succeed to commit new VSP", 200, commit.getErrorCode().intValue());
75 RestResponse submit = submitVendorSoftwareProduct(vendorSoftwareProductObject.getVspId(), user, vendorSoftwareProductObject.getComponentId());
76 assertEquals("did not succeed to submit new VSP", 200, submit.getErrorCode().intValue());
78 RestResponse createPackage = createPackageOfVendorSoftwareProduct(vendorSoftwareProductObject.getVspId(), user, vendorSoftwareProductObject.getComponentId());
79 assertEquals("did not succeed to create package of new VSP ", 200, createPackage.getErrorCode().intValue());
83 public static VendorSoftwareProductObject createAndFillVendorSoftwareProduct(ResourceReqDetails resourceReqDetails, String heatFileName, String filePath, User user, AmdocsLicenseMembers amdocsLicenseMembers, Map<CvfcTypeEnum, String> cvfcArtifacts)
86 VendorSoftwareProductObject createVendorSoftwareProduct = createVendorSoftwareProduct(resourceReqDetails, heatFileName, filePath, user, amdocsLicenseMembers, cvfcArtifacts);
87 VendorSoftwareProductObject vendorSoftwareProductObject = fillVendorSoftwareProductObjectWithMetaData(heatFileName, createVendorSoftwareProduct);
88 return vendorSoftwareProductObject;
93 public static VendorSoftwareProductObject createVSP(ResourceReqDetails resourceReqDetails, String heatFileName, String filepath, User user, AmdocsLicenseMembers amdocsLicenseMembers) throws Exception {
94 String vspName = handleFilename(heatFileName);
96 if(ComponentBaseTest.getExtendTest() != null){
97 ComponentBaseTest.getExtendTest().log(Status.INFO, "Starting to create the vendor software product");
100 Pair<RestResponse, VendorSoftwareProductObject> createNewVspPair = createNewVendorSoftwareProduct(resourceReqDetails, vspName, amdocsLicenseMembers, user);
101 assertEquals("did not succeed to create new VSP", 200,createNewVspPair.left.getErrorCode().intValue());
103 RestResponse uploadHeatPackage = uploadHeatPackage(filepath, heatFileName, createNewVspPair.right, user);
104 assertEquals("did not succeed to upload HEAT package", 200, uploadHeatPackage.getErrorCode().intValue());
106 RestResponse validateUpload = validateUpload(createNewVspPair.right, user);
107 assertEquals("did not succeed to validate upload process, reason: " + validateUpload.getResponse(), 200, validateUpload.getErrorCode().intValue());
109 return createNewVspPair.right;
112 public static void updateVspWithVfcArtifacts(String filepath, String updatedSnmpPoll, String updatedSnmpTrap, String componentInstanceId, User user, VendorSoftwareProductObject vendorSoftwareProductObject) throws Exception{
113 RestResponse checkout = creationMethodVendorSoftwareProduct(vendorSoftwareProductObject, user);
114 assertEquals("did not succeed to checkout new VSP", 200, checkout.getErrorCode().intValue());
115 // ExtentTestActions.log(Status.INFO, "Deleting SNMP POLL");
116 deleteArtifactByType(componentInstanceId, vendorSoftwareProductObject, user, CvfcTypeEnum.SNMP_POLL);
117 // ExtentTestActions.log(Status.INFO, "Deleting SNMP TRAP");
118 deleteArtifactByType(componentInstanceId, vendorSoftwareProductObject, user, CvfcTypeEnum.SNMP_TRAP);
119 addVFCArtifacts(filepath, updatedSnmpPoll, updatedSnmpTrap, vendorSoftwareProductObject, user, componentInstanceId);
120 prepareVspForUse(user, vendorSoftwareProductObject, true);
123 private static RestResponse deleteArtifactByType(String componentInstanceId, VendorSoftwareProductObject vendorSoftwareProductObject, User user, CvfcTypeEnum snmpType) throws Exception
125 Config config = Utils.getConfig();
126 String url = String.format(Urls.DELETE_AMDOCS_ARTIFACT_BY_TYPE, config.getOnboardingBeHost(), config.getOnboardingBePort(), vendorSoftwareProductObject.getVspId(), vendorSoftwareProductObject.getComponentId(), componentInstanceId, snmpType.getValue());
127 String userId = user.getUserId();
128 Map<String, String> headersMap = OnboardingUtils.prepareHeadersMap(userId);
130 HttpRequest http = new HttpRequest();
131 RestResponse response = http.httpSendDelete(url, headersMap);
135 public static void updateVendorSoftwareProductToNextVersion(VendorSoftwareProductObject vendorSoftwareProductObject, User user, Boolean isVspUpdated) throws Throwable {
137 RestResponse createMethod = creationMethodVendorSoftwareProduct(vendorSoftwareProductObject, user);
138 assertEquals("did not succeed to createMethod for new VSP", 200, createMethod.getErrorCode().intValue());
139 prepareVspForUse(user,vendorSoftwareProductObject, isVspUpdated);
143 public static String handleFilename(String heatFileName) {
144 final String namePrefix = String.format("%sVF%s", ElementFactory.getResourcePrefix(), "Onboarded-");
145 final String nameSuffix = "-" + OnboardingUtils.getShortUUID();
147 String subHeatFileName = heatFileName.substring(0, heatFileName.lastIndexOf("."));
149 if ((namePrefix + subHeatFileName + nameSuffix).length() >= 50) {
150 subHeatFileName = subHeatFileName.substring(0, 50 - namePrefix.length() - nameSuffix.length());
153 if (subHeatFileName.contains("(") || subHeatFileName.contains(")")) {
154 subHeatFileName = subHeatFileName.replace("(", "-");
155 subHeatFileName = subHeatFileName.replace(")", "-");
158 String vnfName = namePrefix + subHeatFileName + nameSuffix;
162 public static String addVFCArtifacts(String filepath, String snmpPoll, String snmpTrap, VendorSoftwareProductObject vendorSoftwareProductObject, User user, String componentInstanceId) throws Exception{
163 componentInstanceId = (componentInstanceId == null) ? getVspComponentId(vendorSoftwareProductObject, user) : componentInstanceId;
164 if (componentInstanceId != null){
165 if (snmpPoll != null){
166 // ExtentTestActions.log(Status.INFO, "Adding VFC artifact of type SNMP POLL with the file " + snmpPoll);
167 RestResponse uploadSnmpPollArtifact = uploadSnmpPollArtifact(filepath, snmpPoll, vendorSoftwareProductObject, user, componentInstanceId);
168 assertEquals("Did not succeed to add SNMP POLL", 200, uploadSnmpPollArtifact.getErrorCode().intValue());
170 if (snmpTrap != null){
171 // ExtentTestActions.log(Status.INFO, "Adding VFC artifact of type SNMP TRAP with the file " + snmpTrap);
172 RestResponse uploadSnmpTrapArtifact = uploadSnmpTrapArtifact(filepath, snmpTrap, vendorSoftwareProductObject, user, componentInstanceId);
173 assertEquals("Did not succeed to add SNMP TRAP", 200, uploadSnmpTrapArtifact.getErrorCode().intValue());
177 return componentInstanceId;
180 public static String addCvfcArtifacts(Map<CvfcTypeEnum, String> componentVfcArtifacts, User user, VendorSoftwareProductObject vendorSoftwareProductObject) throws Exception{
181 String componentInstanceId = getVspComponentId(vendorSoftwareProductObject, user);
182 if (componentInstanceId != null){
183 for(Map.Entry<CvfcTypeEnum, String> entry : componentVfcArtifacts.entrySet()){
184 // ExtentTestActions.log(Status.INFO, "Adding VFC artifact of type " + entry.getKey().getValue() + " with the file " + entry.getValue());
185 RestResponse uploadSnmpPollArtifact = uploadCvfcArtifact(entry.getValue(), entry.getKey().getValue(), user, vendorSoftwareProductObject, componentInstanceId);
186 assertEquals("Did not succeed to add " + entry.getKey().getValue(), BaseRestUtils.STATUS_CODE_SUCCESS, uploadSnmpPollArtifact.getErrorCode().intValue());
189 return componentInstanceId;
192 public static String addVFCArtifacts(String filepath, String snmpPoll, String snmpTrap, VendorSoftwareProductObject vendorSoftwareProductObject, User user) throws Exception{
193 return addVFCArtifacts(filepath, snmpPoll, snmpTrap, vendorSoftwareProductObject, user, null);
196 public static RestResponse uploadCvfcArtifact(String filepath, String cvfcType, User user, VendorSoftwareProductObject vendorSoftwareProductObject, String componentInstanceId) throws IOException {
197 Config config = Utils.getConfig();
198 String snmpPollUrl = String.format(Urls.UPLOAD_AMDOCS_ARTIFACT, config.getOnboardingBeHost(),config.getOnboardingBePort(), vendorSoftwareProductObject.getVspId(), vendorSoftwareProductObject.getComponentId(), componentInstanceId, cvfcType);
199 return uploadFile(filepath, null, snmpPollUrl, user);
203 private static RestResponse uploadSnmpPollArtifact(String filepath, String zipArtifact, VendorSoftwareProductObject vendorSoftwareProductObject, User user, String componentInstanceId) throws IOException {
204 Config config = Utils.getConfig();
205 String snmpPollUrl = String.format(Urls.UPLOAD_SNMP_POLL_ARTIFACT, config.getOnboardingBeHost(),config.getOnboardingBePort(), vendorSoftwareProductObject.getVspId(), vendorSoftwareProductObject.getComponentId(), componentInstanceId);
206 return uploadFile(filepath, zipArtifact, snmpPollUrl, user);
209 private static RestResponse uploadSnmpTrapArtifact(String filepath, String zipArtifact, VendorSoftwareProductObject vendorSoftwareProductObject, User user, String vspComponentId) throws IOException {
210 Config config = Utils.getConfig();
211 String snmpTrapUrl = String.format(Urls.UPLOAD_SNMP_POLL_ARTIFACT, config.getOnboardingBeHost(),config.getOnboardingBePort(), vendorSoftwareProductObject.getVspId(), vendorSoftwareProductObject.getComponentId(), vspComponentId);
212 return uploadFile(filepath, zipArtifact, snmpTrapUrl, user);
215 private static RestResponse deleteSnmpArtifact(String componentId, String vspId, User user, SnmpTypeEnum snmpType) throws Exception
217 Config config = Utils.getConfig();
218 String url = String.format(Urls.DELETE_AMDOCS_ARTIFACT_BY_TYPE, config.getOnboardingBeHost(),config.getOnboardingBePort(), vspId, componentId, snmpType.getValue());
219 String userId = user.getUserId();
221 Map<String, String> headersMap = OnboardingUtils.prepareHeadersMap(userId);
223 HttpRequest http = new HttpRequest();
224 RestResponse response = http.httpSendDelete(url, headersMap);
230 * @param vendorSoftwareProductObject VendorSoftwareProductObject
231 * @param user user object
232 * @return return first found component instance Id from list
233 * @throws Exception Exception
235 private static String getVspComponentId(VendorSoftwareProductObject vendorSoftwareProductObject, User user) throws Exception {
236 RestResponse componentList = getVSPComponents(vendorSoftwareProductObject, user);
237 String response = componentList.getResponse();
238 Map<String, Object> responseMap = (Map<String, Object>) JSONValue.parse(response);
239 JSONArray results = (JSONArray)responseMap.get("results");
240 for (Object res : results){
241 Map<String, Object> componentMap = (Map<String, Object>) JSONValue.parse(res.toString());
242 String componentInstanceId = componentMap.get("id").toString();
243 return componentInstanceId;
248 private static RestResponse getVSPComponents(VendorSoftwareProductObject vendorSoftwareProductObject, User user) throws Exception{
249 Config config = Utils.getConfig();
250 String url = String.format(Urls.GET_VSP_COMPONENTS, config.getOnboardingBeHost(),config.getOnboardingBePort(), vendorSoftwareProductObject.getVspId(), vendorSoftwareProductObject.getComponentId());
251 Map<String, String> headersMap = OnboardingUtils.prepareHeadersMap(user.getUserId());
253 HttpRequest http = new HttpRequest();
254 RestResponse response = http.httpSendGet(url, headersMap);
260 public static boolean validateVspExist(VendorSoftwareProductObject vendorSoftwareProductObject, User user) throws Exception {
261 RestResponse restResponse = getVSPComponentByVersion(vendorSoftwareProductObject, user);
262 assertEquals(String.format("Vsp version not updated, reponse message: %s", restResponse.getResponse()),restResponse.getErrorCode().intValue(),200);
263 return (restResponse.getErrorCode()==200);
267 private static RestResponse getVSPComponentByVersion(VendorSoftwareProductObject vendorSoftwareProductObject, User user) throws Exception{
268 Config config = Utils.getConfig();
269 String url = String.format(Urls.GET_VSP_COMPONENT_BY_VERSION, config.getOnboardingBeHost(),config.getOnboardingBePort(), vendorSoftwareProductObject.getVspId(), vendorSoftwareProductObject.getComponentId());
270 String userId = user.getUserId();
272 Map<String, String> headersMap = OnboardingUtils.prepareHeadersMap(userId);
274 HttpRequest http = new HttpRequest();
275 RestResponse response = http.httpSendGet(url, headersMap);
279 private static RestResponse actionOnComponent(String vspid, String body, String onboardComponent, User user, String componentVersion) throws Exception {
280 Config config = Utils.getConfig();
281 String url = String.format(Urls.ACTION_ON_COMPONENT, config.getOnboardingBeHost(), config.getOnboardingBePort(), onboardComponent, vspid, componentVersion);
282 String userId = user.getUserId();
283 Map<String, String> headersMap = OnboardingUtils.prepareHeadersMap(userId);
285 HttpRequest http = new HttpRequest();
286 RestResponse response = http.httpSendPut(url, body, headersMap);
290 // TODO to check if for onboard API ACTION_ARCHIVE_RESTORE_COMPONENT format was added version parameter
291 // if yes remove this method and use general actionOnComponent method
292 private static RestResponse actionOnComponent(String vspid, String body, String onboardComponent, User user) throws Exception {
293 Config config = Utils.getConfig();
294 String url = String.format(Urls.ACTION_ARCHIVE_RESTORE_COMPONENT, config.getCatalogBeHost(), config.getCatalogBePort(), onboardComponent, vspid);
295 String userId = user.getUserId();
296 Map<String, String> headersMap = OnboardingUtils.prepareHeadersMap(userId);
298 HttpRequest http = new HttpRequest();
299 RestResponse response = http.httpSendPut(url, body, headersMap);
303 public static Pair<RestResponse, VendorSoftwareProductObject> createNewVendorSoftwareProduct(ResourceReqDetails resourceReqDetails, String vspName, AmdocsLicenseMembers amdocsLicenseMembers, User user) throws Exception {
305 Config config = Utils.getConfig();
306 String url = String.format(Urls.CREATE_VENDOR_SOFTWARE_PRODUCT, config.getOnboardingBeHost(), config.getOnboardingBePort());
307 String userId = user.getUserId();
308 VendorSoftwareProductObject vendorSoftwareProductObject = new VendorSoftwareProductObject();
309 LicensingData licensingData = new LicensingData(amdocsLicenseMembers.getVendorLicenseAgreementId(), Arrays.asList(amdocsLicenseMembers.getFeatureGroupId()));
310 ResourceCategoryEnum resourceCategoryEnum = ResourceCategoryEnum.findEnumNameByValues(resourceReqDetails.getCategories().get(0).getName(), resourceReqDetails.getCategories().get(0).getSubcategories().get(0).getName());
312 vendorSoftwareProductObject.setName(vspName);
313 vendorSoftwareProductObject.setDescription(resourceReqDetails.getDescription());
314 vendorSoftwareProductObject.setCategory(resourceCategoryEnum.getCategoryUniqeId());
315 vendorSoftwareProductObject.setSubCategory(resourceCategoryEnum.getSubCategoryUniqeId());
316 vendorSoftwareProductObject.setOnboardingMethod("NetworkPackage");
317 vendorSoftwareProductObject.setVendorName(amdocsLicenseMembers.getVendorLicenseName());
318 vendorSoftwareProductObject.setVendorId(amdocsLicenseMembers.getVendorId());
319 vendorSoftwareProductObject.setIcon("icon");
320 vendorSoftwareProductObject.setLicensingData(licensingData);
321 vendorSoftwareProductObject.setLicensingVersion(amdocsLicenseMembers.getVersion());
323 Map<String, String> headersMap = OnboardingUtils.prepareHeadersMap(userId);
324 HttpRequest http = new HttpRequest();
325 Gson gson = new Gson();
326 String body = gson.toJson(vendorSoftwareProductObject);
328 RestResponse response = http.httpSendPost(url, body, headersMap);
330 vendorSoftwareProductObject.setVspId(ResponseParser.getValueFromJsonResponse(response.getResponse(), "itemId"));
331 vendorSoftwareProductObject.setComponentId(ResponseParser.getValueFromJsonResponse(response.getResponse(), "version:id"));
332 // vendorSoftwareProductObject.setVersion(ResponseParser.getValueFromJsonResponse(response.getResponse(), "version:name"));
333 vendorSoftwareProductObject.setAttContact(user.getUserId());
335 return new Pair<>(response, vendorSoftwareProductObject);
338 public static RestResponse validateUpload(VendorSoftwareProductObject vendorSoftwareProductObject, User user) throws Exception {
339 Config config = Utils.getConfig();
340 String url = String.format(Urls.VALIDATE_UPLOAD, config.getOnboardingBeHost(), config.getOnboardingBePort(), vendorSoftwareProductObject.getVspId(), vendorSoftwareProductObject.getComponentId());
341 String userId = user.getUserId();
343 Map<String, String> headersMap = OnboardingUtils.prepareHeadersMap(userId);
344 HttpRequest http = new HttpRequest();
345 RestResponse response = http.httpSendPut(url, null, headersMap);
350 public static RestResponse uploadHeatPackage(String filepath, String filename, VendorSoftwareProductObject vendorSoftwareProductObject, User user) throws Exception {
351 Config config = Utils.getConfig();
352 String url = String.format(Urls.UPLOAD_HEAT_PACKAGE, config.getOnboardingBeHost(), config.getOnboardingBePort(), vendorSoftwareProductObject.getVspId(), vendorSoftwareProductObject.getComponentId());
353 return uploadFile(filepath, filename, url, user);
356 private static RestResponse uploadFile(String filepath, String filename, String url, User user) throws IOException{
357 CloseableHttpResponse response = null;
359 MultipartEntityBuilder mpBuilder = MultipartEntityBuilder.create();
360 mpBuilder.addPart("upload", new FileBody(getTestZipFile(filepath, filename)));
362 Map<String, String> headersMap = OnboardingUtils.prepareHeadersMap(user.getUserId());
363 headersMap.put(HttpHeaderEnum.CONTENT_TYPE.getValue(), "multipart/form-data");
365 CloseableHttpClient client = HttpClients.createDefault();
367 HttpPost httpPost = new HttpPost(url);
368 RestResponse restResponse = new RestResponse();
370 Iterator<String> iterator = headersMap.keySet().iterator();
371 while (iterator.hasNext()) {
372 String key = iterator.next();
373 String value = headersMap.get(key);
374 httpPost.addHeader(key, value);
376 httpPost.setEntity(mpBuilder.build());
377 response = client.execute(httpPost);
378 HttpEntity entity = response.getEntity();
379 String responseBody = null;
380 if (entity != null) {
381 InputStream instream = entity.getContent();
383 StringWriter writer = new StringWriter();
384 IOUtils.copy(instream, writer);
385 responseBody = writer.toString();
391 restResponse.setErrorCode(response.getStatusLine().getStatusCode());
392 restResponse.setResponse(responseBody);
397 closeResponse(response);
398 closeHttpClient(client);
403 private static void closeResponse(CloseableHttpResponse response) {
405 if (response != null) {
408 } catch (IOException e) {
409 System.out.println(String.format("failed to close client or response: %s", e.getMessage()));
413 private static void closeHttpClient(CloseableHttpClient client) {
415 if (client != null) {
418 } catch (IOException e) {
419 System.out.println(String.format("failed to close client or response: %s", e.getMessage()));
423 private static File getTestZipFile(String filepath, String filename) throws IOException {
424 Config config = Utils.getConfig();
425 String sourceDir = config.getImportResourceTestsConfigDir();
426 java.nio.file.Path filePath;
427 if(filename == null){
428 filePath = FileSystems.getDefault().getPath(filepath);
430 filePath = FileSystems.getDefault().getPath(filepath + File.separator + filename);
432 return filePath.toFile();
435 public static RestResponse checkinVendorSoftwareProduct(User user, VendorSoftwareProductObject vendorSoftwareProductObject) throws Exception {
436 Config config = Utils.getConfig();
437 String url = String.format(Urls.UPDATE_VSP, config.getOnboardingBeHost(), config.getOnboardingBePort(), vendorSoftwareProductObject.getVspId(), vendorSoftwareProductObject.getComponentId());
439 String userId = user.getUserId();
440 Map<String, String> headersMap = OnboardingUtils.prepareHeadersMap(userId);
441 // unset vspId, componentId, attContact, onboardingMethod
442 String vspId = vendorSoftwareProductObject.getVspId();
443 String componentId = vendorSoftwareProductObject.getComponentId();
444 String attContact = vendorSoftwareProductObject.getAttContact();
445 String onboardingMethod = vendorSoftwareProductObject.getOnboardingMethod();
446 vendorSoftwareProductObject.setVspId(null);
447 vendorSoftwareProductObject.setComponentId(null);
448 vendorSoftwareProductObject.setAttContact(null);
449 vendorSoftwareProductObject.setOnboardingMethod(null);
450 Gson gson = new Gson();
451 String body = gson.toJson(vendorSoftwareProductObject);
452 HttpRequest http = new HttpRequest();
453 RestResponse response = http.httpSendPut(url, body, headersMap);
454 // set back vspId, componentId, attContact, onboardingMethod
455 vendorSoftwareProductObject.setVspId(vspId);
456 vendorSoftwareProductObject.setComponentId(componentId);
457 vendorSoftwareProductObject.setAttContact(attContact);
458 vendorSoftwareProductObject.setOnboardingMethod(onboardingMethod);
463 public static RestResponse commitVendorSoftwareProduct(VendorSoftwareProductObject vendorSoftwareProductObject, User user) throws Exception {
464 String messageBody = "{\"action\":\"Commit\",\"commitRequest\":{\"message\":\"commit\"}}";
465 return actionOnComponent(vendorSoftwareProductObject.getVspId(), messageBody, "items", user, vendorSoftwareProductObject.getComponentId());
468 public static RestResponse submitVendorSoftwareProduct(String vspid, User user, String componentId) throws Exception {
469 return actionOnComponent(vspid, "{\"action\":\"Submit\"}", "vendor-software-products", user, componentId);
472 public static RestResponse createPackageOfVendorSoftwareProduct(String vspid, User user, String componentId) throws Exception {
473 return actionOnComponent(vspid, "{\"action\":\"Create_Package\"}", "vendor-software-products", user, componentId);
476 public static RestResponse creationMethodVendorSoftwareProduct(VendorSoftwareProductObject vendorSoftwareProductObject, User user) throws Exception {
477 String messageBody = "{\"description\":\"2.0\",\"creationMethod\":\"major\"}";
478 return createMethodVendorSoftwareProduct(vendorSoftwareProductObject, messageBody, "items", user);
481 private static RestResponse createMethodVendorSoftwareProduct(VendorSoftwareProductObject vendorSoftwareProductObject, String body, String onboardComponent, User user) throws Exception {
482 Config config = Utils.getConfig();
483 String url = String.format(Urls.CREATE_METHOD, config.getOnboardingBeHost(), config.getOnboardingBePort(), onboardComponent, vendorSoftwareProductObject.getVspId(), vendorSoftwareProductObject.getComponentId());
484 String userId = user.getUserId();
485 Map<String, String> headersMap = OnboardingUtils.prepareHeadersMap(userId);
487 HttpRequest http = new HttpRequest();
488 RestResponse response = http.httpSendPost(url, body, headersMap);
489 if(response.getErrorCode().intValue() == 200) {
490 vendorSoftwareProductObject.setComponentId(ResponseParser.getValueFromJsonResponse(response.getResponse(), "id"));
495 public static VendorSoftwareProductObject updateVSPWithNewVLMParameters(VendorSoftwareProductObject vendorSoftwareProductObject, AmdocsLicenseMembers amdocsLicenseMembers, User user) throws Exception {
497 RestResponse createMethod = creationMethodVendorSoftwareProduct(vendorSoftwareProductObject, user);
498 assertEquals("did not succeed to checkout new VSP", 200, createMethod.getErrorCode().intValue());
499 // vendorSoftwareProductObject.setComponentId(ResponseParser.getValueFromJsonResponse(createMethod.getResponse(), "id"));
501 String licensingVersion = amdocsLicenseMembers.getVersion();
502 LicensingData licensingData = new LicensingData(amdocsLicenseMembers.getVendorLicenseAgreementId(), Arrays.asList(amdocsLicenseMembers.getFeatureGroupId()));
503 vendorSoftwareProductObject.setVendorId(amdocsLicenseMembers.getVendorId());
504 vendorSoftwareProductObject.setVendorName(amdocsLicenseMembers.getVendorLicenseName());
505 vendorSoftwareProductObject.setLicensingVersion(licensingVersion);
506 vendorSoftwareProductObject.setLicensingData(licensingData);
508 VendorSoftwareProductObjectReqDetails vendorSoftwareProductObjectReqDetails = new VendorSoftwareProductObjectReqDetails(
509 vendorSoftwareProductObject.getName(), vendorSoftwareProductObject.getDescription(), vendorSoftwareProductObject.getCategory(),
510 vendorSoftwareProductObject.getSubCategory(), vendorSoftwareProductObject.getVendorId(), vendorSoftwareProductObject.getVendorName(),
511 vendorSoftwareProductObject.getLicensingVersion(), vendorSoftwareProductObject.getLicensingData(),
512 null, null, null, vendorSoftwareProductObject.getIcon() );
514 Gson gson = new Gson();
515 String body = gson.toJson(vendorSoftwareProductObjectReqDetails);
516 RestResponse updateResponse = updateVendorSoftwareProduct(vendorSoftwareProductObject, body, user);
517 assertEquals("did not succeed to update VSP", 200, updateResponse.getErrorCode().intValue());
519 prepareVspForUse(user, vendorSoftwareProductObject, true);
521 return vendorSoftwareProductObject;
524 public static RestResponse updateVendorSoftwareProduct(VendorSoftwareProductObject vendorSoftwareProductObject, String body, User user) throws Exception {
526 Config config = Utils.getConfig();
527 String url = String.format(Urls.UPDATE_VSP, config.getOnboardingBeHost(), config.getOnboardingBePort(), vendorSoftwareProductObject.getVspId(), vendorSoftwareProductObject.getComponentId());
528 String userId = user.getUserId();
530 Map<String, String> headersMap = OnboardingUtils.prepareHeadersMap(userId);
531 HttpRequest http = new HttpRequest();
533 RestResponse response = http.httpSendPut(url, body, headersMap);
537 // private static void importUpdateVSP(Pair<String, Map<String, String>> vsp, boolean isUpdate) throws Exception{
538 // String vspName = vsp.left;
539 // Map<String, String> vspMetadata = vsp.right;
540 // boolean vspFound = HomePage.searchForVSP(vspName);
544 // List<WebElement> elemenetsFromTable = HomePage.getElemenetsFromTable();
545 //// WebDriverWait wait = new WebDriverWait(GeneralUIUtils.getDriver(), 30);
546 //// WebElement findElement = wait.until(ExpectedConditions.visibilityOf(elemenetsFromTable.get(1)));
547 //// findElement.click();
548 // elemenetsFromTable.get(1).click();
549 // GeneralUIUtils.waitForLoader();
552 // GeneralUIUtils.clickOnElementByTestId(DataTestIdEnum.ImportVfRepository.UPDATE_VSP.getValue());
556 // GeneralUIUtils.clickOnElementByTestId(DataTestIdEnum.ImportVfRepository.IMPORT_VSP.getValue());
559 // String lifeCycleState = ResourceGeneralPage.getLifeCycleState();
560 // boolean needCheckout = lifeCycleState.equals(LifeCycleStateEnum.CHECKIN.getValue()) || lifeCycleState.equals(LifeCycleStateEnum.CERTIFIED.getValue());
564 // ResourceGeneralPage.clickCheckoutButton();
565 // Assert.assertTrue(ResourceGeneralPage.getLifeCycleState().equals(LifeCycleStateEnum.CHECKOUT.getValue()), "Did not succeed to checkout");
567 // } catch (Exception e) {
568 // ExtentTestActions.log(Status.ERROR, "Did not succeed to checkout");
569 // e.printStackTrace();
571 // GeneralUIUtils.waitForLoader();
574 // //Metadata verification
575 // VfVerificator.verifyOnboardedVnfMetadata(vspName, vspMetadata);
577 // ExtentTestActions.log(Status.INFO, "Clicking create/update VNF");
578 // String duration = GeneralUIUtils.getActionDuration(() -> waitUntilVnfCreated());
579 // ExtentTestActions.log(Status.INFO, "Succeeded in importing/updating " + vspName, duration);
582 // Assert.fail("Did not find VSP named " + vspName);
586 // private static void waitUntilVnfCreated() {
587 // GeneralUIUtils.clickOnElementByTestIdWithoutWait(DataTestIdEnum.GeneralElementsEnum.CREATE_BUTTON.getValue());
588 // GeneralUIUtils.waitForLoader(60*10);
589 // GeneralUIUtils.waitForAngular();
590 // GeneralUIUtils.getWebElementByTestID(DataTestIdEnum.GeneralElementsEnum.CHECKIN_BUTTON.getValue());
593 // public static void updateVSP(Pair<String, Map<String, String>> vsp) throws Exception{
594 // ExtentTestActions.log(Status.INFO, "Updating VSP " + vsp.left);
595 // importUpdateVSP(vsp, true);
598 // public static void importVSP(Pair<String, Map<String, String>> vsp) throws Exception{
599 // ExtentTestActions.log(Status.INFO, "Importing VSP " + vsp.left);
600 // importUpdateVSP(vsp, false);
603 // public static void updateVnfAndValidate(String filepath, Pair<String, Map<String, String>> vsp, String updatedVnfFile, User user) throws Exception, Throwable {
604 // ExtentTestActions.log(Status.INFO, String.format("Going to update the VNF with %s......", updatedVnfFile));
605 // System.out.println(String.format("Going to update the VNF with %s......", updatedVnfFile));
607 // Map<String, String> vspMap = vsp.right;
608 // String vspId = vspMap.get("vspId");
610 // updateVendorSoftwareProduct(vspId, updatedVnfFile, filepath, user);
611 // HomePage.showVspRepository();
613 // ResourceGeneralPage.getLeftMenu().moveToDeploymentArtifactScreen();
614 // DeploymentArtifactPage.verifyArtifactsExistInTable(filepath, updatedVnfFile);
617 // public static Pair<String, Map<String, String>> onboardAndValidate(String filepath, String vnfFile, User user) throws Exception {
618 // ExtentTestActions.log(Status.INFO, String.format("Going to onboard the VNF %s", vnfFile));
619 // System.out.println(String.format("Going to onboard the VNF %s", vnfFile));
621 // AmdocsLicenseMembers amdocsLicenseMembers = createVendorLicense(user);
622 // Pair<String, Map<String, String>> createVendorSoftwareProduct = createVendorSoftwareProduct(vnfFile, filepath, user, amdocsLicenseMembers);
623 // String vspName = createVendorSoftwareProduct.left;
625 // DownloadManager.downloadCsarByNameFromVSPRepository(vspName, createVendorSoftwareProduct.right.get("vspId"));
626 // File latestFilefromDir = FileHandling.getLastModifiedFileNameFromDir();
628 // ExtentTestActions.log(Status.INFO, String.format("Searching for onboarded %s", vnfFile));
629 // HomePage.showVspRepository();
630 // ExtentTestActions.log(Status.INFO,String.format("Going to import %s", vnfFile.substring(0, vnfFile.indexOf("."))));
631 // importVSP(createVendorSoftwareProduct);
633 // ResourceGeneralPage.getLeftMenu().moveToDeploymentArtifactScreen();
635 // // Verify deployment artifacts
636 // Map<String, Object> combinedMap = ArtifactFromCsar.combineHeatArtifacstWithFolderArtifacsToMap(latestFilefromDir.getAbsolutePath());
638 // LinkedList<HeatMetaFirstLevelDefinition> deploymentArtifacts = ((LinkedList<HeatMetaFirstLevelDefinition>) combinedMap.get("Deployment"));
639 // ArtifactsCorrelationManager.addVNFartifactDetails(vspName, deploymentArtifacts);
641 // List<String> heatEnvFilesFromCSAR = deploymentArtifacts.stream().filter(e -> e.getType().equals("HEAT_ENV")).
642 // map(e -> e.getFileName()).
643 // collect(Collectors.toList());
645 // validateDeploymentArtifactsVersion(deploymentArtifacts, heatEnvFilesFromCSAR);
647 // DeploymentArtifactPage.verifyArtifactsExistInTable(filepath, vnfFile);
648 // return createVendorSoftwareProduct;
651 // public static void validateDeploymentArtifactsVersion(LinkedList<HeatMetaFirstLevelDefinition> deploymentArtifacts,
652 // List<String> heatEnvFilesFromCSAR) {
653 // String artifactVersion;
654 // String artifactName;
656 // for(HeatMetaFirstLevelDefinition deploymentArtifact: deploymentArtifacts) {
657 // artifactVersion = "1";
659 // if(deploymentArtifact.getType().equals("HEAT_ENV")) {
661 // } else if(deploymentArtifact.getFileName().contains(".")) {
662 // artifactName = deploymentArtifact.getFileName().trim().substring(0, deploymentArtifact.getFileName().lastIndexOf("."));
664 // artifactName = deploymentArtifact.getFileName().trim();
667 // if (heatEnvFilesFromCSAR.contains(artifactName + ".env")){
668 // artifactVersion = "2";
670 // ArtifactUIUtils.validateArtifactNameVersionType(artifactName, artifactVersion, deploymentArtifact.getType());
675 private static VendorSoftwareProductObject fillVendorSoftwareProductObjectWithMetaData(String vnfFile, VendorSoftwareProductObject createVendorSoftwareProduct) {
676 VendorSoftwareProductObject vendorSoftwareProductObject = new VendorSoftwareProductObject();
677 vendorSoftwareProductObject.setAttContact(createVendorSoftwareProduct.getAttContact());
678 vendorSoftwareProductObject.setCategory(createVendorSoftwareProduct.getCategory());
679 vendorSoftwareProductObject.setComponentId(createVendorSoftwareProduct.getComponentId());
680 vendorSoftwareProductObject.setDescription(createVendorSoftwareProduct.getDescription());
681 vendorSoftwareProductObject.setSubCategory(createVendorSoftwareProduct.getSubCategory());
682 vendorSoftwareProductObject.setVendorName(createVendorSoftwareProduct.getVendorName());
683 vendorSoftwareProductObject.setVspId(createVendorSoftwareProduct.getVspId());
684 vendorSoftwareProductObject.setName(createVendorSoftwareProduct.getName());
685 String[] arrFileNameAndExtension = vnfFile.split("\\.");
686 vendorSoftwareProductObject.setOnboardingMethod("NetworkPackage");
687 vendorSoftwareProductObject.setNetworkPackageName(arrFileNameAndExtension[0]);
688 vendorSoftwareProductObject.setOnboardingOrigin(arrFileNameAndExtension[1]);
690 return vendorSoftwareProductObject;
693 public static void updateVendorSoftwareProductToNextVersion(VendorSoftwareProductObject vendorSoftwareProductObject, User user, String filepath, String heatFileName) throws Throwable {
695 RestResponse createMethod = creationMethodVendorSoftwareProduct(vendorSoftwareProductObject, user);
696 assertEquals("did not succeed to createMethod for new VSP", 200, createMethod.getErrorCode().intValue());
698 RestResponse uploadHeatPackage = uploadHeatPackage(filepath, heatFileName, vendorSoftwareProductObject, user);
699 assertEquals("did not succeed to upload HEAT package", 200, uploadHeatPackage.getErrorCode().intValue());
701 RestResponse validateUpload = validateUpload(vendorSoftwareProductObject, user);
702 assertEquals("did not succeed to validate upload process, reason: " + validateUpload.getResponse(), 200, validateUpload.getErrorCode().intValue());
704 prepareVspForUse(user,vendorSoftwareProductObject, true);
707 public static RestResponse archiveVendorSoftwareProduct(VendorSoftwareProductObject vendorSoftwareProductObject, User user) throws Exception {
708 String messageBody = "{\"action\":\"ARCHIVE\"}";
709 return actionOnComponent(vendorSoftwareProductObject.getVspId(), messageBody, "items", user);
712 public static RestResponse restoreVendorSoftwareProduct(VendorSoftwareProductObject vendorSoftwareProductObject, User user) throws Exception {
713 String messageBody = "{\"action\":\"RESTORE\"}";
714 return actionOnComponent(vendorSoftwareProductObject.getVspId(), messageBody, "items", user);