@zowe/cics-for-zowe-sdk
Version:
Zowe SDK for IBM CICS Transaction Server
333 lines • 16.5 kB
JavaScript
"use strict";
/**
* This program and the accompanying materials are made available under the terms of the
* Eclipse Public License v2.0 which accompanies this distribution, and is available at
* https://www.eclipse.org/legal/epl-v20.html
*
* SPDX-License-Identifier: EPL-2.0
*
* Copyright Contributors to the Zowe Project.
*
*/
Object.defineProperty(exports, "__esModule", { value: true });
exports.defineBundle = exports.defineWebservice = exports.defineUrimapPipeline = exports.defineUrimapClient = exports.defineUrimapServer = exports.defineTransaction = exports.defineProgram = void 0;
const imperative_1 = require("@zowe/imperative");
const constants_1 = require("../../constants");
const rest_1 = require("../../rest");
const utils_1 = require("../../utils");
/**
* Define a new program resource to CICS through CMCI REST API
* @param {AbstractSession} session - the session to connect to CMCI with
* @param {IProgramParms} parms - parameters for defining your program
* @returns {Promise<any>} promise that resolves to the response (XML parsed into a javascript object)
* when the request is complete
* @throws {ImperativeError} CICS program name not defined or blank
* @throws {ImperativeError} CICS CSD group not defined or blank
* @throws {ImperativeError} CICS region name not defined or blank
* @throws {ImperativeError} CicsCmciRestClient request fails
*/
function defineProgram(session, parms) {
imperative_1.ImperativeExpect.toBeDefinedAndNonBlank(parms.name, "CICS Program name", "CICS program name is required");
imperative_1.ImperativeExpect.toBeDefinedAndNonBlank(parms.csdGroup, "CICS CSD Group", "CICS CSD group is required");
imperative_1.ImperativeExpect.toBeDefinedAndNonBlank(parms.regionName, "CICS Region name", "CICS region name is required");
imperative_1.Logger.getAppLogger().debug("Attempting to define a program with the following parameters:\n%s", JSON.stringify(parms));
const requestBody = {
request: {
create: {
parameter: {
$: {
name: "CSD",
},
},
attributes: {
$: {
name: parms.name,
csdgroup: parms.csdGroup,
},
},
},
},
};
const options = {
cicsPlex: parms.cicsPlex,
regionName: parms.regionName,
};
const cmciResource = utils_1.Utils.getResourceUri(constants_1.CicsCmciConstants.CICS_DEFINITION_PROGRAM, options);
return rest_1.CicsCmciRestClient.postExpectParsedXml(session, cmciResource, [], requestBody);
}
exports.defineProgram = defineProgram;
/**
* Define a new transaction resource to CICS through CMCI REST API
* @param {AbstractSession} session - the session to connect to CMCI with
* @param {ITransactionParms} parms - parameters for defining your transaction
* @returns {Promise<any>} promise that resolves to the response (XML parsed into a javascript object)
* when the request is complete
* @throws {ImperativeError} CICS transaction name not defined or blank
* @throws {ImperativeError} CICS program name not defined or blank
* @throws {ImperativeError} CICS CSD group not defined or blank
* @throws {ImperativeError} CICS region name not defined or blank
* @throws {ImperativeError} CicsCmciRestClient request fails
*/
function defineTransaction(session, parms) {
imperative_1.ImperativeExpect.toBeDefinedAndNonBlank(parms.name, "CICS Transaction name", "CICS transaction name is required");
imperative_1.ImperativeExpect.toBeDefinedAndNonBlank(parms.programName, "CICS Program name", "CICS program name is required");
imperative_1.ImperativeExpect.toBeDefinedAndNonBlank(parms.csdGroup, "CICS CSD Group", "CICS CSD group is required");
imperative_1.ImperativeExpect.toBeDefinedAndNonBlank(parms.regionName, "CICS Region name", "CICS region name is required");
imperative_1.Logger.getAppLogger().debug("Attempting to define a transaction with the following parameters:\n%s", JSON.stringify(parms));
const requestBody = {
request: {
create: {
parameter: {
$: {
name: "CSD",
},
},
attributes: {
$: {
name: parms.name,
program: parms.programName,
csdgroup: parms.csdGroup,
},
},
},
},
};
const options = {
cicsPlex: parms.cicsPlex,
regionName: parms.regionName,
};
const cmciResource = utils_1.Utils.getResourceUri(constants_1.CicsCmciConstants.CICS_DEFINITION_TRANSACTION, options);
return rest_1.CicsCmciRestClient.postExpectParsedXml(session, cmciResource, [], requestBody);
}
exports.defineTransaction = defineTransaction;
/**
* Define a new server URIMap resource to CICS through CMCI REST API
* @param {AbstractSession} session - the session to connect to CMCI with
* @param {IURIMapParms} parms - parameters for defining your URIMap
* @returns {Promise<any>} promise that resolves to the response (XML parsed into a javascript object)
* when the request is complete
* @throws {ImperativeError} CICS URIMap name not defined or blank
* @throws {ImperativeError} CICS CSD group not defined or blank
* @throws {ImperativeError} CICS URIMap path not defined or blank
* @throws {ImperativeError} CICS URIMap host not defined or blank
* @throws {ImperativeError} CICS URIMap scheme not defined or blank
* @throws {ImperativeError} CICS region name not defined or blank
* @throws {ImperativeError} CICS URIMap program name not defined or blank
* @throws {ImperativeError} CicsCmciRestClient request fails
*/
function defineUrimapServer(session, parms) {
validateUrimapParms(parms);
imperative_1.ImperativeExpect.toBeDefinedAndNonBlank(parms.programName, "CICS URIMap Program name", "CICS URIMap program name is required");
imperative_1.Logger.getAppLogger().debug("Attempting to define a server URIMap with the following parameters:\n%s", JSON.stringify(parms));
const requestBody = buildUrimapRequestBody(parms, "server");
requestBody.request.create.attributes.$.program = parms.programName;
const options = {
cicsPlex: parms.cicsPlex,
regionName: parms.regionName,
};
const cmciResource = utils_1.Utils.getResourceUri(constants_1.CicsCmciConstants.CICS_DEFINITION_URIMAP, options);
return rest_1.CicsCmciRestClient.postExpectParsedXml(session, cmciResource, [], requestBody);
}
exports.defineUrimapServer = defineUrimapServer;
/**
* Define a new client URIMap resource to CICS through CMCI REST API
* @param {AbstractSession} session - the session to connect to CMCI with
* @param {IURIMapParms} parms - parameters for defining your URIMap
* @returns {Promise<any>} promise that resolves to the response (XML parsed into a javascript object)
* when the request is complete
* @throws {ImperativeError} CICS URIMap name not defined or blank
* @throws {ImperativeError} CICS CSD group not defined or blank
* @throws {ImperativeError} CICS URIMap path not defined or blank
* @throws {ImperativeError} CICS URIMap host not defined or blank
* @throws {ImperativeError} CICS URIMap scheme not defined or blank
* @throws {ImperativeError} CICS region name not defined or blank
* @throws {ImperativeError} CicsCmciRestClient request fails
*/
function defineUrimapClient(session, parms) {
validateUrimapParms(parms);
imperative_1.Logger.getAppLogger().debug("Attempting to define a client URIMap with the following parameters:\n%s", JSON.stringify(parms));
const requestBody = buildUrimapRequestBody(parms, "client");
const options = {
cicsPlex: parms.cicsPlex,
regionName: parms.regionName,
};
const cmciResource = utils_1.Utils.getResourceUri(constants_1.CicsCmciConstants.CICS_DEFINITION_URIMAP, options);
return rest_1.CicsCmciRestClient.postExpectParsedXml(session, cmciResource, [], requestBody);
}
exports.defineUrimapClient = defineUrimapClient;
/**
* Define a new pipeline URIMap resource to CICS through CMCI REST API
* @param {AbstractSession} session - the session to connect to CMCI with
* @param {IURIMapParms} parms - parameters for defining your URIMap
* @returns {Promise<any>} promise that resolves to the response (XML parsed into a javascript object)
* when the request is complete
* @throws {ImperativeError} CICS URIMap name not defined or blank
* @throws {ImperativeError} CICS CSD group not defined or blank
* @throws {ImperativeError} CICS URIMap path not defined or blank
* @throws {ImperativeError} CICS URIMap host not defined or blank
* @throws {ImperativeError} CICS URIMap scheme not defined or blank
* @throws {ImperativeError} CICS region name not defined or blank
* @throws {ImperativeError} CICS URIMap pipeline name not defined or blank
* @throws {ImperativeError} CicsCmciRestClient request fails
*/
function defineUrimapPipeline(session, parms) {
validateUrimapParms(parms);
imperative_1.ImperativeExpect.toBeDefinedAndNonBlank(parms.pipelineName, "CICS URIMap Pipeline name", "CICS URIMap pipeline name is required");
imperative_1.Logger.getAppLogger().debug("Attempting to define a pipeline URIMap with the following parameters:\n%s", JSON.stringify(parms));
const requestBody = buildUrimapRequestBody(parms, "pipeline");
requestBody.request.create.attributes.$.pipeline = parms.pipelineName;
const options = {
cicsPlex: parms.cicsPlex,
regionName: parms.regionName,
};
const cmciResource = utils_1.Utils.getResourceUri(constants_1.CicsCmciConstants.CICS_DEFINITION_URIMAP, options);
return rest_1.CicsCmciRestClient.postExpectParsedXml(session, cmciResource, [], requestBody);
}
exports.defineUrimapPipeline = defineUrimapPipeline;
/**
* Validate parameters for defining a URIMap
* @param {IURIMapParms} parms - parameters to validate
* @throws {ImperativeError} CICS URIMap name not defined or blank
* @throws {ImperativeError} CICS CSD group not defined or blank
* @throws {ImperativeError} CICS URIMap path not defined or blank
* @throws {ImperativeError} CICS URIMap host not defined or blank
* @throws {ImperativeError} CICS URIMap scheme not defined or blank
* @throws {ImperativeError} CICS region name not defined or blank
*/
function validateUrimapParms(parms) {
imperative_1.ImperativeExpect.toBeDefinedAndNonBlank(parms.name, "CICS URIMap Name", "CICS URIMap name is required");
imperative_1.ImperativeExpect.toBeDefinedAndNonBlank(parms.csdGroup, "CICS CSD Group", "CICS CSD group is required");
imperative_1.ImperativeExpect.toBeDefinedAndNonBlank(parms.path, "CICS URIMap Path", "CICS URIMap path is required");
imperative_1.ImperativeExpect.toBeDefinedAndNonBlank(parms.host, "CICS URIMap Host", "CICS URIMap host is required");
imperative_1.ImperativeExpect.toBeDefinedAndNonBlank(parms.scheme, "CICS URIMap Scheme", "CICS URIMap scheme is required");
imperative_1.ImperativeExpect.toBeDefinedAndNonBlank(parms.regionName, "CICS Region name", "CICS region name is required");
}
/**
* Build request body for defining a URIMap
* @param {IURIMapParms} parms - parameters containing attribute values
* @param {string} usage - value of the usage attribute (server, client, or pipeline)
*/
function buildUrimapRequestBody(parms, usage) {
const requestAttrs = {
name: parms.name,
csdgroup: parms.csdGroup,
path: parms.path,
host: parms.host,
scheme: parms.scheme,
usage,
};
if (parms.description != null) {
requestAttrs.description = parms.description;
}
if (parms.transactionName != null) {
requestAttrs.transaction = parms.transactionName;
}
if (parms.webserviceName != null) {
requestAttrs.webservice = parms.webserviceName;
}
if (parms.enable === false) {
requestAttrs.status = "DISABLED";
}
else {
requestAttrs.status = "ENABLED";
}
if (parms.authenticate != null) {
requestAttrs.authenticate = parms.authenticate;
}
if (parms.certificate != null) {
requestAttrs.certificate = parms.certificate;
}
if (parms.tcpipservice != null) {
requestAttrs.tcpipservice = parms.tcpipservice;
}
return {
request: {
create: {
parameter: {
$: {
name: "CSD",
},
},
attributes: {
$: requestAttrs,
},
},
},
};
}
function defineWebservice(session, parms) {
imperative_1.ImperativeExpect.toBeDefinedAndNonBlank(parms.name, "CICS Web service name", "CICS web service name is required");
imperative_1.ImperativeExpect.toBeDefinedAndNonBlank(parms.pipelineName, "CICS Pipeline name", "CICS pipeline name is required");
imperative_1.ImperativeExpect.toBeDefinedAndNonBlank(parms.wsBind, "CICS Web service binding file", "CICS web service binding file is required");
imperative_1.ImperativeExpect.toNotBeNullOrUndefined(parms.validation, "CICS web service validation is required");
imperative_1.ImperativeExpect.toBeDefinedAndNonBlank(parms.csdGroup, "CICS CSD Group", "CICS CSD group is required");
imperative_1.ImperativeExpect.toBeDefinedAndNonBlank(parms.regionName, "CICS Region name", "CICS region name is required");
imperative_1.Logger.getAppLogger().debug("Attempting to define a web service with the following parameters:\n%s", JSON.stringify(parms));
const requestAttrs = {
name: parms.name,
csdgroup: parms.csdGroup,
pipeline: parms.pipelineName,
wsbind: parms.wsBind,
validation: parms.validation ? "yes" : "no",
};
if (parms.description != null) {
requestAttrs.description = parms.description;
}
if (parms.wsdlFile != null) {
requestAttrs.wsdlFile = parms.wsdlFile;
}
const requestBody = {
request: {
create: {
parameter: {
$: {
name: "CSD",
},
},
attributes: {
$: requestAttrs,
},
},
},
};
const options = {
cicsPlex: parms.cicsPlex,
regionName: parms.regionName,
};
const cmciResource = utils_1.Utils.getResourceUri(constants_1.CicsCmciConstants.CICS_DEFINITION_WEBSERVICE, options);
return rest_1.CicsCmciRestClient.postExpectParsedXml(session, cmciResource, [], requestBody);
}
exports.defineWebservice = defineWebservice;
function defineBundle(session, parms) {
imperative_1.ImperativeExpect.toBeDefinedAndNonBlank(parms.name, "CICS Bundle name", "CICS bundle name is required");
imperative_1.ImperativeExpect.toBeDefinedAndNonBlank(parms.bundleDir, "CICS Bundle directory", "CICS bundle directory is required");
imperative_1.ImperativeExpect.toBeDefinedAndNonBlank(parms.csdGroup, "CICS CSD Group", "CICS CSD group is required");
imperative_1.ImperativeExpect.toBeDefinedAndNonBlank(parms.regionName, "CICS Region name", "CICS region name is required");
imperative_1.Logger.getAppLogger().debug("Attempting to define a bundle with the following parameters:\n%s", JSON.stringify(parms));
const requestBody = {
request: {
create: {
parameter: {
$: {
name: "CSD",
},
},
attributes: {
$: {
name: parms.name,
bundleDir: parms.bundleDir,
csdgroup: parms.csdGroup,
},
},
},
},
};
const options = {
cicsPlex: parms.cicsPlex,
regionName: parms.regionName,
};
const cmciResource = utils_1.Utils.getResourceUri(constants_1.CicsCmciConstants.CICS_DEFINITION_BUNDLE, options);
return rest_1.CicsCmciRestClient.postExpectParsedXml(session, cmciResource, [], requestBody);
}
exports.defineBundle = defineBundle;
//# sourceMappingURL=Define.js.map