@broadcom/endevor-for-zowe-cli
Version:
Endevor Plug-in for Zowe CLI
273 lines • 25.9 kB
JavaScript
;
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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