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 Pair<String, VendorSoftwareProductObject> createVendorSoftwareProduct(ResourceReqDetails resourceReqDetails, String heatFileName, String filepath, User user, AmdocsLicenseMembers amdocsLicenseMembers, Map<CvfcTypeEnum, String> cvfcArtifacts)
47 Pair<String, VendorSoftwareProductObject> pair = createVSP(resourceReqDetails, heatFileName, filepath, user, amdocsLicenseMembers);
48 if(cvfcArtifacts != null && ! cvfcArtifacts.isEmpty()){
49 addCvfcArtifacts(cvfcArtifacts, user, pair.right);
51 prepareVspForUse(user, pair.right, true);
55 public static Pair<String, 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 Pair<String, VendorSoftwareProductObject> createVendorSoftwareProduct = createVendorSoftwareProduct(resourceReqDetails, heatFileName, filePath, user, amdocsLicenseMembers, cvfcArtifacts);
87 VendorSoftwareProductObject vendorSoftwareProductObject = fillVendorSoftwareProductObjectWithMetaData(heatFileName, createVendorSoftwareProduct);
88 return vendorSoftwareProductObject;
93 public static Pair<String, 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 Pair<String, VendorSoftwareProductObject> pair = new Pair<>(vspName, createNewVspPair.right);
113 public static void updateVspWithVfcArtifacts(String filepath, String updatedSnmpPoll, String updatedSnmpTrap, String componentInstanceId, User user, VendorSoftwareProductObject vendorSoftwareProductObject) throws Exception{
114 RestResponse checkout = creationMethodVendorSoftwareProduct(vendorSoftwareProductObject, user);
115 assertEquals("did not succeed to checkout new VSP", 200, checkout.getErrorCode().intValue());
116 // ExtentTestActions.log(Status.INFO, "Deleting SNMP POLL");
117 deleteArtifactByType(componentInstanceId, vendorSoftwareProductObject, user, CvfcTypeEnum.SNMP_POLL);
118 // ExtentTestActions.log(Status.INFO, "Deleting SNMP TRAP");
119 deleteArtifactByType(componentInstanceId, vendorSoftwareProductObject, user, CvfcTypeEnum.SNMP_TRAP);
120 addVFCArtifacts(filepath, updatedSnmpPoll, updatedSnmpTrap, vendorSoftwareProductObject, user, componentInstanceId);
121 prepareVspForUse(user, vendorSoftwareProductObject, true);
124 private static RestResponse deleteArtifactByType(String componentInstanceId, VendorSoftwareProductObject vendorSoftwareProductObject, User user, CvfcTypeEnum snmpType) throws Exception
126 Config config = Utils.getConfig();
127 String url = String.format(Urls.DELETE_AMDOCS_ARTIFACT_BY_TYPE, config.getOnboardingBeHost(), config.getOnboardingBePort(), vendorSoftwareProductObject.getVspId(), vendorSoftwareProductObject.getComponentId(), componentInstanceId, snmpType.getValue());
128 String userId = user.getUserId();
129 Map<String, String> headersMap = OnboardingUtils.prepareHeadersMap(userId);
131 HttpRequest http = new HttpRequest();
132 RestResponse response = http.httpSendDelete(url, headersMap);
136 public static void updateVendorSoftwareProductToNextVersion(VendorSoftwareProductObject vendorSoftwareProductObject, User user, Boolean isVspUpdated) throws Throwable {
138 RestResponse createMethod = creationMethodVendorSoftwareProduct(vendorSoftwareProductObject, user);
139 assertEquals("did not succeed to createMethod for new VSP", 200, createMethod.getErrorCode().intValue());
140 prepareVspForUse(user,vendorSoftwareProductObject, isVspUpdated);
144 public static String handleFilename(String heatFileName) {
145 final String namePrefix = String.format("%sVF%s", ElementFactory.getResourcePrefix(), "Onboarded-");
146 final String nameSuffix = "-" + OnboardingUtils.getShortUUID();
148 String subHeatFileName = heatFileName.substring(0, heatFileName.lastIndexOf("."));
150 if ((namePrefix + subHeatFileName + nameSuffix).length() >= 50) {
151 subHeatFileName = subHeatFileName.substring(0, 50 - namePrefix.length() - nameSuffix.length());
154 if (subHeatFileName.contains("(") || subHeatFileName.contains(")")) {
155 subHeatFileName = subHeatFileName.replace("(", "-");
156 subHeatFileName = subHeatFileName.replace(")", "-");
159 String vnfName = namePrefix + subHeatFileName + nameSuffix;
163 public static String addVFCArtifacts(String filepath, String snmpPoll, String snmpTrap, VendorSoftwareProductObject vendorSoftwareProductObject, User user, String componentInstanceId) throws Exception{
164 componentInstanceId = (componentInstanceId == null) ? getVspComponentId(vendorSoftwareProductObject, user) : componentInstanceId;
165 if (componentInstanceId != null){
166 if (snmpPoll != null){
167 // ExtentTestActions.log(Status.INFO, "Adding VFC artifact of type SNMP POLL with the file " + snmpPoll);
168 RestResponse uploadSnmpPollArtifact = uploadSnmpPollArtifact(filepath, snmpPoll, vendorSoftwareProductObject, user, componentInstanceId);
169 assertEquals("Did not succeed to add SNMP POLL", 200, uploadSnmpPollArtifact.getErrorCode().intValue());
171 if (snmpTrap != null){
172 // ExtentTestActions.log(Status.INFO, "Adding VFC artifact of type SNMP TRAP with the file " + snmpTrap);
173 RestResponse uploadSnmpTrapArtifact = uploadSnmpTrapArtifact(filepath, snmpTrap, vendorSoftwareProductObject, user, componentInstanceId);
174 assertEquals("Did not succeed to add SNMP TRAP", 200, uploadSnmpTrapArtifact.getErrorCode().intValue());
178 return componentInstanceId;
181 public static String addCvfcArtifacts(Map<CvfcTypeEnum, String> componentVfcArtifacts, User user, VendorSoftwareProductObject vendorSoftwareProductObject) throws Exception{
182 String componentInstanceId = getVspComponentId(vendorSoftwareProductObject, user);
183 if (componentInstanceId != null){
184 for(Map.Entry<CvfcTypeEnum, String> entry : componentVfcArtifacts.entrySet()){
185 // ExtentTestActions.log(Status.INFO, "Adding VFC artifact of type " + entry.getKey().getValue() + " with the file " + entry.getValue());
186 RestResponse uploadSnmpPollArtifact = uploadCvfcArtifact(entry.getValue(), entry.getKey().getValue(), user, vendorSoftwareProductObject, componentInstanceId);
187 assertEquals("Did not succeed to add " + entry.getKey().getValue(), BaseRestUtils.STATUS_CODE_SUCCESS, uploadSnmpPollArtifact.getErrorCode().intValue());
190 return componentInstanceId;
193 public static String addVFCArtifacts(String filepath, String snmpPoll, String snmpTrap, VendorSoftwareProductObject vendorSoftwareProductObject, User user) throws Exception{
194 return addVFCArtifacts(filepath, snmpPoll, snmpTrap, vendorSoftwareProductObject, user, null);
197 public static RestResponse uploadCvfcArtifact(String filepath, String cvfcType, User user, VendorSoftwareProductObject vendorSoftwareProductObject, String componentInstanceId) throws IOException {
198 Config config = Utils.getConfig();
199 String snmpPollUrl = String.format(Urls.UPLOAD_AMDOCS_ARTIFACT, config.getOnboardingBeHost(),config.getOnboardingBePort(), vendorSoftwareProductObject.getVspId(), vendorSoftwareProductObject.getComponentId(), componentInstanceId, cvfcType);
200 return uploadFile(filepath, null, snmpPollUrl, user);
204 private static RestResponse uploadSnmpPollArtifact(String filepath, String zipArtifact, VendorSoftwareProductObject vendorSoftwareProductObject, User user, String componentInstanceId) throws IOException {
205 Config config = Utils.getConfig();
206 String snmpPollUrl = String.format(Urls.UPLOAD_SNMP_POLL_ARTIFACT, config.getOnboardingBeHost(),config.getOnboardingBePort(), vendorSoftwareProductObject.getVspId(), vendorSoftwareProductObject.getComponentId(), componentInstanceId);
207 return uploadFile(filepath, zipArtifact, snmpPollUrl, user);
210 private static RestResponse uploadSnmpTrapArtifact(String filepath, String zipArtifact, VendorSoftwareProductObject vendorSoftwareProductObject, User user, String vspComponentId) throws IOException {
211 Config config = Utils.getConfig();
212 String snmpTrapUrl = String.format(Urls.UPLOAD_SNMP_POLL_ARTIFACT, config.getOnboardingBeHost(),config.getOnboardingBePort(), vendorSoftwareProductObject.getVspId(), vendorSoftwareProductObject.getComponentId(), vspComponentId);
213 return uploadFile(filepath, zipArtifact, snmpTrapUrl, user);
216 private static RestResponse deleteSnmpArtifact(String componentId, String vspId, User user, SnmpTypeEnum snmpType) throws Exception
218 Config config = Utils.getConfig();
219 String url = String.format(Urls.DELETE_AMDOCS_ARTIFACT_BY_TYPE, config.getOnboardingBeHost(),config.getOnboardingBePort(), vspId, componentId, snmpType.getValue());
220 String userId = user.getUserId();
222 Map<String, String> headersMap = OnboardingUtils.prepareHeadersMap(userId);
224 HttpRequest http = new HttpRequest();
225 RestResponse response = http.httpSendDelete(url, headersMap);
231 * @param vendorSoftwareProductObject VendorSoftwareProductObject
232 * @param user user object
233 * @return return first found component instance Id from list
234 * @throws Exception Exception
236 private static String getVspComponentId(VendorSoftwareProductObject vendorSoftwareProductObject, User user) throws Exception {
237 RestResponse componentList = getVSPComponents(vendorSoftwareProductObject, user);
238 String response = componentList.getResponse();
239 Map<String, Object> responseMap = (Map<String, Object>) JSONValue.parse(response);
240 JSONArray results = (JSONArray)responseMap.get("results");
241 for (Object res : results){
242 Map<String, Object> componentMap = (Map<String, Object>) JSONValue.parse(res.toString());
243 String componentInstanceId = componentMap.get("id").toString();
244 return componentInstanceId;
249 private static RestResponse getVSPComponents(VendorSoftwareProductObject vendorSoftwareProductObject, User user) throws Exception{
250 Config config = Utils.getConfig();
251 String url = String.format(Urls.GET_VSP_COMPONENTS, config.getOnboardingBeHost(),config.getOnboardingBePort(), vendorSoftwareProductObject.getVspId(), vendorSoftwareProductObject.getComponentId());
252 Map<String, String> headersMap = OnboardingUtils.prepareHeadersMap(user.getUserId());
254 HttpRequest http = new HttpRequest();
255 RestResponse response = http.httpSendGet(url, headersMap);
261 public static boolean validateVspExist(VendorSoftwareProductObject vendorSoftwareProductObject, User user) throws Exception {
262 RestResponse restResponse = getVSPComponentByVersion(vendorSoftwareProductObject, user);
263 assertEquals(String.format("Vsp version not updated, reponse message: %s", restResponse.getResponse()),restResponse.getErrorCode().intValue(),200);
264 return (restResponse.getErrorCode()==200);
268 private static RestResponse getVSPComponentByVersion(VendorSoftwareProductObject vendorSoftwareProductObject, User user) throws Exception{
269 Config config = Utils.getConfig();
270 String url = String.format(Urls.GET_VSP_COMPONENT_BY_VERSION, config.getOnboardingBeHost(),config.getOnboardingBePort(), vendorSoftwareProductObject.getVspId(), vendorSoftwareProductObject.getComponentId());
271 String userId = user.getUserId();
273 Map<String, String> headersMap = OnboardingUtils.prepareHeadersMap(userId);
275 HttpRequest http = new HttpRequest();
276 RestResponse response = http.httpSendGet(url, headersMap);
280 private static RestResponse actionOnComponent(String vspid, String body, String onboardComponent, User user, String componentVersion) throws Exception {
281 Config config = Utils.getConfig();
282 String url = String.format(Urls.ACTION_ON_COMPONENT, config.getOnboardingBeHost(), config.getOnboardingBePort(), onboardComponent, vspid, componentVersion);
283 String userId = user.getUserId();
284 Map<String, String> headersMap = OnboardingUtils.prepareHeadersMap(userId);
286 HttpRequest http = new HttpRequest();
287 RestResponse response = http.httpSendPut(url, body, headersMap);
291 public static Pair<RestResponse, VendorSoftwareProductObject> createNewVendorSoftwareProduct(ResourceReqDetails resourceReqDetails, String vspName, AmdocsLicenseMembers amdocsLicenseMembers, User user) throws Exception {
293 Config config = Utils.getConfig();
294 String url = String.format(Urls.CREATE_VENDOR_SOFTWARE_PRODUCT, config.getOnboardingBeHost(), config.getOnboardingBePort());
295 String userId = user.getUserId();
296 VendorSoftwareProductObject vendorSoftwareProductObject = new VendorSoftwareProductObject();
297 LicensingData licensingData = new LicensingData(amdocsLicenseMembers.getVendorLicenseAgreementId(), Arrays.asList(amdocsLicenseMembers.getFeatureGroupId()));
298 ResourceCategoryEnum resourceCategoryEnum = ResourceCategoryEnum.findEnumNameByValues(resourceReqDetails.getCategories().get(0).getName(), resourceReqDetails.getCategories().get(0).getSubcategories().get(0).getName());
300 vendorSoftwareProductObject.setName(vspName);
301 vendorSoftwareProductObject.setDescription(resourceReqDetails.getDescription());
302 vendorSoftwareProductObject.setCategory(resourceCategoryEnum.getCategoryUniqeId());
303 vendorSoftwareProductObject.setSubCategory(resourceCategoryEnum.getSubCategoryUniqeId());
304 vendorSoftwareProductObject.setOnboardingMethod("NetworkPackage");
305 vendorSoftwareProductObject.setVendorName(amdocsLicenseMembers.getVendorLicenseName());
306 vendorSoftwareProductObject.setVendorId(amdocsLicenseMembers.getVendorId());
307 vendorSoftwareProductObject.setIcon("icon");
308 vendorSoftwareProductObject.setLicensingData(licensingData);
309 vendorSoftwareProductObject.setLicensingVersion(amdocsLicenseMembers.getVersion());
311 Map<String, String> headersMap = OnboardingUtils.prepareHeadersMap(userId);
312 HttpRequest http = new HttpRequest();
313 Gson gson = new Gson();
314 String body = gson.toJson(vendorSoftwareProductObject);
316 RestResponse response = http.httpSendPost(url, body, headersMap);
318 vendorSoftwareProductObject.setVspId(ResponseParser.getValueFromJsonResponse(response.getResponse(), "itemId"));
319 vendorSoftwareProductObject.setComponentId(ResponseParser.getValueFromJsonResponse(response.getResponse(), "version:id"));
320 vendorSoftwareProductObject.setAttContact(user.getUserId());
322 return new Pair<>(response, vendorSoftwareProductObject);
325 public static RestResponse validateUpload(VendorSoftwareProductObject vendorSoftwareProductObject, User user) throws Exception {
326 Config config = Utils.getConfig();
327 String url = String.format(Urls.VALIDATE_UPLOAD, config.getOnboardingBeHost(), config.getOnboardingBePort(), vendorSoftwareProductObject.getVspId(), vendorSoftwareProductObject.getComponentId());
328 String userId = user.getUserId();
330 Map<String, String> headersMap = OnboardingUtils.prepareHeadersMap(userId);
331 HttpRequest http = new HttpRequest();
332 RestResponse response = http.httpSendPut(url, null, headersMap);
337 public static RestResponse uploadHeatPackage(String filepath, String filename, VendorSoftwareProductObject vendorSoftwareProductObject, User user) throws Exception {
338 Config config = Utils.getConfig();
339 String url = String.format(Urls.UPLOAD_HEAT_PACKAGE, config.getOnboardingBeHost(), config.getOnboardingBePort(), vendorSoftwareProductObject.getVspId(), vendorSoftwareProductObject.getComponentId());
340 return uploadFile(filepath, filename, url, user);
343 private static RestResponse uploadFile(String filepath, String filename, String url, User user) throws IOException{
344 CloseableHttpResponse response = null;
346 MultipartEntityBuilder mpBuilder = MultipartEntityBuilder.create();
347 mpBuilder.addPart("upload", new FileBody(getTestZipFile(filepath, filename)));
349 Map<String, String> headersMap = OnboardingUtils.prepareHeadersMap(user.getUserId());
350 headersMap.put(HttpHeaderEnum.CONTENT_TYPE.getValue(), "multipart/form-data");
352 CloseableHttpClient client = HttpClients.createDefault();
354 HttpPost httpPost = new HttpPost(url);
355 RestResponse restResponse = new RestResponse();
357 Iterator<String> iterator = headersMap.keySet().iterator();
358 while (iterator.hasNext()) {
359 String key = iterator.next();
360 String value = headersMap.get(key);
361 httpPost.addHeader(key, value);
363 httpPost.setEntity(mpBuilder.build());
364 response = client.execute(httpPost);
365 HttpEntity entity = response.getEntity();
366 String responseBody = null;
367 if (entity != null) {
368 InputStream instream = entity.getContent();
370 StringWriter writer = new StringWriter();
371 IOUtils.copy(instream, writer);
372 responseBody = writer.toString();
378 restResponse.setErrorCode(response.getStatusLine().getStatusCode());
379 restResponse.setResponse(responseBody);
384 closeResponse(response);
385 closeHttpClient(client);
390 private static void closeResponse(CloseableHttpResponse response) {
392 if (response != null) {
395 } catch (IOException e) {
396 System.out.println(String.format("failed to close client or response: %s", e.getMessage()));
400 private static void closeHttpClient(CloseableHttpClient client) {
402 if (client != null) {
405 } catch (IOException e) {
406 System.out.println(String.format("failed to close client or response: %s", e.getMessage()));
410 private static File getTestZipFile(String filepath, String filename) throws IOException {
411 Config config = Utils.getConfig();
412 String sourceDir = config.getImportResourceTestsConfigDir();
413 java.nio.file.Path filePath;
414 if(filename == null){
415 filePath = FileSystems.getDefault().getPath(filepath);
417 filePath = FileSystems.getDefault().getPath(filepath + File.separator + filename);
419 return filePath.toFile();
422 public static RestResponse checkinVendorSoftwareProduct(User user, VendorSoftwareProductObject vendorSoftwareProductObject) throws Exception {
423 Config config = Utils.getConfig();
424 String url = String.format(Urls.UPDATE_VSP, config.getOnboardingBeHost(), config.getOnboardingBePort(), vendorSoftwareProductObject.getVspId(), vendorSoftwareProductObject.getComponentId());
426 String userId = user.getUserId();
427 Map<String, String> headersMap = OnboardingUtils.prepareHeadersMap(userId);
428 // unset vspId, componentId, attContact, onboardingMethod
429 String vspId = vendorSoftwareProductObject.getVspId();
430 String componentId = vendorSoftwareProductObject.getComponentId();
431 String attContact = vendorSoftwareProductObject.getAttContact();
432 String onboardingMethod = vendorSoftwareProductObject.getOnboardingMethod();
433 vendorSoftwareProductObject.setVspId(null);
434 vendorSoftwareProductObject.setComponentId(null);
435 vendorSoftwareProductObject.setAttContact(null);
436 vendorSoftwareProductObject.setOnboardingMethod(null);
437 Gson gson = new Gson();
438 String body = gson.toJson(vendorSoftwareProductObject);
439 HttpRequest http = new HttpRequest();
440 RestResponse response = http.httpSendPut(url, body, headersMap);
441 // set back vspId, componentId, attContact, onboardingMethod
442 vendorSoftwareProductObject.setVspId(vspId);
443 vendorSoftwareProductObject.setComponentId(componentId);
444 vendorSoftwareProductObject.setAttContact(attContact);
445 vendorSoftwareProductObject.setOnboardingMethod(onboardingMethod);
450 public static RestResponse commitVendorSoftwareProduct(VendorSoftwareProductObject vendorSoftwareProductObject, User user) throws Exception {
451 String messageBody = "{\"action\":\"Commit\",\"commitRequest\":{\"message\":\"commit\"}}";
452 return actionOnComponent(vendorSoftwareProductObject.getVspId(), messageBody, "items", user, vendorSoftwareProductObject.getComponentId());
455 public static RestResponse submitVendorSoftwareProduct(String vspid, User user, String componentId) throws Exception {
456 return actionOnComponent(vspid, "{\"action\":\"Submit\"}", "vendor-software-products", user, componentId);
459 public static RestResponse createPackageOfVendorSoftwareProduct(String vspid, User user, String componentId) throws Exception {
460 return actionOnComponent(vspid, "{\"action\":\"Create_Package\"}", "vendor-software-products", user, componentId);
463 public static RestResponse creationMethodVendorSoftwareProduct(VendorSoftwareProductObject vendorSoftwareProductObject, User user) throws Exception {
464 String messageBody = "{\"description\":\"2.0\",\"creationMethod\":\"major\"}";
465 return createMethodVendorSoftwareProduct(vendorSoftwareProductObject, messageBody, "items", user);
468 private static RestResponse createMethodVendorSoftwareProduct(VendorSoftwareProductObject vendorSoftwareProductObject, String body, String onboardComponent, User user) throws Exception {
469 Config config = Utils.getConfig();
470 String url = String.format(Urls.CREATE_METHOD, config.getOnboardingBeHost(), config.getOnboardingBePort(), onboardComponent, vendorSoftwareProductObject.getVspId(), vendorSoftwareProductObject.getComponentId());
471 String userId = user.getUserId();
472 Map<String, String> headersMap = OnboardingUtils.prepareHeadersMap(userId);
474 HttpRequest http = new HttpRequest();
475 RestResponse response = http.httpSendPost(url, body, headersMap);
476 if(response.getErrorCode().intValue() == 200) {
477 vendorSoftwareProductObject.setComponentId(ResponseParser.getValueFromJsonResponse(response.getResponse(), "id"));
482 public static VendorSoftwareProductObject updateVSPWithNewVLMParameters(VendorSoftwareProductObject vendorSoftwareProductObject, AmdocsLicenseMembers amdocsLicenseMembers, User user) throws Exception {
484 RestResponse createMethod = creationMethodVendorSoftwareProduct(vendorSoftwareProductObject, user);
485 assertEquals("did not succeed to checkout new VSP", 200, createMethod.getErrorCode().intValue());
486 // vendorSoftwareProductObject.setComponentId(ResponseParser.getValueFromJsonResponse(createMethod.getResponse(), "id"));
488 String licensingVersion = amdocsLicenseMembers.getVersion();
489 LicensingData licensingData = new LicensingData(amdocsLicenseMembers.getVendorLicenseAgreementId(), Arrays.asList(amdocsLicenseMembers.getFeatureGroupId()));
490 vendorSoftwareProductObject.setVendorId(amdocsLicenseMembers.getVendorId());
491 vendorSoftwareProductObject.setVendorName(amdocsLicenseMembers.getVendorLicenseName());
492 vendorSoftwareProductObject.setLicensingVersion(licensingVersion);
493 vendorSoftwareProductObject.setLicensingData(licensingData);
495 VendorSoftwareProductObjectReqDetails vendorSoftwareProductObjectReqDetails = new VendorSoftwareProductObjectReqDetails(
496 vendorSoftwareProductObject.getName(), vendorSoftwareProductObject.getDescription(), vendorSoftwareProductObject.getCategory(),
497 vendorSoftwareProductObject.getSubCategory(), vendorSoftwareProductObject.getVendorId(), vendorSoftwareProductObject.getVendorName(),
498 vendorSoftwareProductObject.getLicensingVersion(), vendorSoftwareProductObject.getLicensingData(),
499 null, null, null, vendorSoftwareProductObject.getIcon() );
501 Gson gson = new Gson();
502 String body = gson.toJson(vendorSoftwareProductObjectReqDetails);
503 RestResponse updateResponse = updateVendorSoftwareProduct(vendorSoftwareProductObject, body, user);
504 assertEquals("did not succeed to update VSP", 200, updateResponse.getErrorCode().intValue());
506 prepareVspForUse(user, vendorSoftwareProductObject, true);
508 return vendorSoftwareProductObject;
511 public static RestResponse updateVendorSoftwareProduct(VendorSoftwareProductObject vendorSoftwareProductObject, String body, User user) throws Exception {
513 Config config = Utils.getConfig();
514 String url = String.format(Urls.UPDATE_VSP, config.getOnboardingBeHost(), config.getOnboardingBePort(), vendorSoftwareProductObject.getVspId(), vendorSoftwareProductObject.getComponentId());
515 String userId = user.getUserId();
517 Map<String, String> headersMap = OnboardingUtils.prepareHeadersMap(userId);
518 HttpRequest http = new HttpRequest();
520 RestResponse response = http.httpSendPut(url, body, headersMap);
524 // private static void importUpdateVSP(Pair<String, Map<String, String>> vsp, boolean isUpdate) throws Exception{
525 // String vspName = vsp.left;
526 // Map<String, String> vspMetadata = vsp.right;
527 // boolean vspFound = HomePage.searchForVSP(vspName);
531 // List<WebElement> elemenetsFromTable = HomePage.getElemenetsFromTable();
532 //// WebDriverWait wait = new WebDriverWait(GeneralUIUtils.getDriver(), 30);
533 //// WebElement findElement = wait.until(ExpectedConditions.visibilityOf(elemenetsFromTable.get(1)));
534 //// findElement.click();
535 // elemenetsFromTable.get(1).click();
536 // GeneralUIUtils.waitForLoader();
539 // GeneralUIUtils.clickOnElementByTestId(DataTestIdEnum.ImportVfRepository.UPDATE_VSP.getValue());
543 // GeneralUIUtils.clickOnElementByTestId(DataTestIdEnum.ImportVfRepository.IMPORT_VSP.getValue());
546 // String lifeCycleState = ResourceGeneralPage.getLifeCycleState();
547 // boolean needCheckout = lifeCycleState.equals(LifeCycleStateEnum.CHECKIN.getValue()) || lifeCycleState.equals(LifeCycleStateEnum.CERTIFIED.getValue());
551 // ResourceGeneralPage.clickCheckoutButton();
552 // Assert.assertTrue(ResourceGeneralPage.getLifeCycleState().equals(LifeCycleStateEnum.CHECKOUT.getValue()), "Did not succeed to checkout");
554 // } catch (Exception e) {
555 // ExtentTestActions.log(Status.ERROR, "Did not succeed to checkout");
556 // e.printStackTrace();
558 // GeneralUIUtils.waitForLoader();
561 // //Metadata verification
562 // VfVerificator.verifyOnboardedVnfMetadata(vspName, vspMetadata);
564 // ExtentTestActions.log(Status.INFO, "Clicking create/update VNF");
565 // String duration = GeneralUIUtils.getActionDuration(() -> waitUntilVnfCreated());
566 // ExtentTestActions.log(Status.INFO, "Succeeded in importing/updating " + vspName, duration);
569 // Assert.fail("Did not find VSP named " + vspName);
573 // private static void waitUntilVnfCreated() {
574 // GeneralUIUtils.clickOnElementByTestIdWithoutWait(DataTestIdEnum.GeneralElementsEnum.CREATE_BUTTON.getValue());
575 // GeneralUIUtils.waitForLoader(60*10);
576 // GeneralUIUtils.waitForAngular();
577 // GeneralUIUtils.getWebElementByTestID(DataTestIdEnum.GeneralElementsEnum.CHECKIN_BUTTON.getValue());
580 // public static void updateVSP(Pair<String, Map<String, String>> vsp) throws Exception{
581 // ExtentTestActions.log(Status.INFO, "Updating VSP " + vsp.left);
582 // importUpdateVSP(vsp, true);
585 // public static void importVSP(Pair<String, Map<String, String>> vsp) throws Exception{
586 // ExtentTestActions.log(Status.INFO, "Importing VSP " + vsp.left);
587 // importUpdateVSP(vsp, false);
590 // public static void updateVnfAndValidate(String filepath, Pair<String, Map<String, String>> vsp, String updatedVnfFile, User user) throws Exception, Throwable {
591 // ExtentTestActions.log(Status.INFO, String.format("Going to update the VNF with %s......", updatedVnfFile));
592 // System.out.println(String.format("Going to update the VNF with %s......", updatedVnfFile));
594 // Map<String, String> vspMap = vsp.right;
595 // String vspId = vspMap.get("vspId");
597 // updateVendorSoftwareProduct(vspId, updatedVnfFile, filepath, user);
598 // HomePage.showVspRepository();
600 // ResourceGeneralPage.getLeftMenu().moveToDeploymentArtifactScreen();
601 // DeploymentArtifactPage.verifyArtifactsExistInTable(filepath, updatedVnfFile);
604 // public static Pair<String, Map<String, String>> onboardAndValidate(String filepath, String vnfFile, User user) throws Exception {
605 // ExtentTestActions.log(Status.INFO, String.format("Going to onboard the VNF %s", vnfFile));
606 // System.out.println(String.format("Going to onboard the VNF %s", vnfFile));
608 // AmdocsLicenseMembers amdocsLicenseMembers = createVendorLicense(user);
609 // Pair<String, Map<String, String>> createVendorSoftwareProduct = createVendorSoftwareProduct(vnfFile, filepath, user, amdocsLicenseMembers);
610 // String vspName = createVendorSoftwareProduct.left;
612 // DownloadManager.downloadCsarByNameFromVSPRepository(vspName, createVendorSoftwareProduct.right.get("vspId"));
613 // File latestFilefromDir = FileHandling.getLastModifiedFileNameFromDir();
615 // ExtentTestActions.log(Status.INFO, String.format("Searching for onboarded %s", vnfFile));
616 // HomePage.showVspRepository();
617 // ExtentTestActions.log(Status.INFO,String.format("Going to import %s", vnfFile.substring(0, vnfFile.indexOf("."))));
618 // importVSP(createVendorSoftwareProduct);
620 // ResourceGeneralPage.getLeftMenu().moveToDeploymentArtifactScreen();
622 // // Verify deployment artifacts
623 // Map<String, Object> combinedMap = ArtifactFromCsar.combineHeatArtifacstWithFolderArtifacsToMap(latestFilefromDir.getAbsolutePath());
625 // LinkedList<HeatMetaFirstLevelDefinition> deploymentArtifacts = ((LinkedList<HeatMetaFirstLevelDefinition>) combinedMap.get("Deployment"));
626 // ArtifactsCorrelationManager.addVNFartifactDetails(vspName, deploymentArtifacts);
628 // List<String> heatEnvFilesFromCSAR = deploymentArtifacts.stream().filter(e -> e.getType().equals("HEAT_ENV")).
629 // map(e -> e.getFileName()).
630 // collect(Collectors.toList());
632 // validateDeploymentArtifactsVersion(deploymentArtifacts, heatEnvFilesFromCSAR);
634 // DeploymentArtifactPage.verifyArtifactsExistInTable(filepath, vnfFile);
635 // return createVendorSoftwareProduct;
638 // public static void validateDeploymentArtifactsVersion(LinkedList<HeatMetaFirstLevelDefinition> deploymentArtifacts,
639 // List<String> heatEnvFilesFromCSAR) {
640 // String artifactVersion;
641 // String artifactName;
643 // for(HeatMetaFirstLevelDefinition deploymentArtifact: deploymentArtifacts) {
644 // artifactVersion = "1";
646 // if(deploymentArtifact.getType().equals("HEAT_ENV")) {
648 // } else if(deploymentArtifact.getFileName().contains(".")) {
649 // artifactName = deploymentArtifact.getFileName().trim().substring(0, deploymentArtifact.getFileName().lastIndexOf("."));
651 // artifactName = deploymentArtifact.getFileName().trim();
654 // if (heatEnvFilesFromCSAR.contains(artifactName + ".env")){
655 // artifactVersion = "2";
657 // ArtifactUIUtils.validateArtifactNameVersionType(artifactName, artifactVersion, deploymentArtifact.getType());
662 public static VendorSoftwareProductObject fillVendorSoftwareProductObjectWithMetaData(String vnfFile, Pair<String, VendorSoftwareProductObject> createVendorSoftwareProduct) {
663 VendorSoftwareProductObject vendorSoftwareProductObject = new VendorSoftwareProductObject();
664 VendorSoftwareProductObject map = createVendorSoftwareProduct.right;
665 vendorSoftwareProductObject.setAttContact(map.getAttContact());
666 vendorSoftwareProductObject.setCategory(map.getCategory());
667 vendorSoftwareProductObject.setComponentId(map.getComponentId());
668 vendorSoftwareProductObject.setDescription(map.getDescription());
669 vendorSoftwareProductObject.setSubCategory(map.getSubCategory());
670 vendorSoftwareProductObject.setVendorName(map.getVendorName());
671 vendorSoftwareProductObject.setVspId(map.getVspId());
672 vendorSoftwareProductObject.setName(createVendorSoftwareProduct.left);
673 String[] arrFileNameAndExtension = vnfFile.split("\\.");
674 vendorSoftwareProductObject.setOnboardingMethod("NetworkPackage");
675 vendorSoftwareProductObject.setNetworkPackageName(arrFileNameAndExtension[0]);
676 vendorSoftwareProductObject.setOnboardingOrigin(arrFileNameAndExtension[1]);
678 return vendorSoftwareProductObject;
681 public static void updateVendorSoftwareProductToNextVersion(VendorSoftwareProductObject vendorSoftwareProductObject, User user, String filepath, String heatFileName) throws Throwable {
683 RestResponse createMethod = creationMethodVendorSoftwareProduct(vendorSoftwareProductObject, user);
684 assertEquals("did not succeed to createMethod for new VSP", 200, createMethod.getErrorCode().intValue());
686 RestResponse uploadHeatPackage = uploadHeatPackage(filepath, heatFileName, vendorSoftwareProductObject, user);
687 assertEquals("did not succeed to upload HEAT package", 200, uploadHeatPackage.getErrorCode().intValue());
689 RestResponse validateUpload = validateUpload(vendorSoftwareProductObject, user);
690 assertEquals("did not succeed to validate upload process, reason: " + validateUpload.getResponse(), 200, validateUpload.getErrorCode().intValue());
692 prepareVspForUse(user,vendorSoftwareProductObject, true);