UNPKG

@zowe/cics-for-zowe-sdk

Version:
333 lines 16.5 kB
"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