UNPKG

@broadcom/endevor-for-zowe-cli

Version:

Endevor Plug-in for Zowe CLI

273 lines 25.9 kB
"use strict"; var __awaiter = (this && this.__awaiter) || function (thisArg, _arguments, P, generator) { function adopt(value) { return value instanceof P ? value : new P(function (resolve) { resolve(value); }); } return new (P || (P = Promise))(function (resolve, reject) { function fulfilled(value) { try { step(generator.next(value)); } catch (e) { reject(e); } } function rejected(value) { try { step(generator["throw"](value)); } catch (e) { reject(e); } } function step(result) { result.done ? resolve(result.value) : adopt(result.value).then(fulfilled, rejected); } step((generator = generator.apply(thisArg, _arguments || [])).next()); }); }; Object.defineProperty(exports, "__esModule", { value: true }); exports.BulkRetrieveElement = void 0; const index_1 = require("../index"); const path = require("path"); const lodash_1 = require("lodash"); const __1 = require("../.."); const __2 = require(".."); class BulkRetrieveElement { static performIndividualRetrieve(session, instance, element, destDir, isflat, options, maxRC, fileSuffix, writeReport, reportFileName, reportDir, suppressMessages, charset, performListElement, excludeFromList) { return __awaiter(this, void 0, void 0, function* () { const retrieveOptions = (0, lodash_1.cloneDeep)(options); try { if (excludeFromList) { excludeFromList.forEach((exclElm) => { if ((0, lodash_1.isEqual)(exclElm, element)) { performListElement = false; } }); } if (performListElement && !isflat) { const listElmSpec = { environment: element.environment, "stage-number": element.stageNumber, system: element.system, subsystem: element.subsystem, type: element.type, element: element.element, search: "yes", return: "FIR" }; const listElementResponse = yield index_1.EndevorClient.listElement(session)(instance)(listElmSpec); const listElementResponseBody = listElementResponse.body; if (listElementResponse.isResponseJSON) { let stcShortage = false; listElementResponseBody.messages.forEach((message) => { if (message.startsWith("EWS1111E")) { stcShortage = true; } }); if (listElementResponseBody.reports != null) { const isWriteReport = __1.HandlerUtils.ifWriteReportsToFile(writeReport, listElementResponseBody.returnCode); if (isWriteReport) { yield index_1.EndevorRestUtils.writeConsoleOutput(session, instance, listElementResponseBody.reports, isWriteReport, [], reportFileName, reportDir, suppressMessages, true); } } if (stcShortage) { return __2.EndevorActionStatusDetailed.FAILURE_STC_SHORTAGE; } else if (listElementResponseBody.data[0] == null) { return __2.EndevorActionStatusDetailed.FAILURE; } else if (listElementResponseBody.returnCode > maxRC) { return __2.EndevorActionStatusDetailed.FAILURE_MAX_RC; } const listElementResult = listElementResponseBody.data; const listFirstElementResult = listElementResult[0]; if (listFirstElementResult.envName != null) { element.environment = listFirstElementResult.envName; } if (listFirstElementResult.stgNum != null) { element.stageNumber = listFirstElementResult.stgNum.toString(); } if (listFirstElementResult.sysName != null) { element.system = listFirstElementResult.sysName; } if (listFirstElementResult.sbsName != null) { element.subsystem = listFirstElementResult.sbsName; } if (listFirstElementResult.typeName != null) { element.type = listFirstElementResult.typeName; } } else { return __2.EndevorActionStatusDetailed.FAILURE; } } const restResponse = yield index_1.RetrieveElement.retrieveElement(session, instance, element, retrieveOptions, charset); if (restResponse.isResponseJSON) { let notFound = false; let stcShortage = false; restResponse.body.messages.forEach((message) => { if (message.startsWith("API0000W ELEMENT NOT FOUND")) { notFound = true; } if (message.startsWith("EWS1111E")) { stcShortage = true; } }); let status = __2.EndevorActionStatusDetailed.FAILURE; if (notFound) { status = __2.EndevorActionStatusDetailed.FAILURE_NOT_FOUND; } else if (stcShortage) { status = __2.EndevorActionStatusDetailed.FAILURE_STC_SHORTAGE; } else if (restResponse.body.data[0] == null) { status = __2.EndevorActionStatusDetailed.FAILURE; } else if (restResponse.body.returnCode > maxRC) { status = __2.EndevorActionStatusDetailed.FAILURE_MAX_RC; } if (restResponse.body.reports != null) { const isWriteReport = __1.HandlerUtils.ifWriteReportsToFile(writeReport, restResponse.body.returnCode); if (isWriteReport) { yield index_1.EndevorRestUtils.writeConsoleOutput(session, instance, restResponse.body.reports, isWriteReport, [], reportFileName, reportDir, suppressMessages, true); } } return status; } if (restResponse.body.data[0] == null) { return __2.EndevorActionStatusDetailed.FAILURE; } const body = restResponse.body.data[0]; this.writeBulkRetrieveDataToFile(element, restResponse.headers, body, destDir, isflat, fileSuffix); return __2.EndevorActionStatusDetailed.SUCCESS; } catch (err) { return __2.EndevorActionStatusDetailed.FAILURE; } }); } static writeBulkRetrieveDataToFile(retElemDef, responseHeader, elmData, destDir, isflat, fileSuffix) { let dataFileName = `${retElemDef.element}${fileSuffix}`; if (isflat) { dataFileName = path.join(destDir, dataFileName); } else { dataFileName = path.join(destDir, retElemDef.environment, retElemDef.stageNumber, retElemDef.system, retElemDef.subsystem, retElemDef.type, dataFileName); } index_1.WorkspaceUtils.ensureDirectoryExistence(dataFileName); index_1.EndevorUtils.generalWriteFile(dataFileName, elmData); } static processACMandListElmResult(queryacmCompResult, listElementResult) { const sortListData = (a, b) => { if (a.envName != null && b.envName != null) { const result = a.envName.localeCompare(b.envName); if (result !== 0) { return result; } } if (a.stgNum != null && b.stgNum != null) { const result = a.stgNum - b.stgNum; if (result !== 0) { return result; } } if (a.sysName != null && b.sysName != null) { const result = a.sysName.localeCompare(b.sysName); if (result !== 0) { return result; } } if (a.sbsName != null && b.sbsName != null) { const result = a.sbsName.localeCompare(b.sbsName); if (result !== 0) { return result; } } if (a.typeName != null && b.typeName != null) { const result = a.typeName.localeCompare(b.typeName); if (result !== 0) { return result; } } try { const aFullElmName = a.fullElmName; const bFullElmName = b.fullElmName; if (aFullElmName != null && bFullElmName != null) { const result = aFullElmName.localeCompare(bFullElmName); if (result !== 0) { return result; } } } catch (err) { } if (a.elmName != null && b.elmName != null) { const result = a.elmName.localeCompare(b.elmName); if (result !== 0) { return result; } } return 0; }; queryacmCompResult.sort(sortListData); listElementResult.sort(sortListData); const elmsWithComp = []; let qi = 0; let li = 0; while (qi < queryacmCompResult.length && li < listElementResult.length) { const compareResult = sortListData(queryacmCompResult[qi], listElementResult[li]); if (compareResult === 0) { elmsWithComp.push(queryacmCompResult[qi]); qi++; li++; } else if (compareResult === -1) { qi++; } else { li++; } } const isDuplicate = (newItem, itemArray) => { if (itemArray.length > 0) { for (const element of itemArray) { const compareResult = sortListData(element, newItem); if (compareResult === 0) { return true; } } } return false; }; const elmsTobeRet = listElementResult; elmsWithComp.forEach((item) => { let newItem = { envName: item.envName, stgNum: item.stgNum, sysName: item.sysName, sbsName: item.sbsName, typeName: item.typeName, elmName: item.elmName }; if (!isDuplicate(newItem, elmsTobeRet)) { elmsTobeRet.push(newItem); } if (item.components != null && item.components.length > 0) { item.components.forEach((componentItem) => { if (componentItem.cmpntLL != null && componentItem.cmpntLL <= 2) { if (componentItem.envName != null && componentItem.stgNum != null && componentItem.sysName != null && componentItem.sbsName != null && componentItem.typeName != null && componentItem.elmName != null) { if (componentItem.envName.trim().length > 0 && componentItem.sysName.trim().length > 0 && componentItem.sbsName.trim().length > 0 && componentItem.typeName.trim().length > 0 && componentItem.elmName.trim().length > 0) { newItem = { envName: componentItem.envName, stgNum: componentItem.stgNum, sysName: componentItem.sysName, sbsName: componentItem.sbsName, typeName: componentItem.typeName, elmName: componentItem.elmName }; if (!isDuplicate(newItem, elmsTobeRet)) { elmsTobeRet.push(newItem); } } } } }); } }); return elmsTobeRet; } } exports.BulkRetrieveElement = BulkRetrieveElement; //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiQnVsa1JldHJpZXZlRWxlbWVudC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uL3NyYy9hcGkvZWxlbWVudHMvQnVsa1JldHJpZXZlRWxlbWVudC50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiOzs7Ozs7Ozs7Ozs7QUF1QkEsb0NBYWtCO0FBQ2xCLDZCQUE4QjtBQUc5QixtQ0FBNEM7QUFDNUMsNkJBQXFDO0FBQ3JDLDBCQUFpRDtBQU9qRCxNQUFhLG1CQUFtQjtJQXVCdkIsTUFBTSxDQUFPLHlCQUF5QixDQUMzQyxPQUFnQixFQUNoQixRQUFnQixFQUNoQixPQUEwQixFQUMxQixPQUFlLEVBQ2YsTUFBZSxFQUNmLE9BQXFDLEVBQ3JDLEtBQWEsRUFDYixVQUFrQixFQUNsQixXQUFvQixFQUNwQixjQUF1QixFQUN2QixTQUFrQixFQUNsQixnQkFBMEIsRUFDMUIsT0FBZ0IsRUFDaEIsa0JBQTRCLEVBQzVCLGVBQWlEOztZQUVqRCxNQUFNLGVBQWUsR0FBaUMsSUFBQSxrQkFBUyxFQUFDLE9BQU8sQ0FBQyxDQUFDO1lBQ3pFLElBQUksQ0FBQztnQkFJSCxJQUFJLGVBQWUsRUFBRSxDQUFDO29CQUNwQixlQUFlLENBQUMsT0FBTyxDQUFDLENBQUMsT0FBTyxFQUFFLEVBQUU7d0JBQ2xDLElBQUksSUFBQSxnQkFBTyxFQUFDLE9BQU8sRUFBRSxPQUFPLENBQUMsRUFBRSxDQUFDOzRCQUM5QixrQkFBa0IsR0FBRyxLQUFLLENBQUM7d0JBQzdCLENBQUM7b0JBQ0gsQ0FBQyxDQUFDLENBQUM7Z0JBQ0wsQ0FBQztnQkFDRCxJQUFJLGtCQUFrQixJQUFJLENBQUMsTUFBTSxFQUFFLENBQUM7b0JBR2xDLE1BQU0sV0FBVyxHQUEwQzt3QkFDekQsV0FBVyxFQUFFLE9BQU8sQ0FBQyxXQUFXO3dCQUNoQyxjQUFjLEVBQUUsT0FBTyxDQUFDLFdBQVc7d0JBQ25DLE1BQU0sRUFBRSxPQUFPLENBQUMsTUFBTTt3QkFDdEIsU0FBUyxFQUFFLE9BQU8s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