UNPKG

@axway/axway-central-cli

Version:

Manage APIs, services and publish to the Amplify Marketplace

214 lines (206 loc) 12.1 kB
"use strict"; Object.defineProperty(exports, "__esModule", { value: true }); exports.testables = exports.gatewayConnectivity = exports.defaultLogFiles = exports.completeInstall = exports.askConfigType = exports.askBundleType = exports.IBMAPIConnectInstallMethods = exports.ConfigFiles = void 0; var _chalk = _interopRequireDefault(require("chalk")); var _snooplogg = _interopRequireDefault(require("snooplogg")); var _basicPrompts = require("../../common/basicPrompts"); var _types = require("../../common/types"); var _utils = require("../../common/utils"); var _agents = require("./agents"); var helpers = _interopRequireWildcard(require("./helpers")); var _ibmAPIConnectTemplates = require("./helpers/templates/ibmAPIConnectTemplates"); function _interopRequireWildcard(e, t) { if ("function" == typeof WeakMap) var r = new WeakMap(), n = new WeakMap(); return (_interopRequireWildcard = function (e, t) { if (!t && e && e.__esModule) return e; var o, i, f = { __proto__: null, default: e }; if (null === e || "object" != typeof e && "function" != typeof e) return f; if (o = t ? n : r) { if (o.has(e)) return o.get(e); o.set(e, f); } for (const t in e) "default" !== t && {}.hasOwnProperty.call(e, t) && ((i = (o = Object.defineProperty) && Object.getOwnPropertyDescriptor(e, t)) && (i.get || i.set) ? o(f, t, i) : f[t] = e[t]); return f; })(e, t); } function _interopRequireDefault(e) { return e && e.__esModule ? e : { default: e }; } // @ts-ignore const { log } = (0, _snooplogg.default)('engage: install: agents: ibmAPIConnect'); const daImage = `${_types.PublicDockerRepoBaseUrl}${_types.BasePaths.DockerAgentPublicRepo}/${_types.AgentNames.IBMAPICONNECT_DA}`; const taImage = `${_types.PublicDockerRepoBaseUrl}${_types.BasePaths.DockerAgentPublicRepo}/${_types.AgentNames.IBMAPICONNECT_TA}`; const defaultLogFiles = exports.defaultLogFiles = '/group-*_instance-*.log'; // ConfigFiles - all the config file that are used in the setup const ConfigFiles = exports.ConfigFiles = { DAEnvVars: `${helpers.configFiles.DA_ENV_VARS}`, TAEnvVars: `${helpers.configFiles.TA_ENV_VARS}`, IBMAPIConnectDABinaryFile: 'discovery_agent', IBMAPIConnectDAYaml: 'discovery_agent.yml', IBMAPIConnectTABinaryFile: 'traceability_agent', IBMAPIConnectTAYaml: 'traceability_agent.yml' }; // IBMAPIConnectPrompts - prompts for user inputs const IBMAPIConnectPrompts = { configTypeMsg: 'Select the mode of installation', enterApiConnectURL: 'Enter the IBM API Connect URL', enterApiConnectOrgName: 'Enter the IBM API Connect Organization Name', enterApiConnectCatalogName: 'Enter the IBM API Connect Catalog Name', enterApiConnectAuthAPIKey: 'Enter the IBM API Connect Auth API Key', enterApiConnectAuthClientID: 'Enter the IBM API Connect Client ID', enterApiConnectAuthClientSecret: 'Enter the IBM API Connect Client Secret', enterApiConnectConsumerOrgOwnerUser: 'Enter the IBM API Connect Consumer Organization Owner User', enterApiConnectConsumerOrgOwnerRegistry: 'Enter the IBM API Connect Consumer Organization Owner User Registry', enterApiConnectAnalyticsServerName: 'Enter the IBM API Connect Analytics Server Name' }; const askBundleType = async () => { return await (0, _basicPrompts.askList)({ msg: helpers.agentMessages.selectAgentType, choices: [_types.BundleType.ALL_AGENTS, _types.BundleType.DISCOVERY, _types.BundleType.TRACEABILITY] }); }; exports.askBundleType = askBundleType; const askConfigType = async () => { return _types.AgentConfigTypes.DOCKERIZED; }; // // Questions for the configuration of IBM API Connect agents // exports.askConfigType = askConfigType; const askIBMAPIConnectURL = async () => await (0, _basicPrompts.askInput)({ msg: IBMAPIConnectPrompts.enterApiConnectURL }); const askIBMAPIConnectOrgName = async () => await (0, _basicPrompts.askInput)({ msg: IBMAPIConnectPrompts.enterApiConnectOrgName }); const askIBMAPIConnectCatalogName = async () => await (0, _basicPrompts.askInput)({ msg: IBMAPIConnectPrompts.enterApiConnectCatalogName }); const askIBMAPIConnectAuthAPIKey = async () => await (0, _basicPrompts.askInput)({ msg: IBMAPIConnectPrompts.enterApiConnectAuthAPIKey }); const askIBMAPIConnectClientID = async () => await (0, _basicPrompts.askInput)({ msg: IBMAPIConnectPrompts.enterApiConnectAuthClientID }); const askIBMAPIConnectClientSecret = async () => await (0, _basicPrompts.askInput)({ msg: IBMAPIConnectPrompts.enterApiConnectAuthClientSecret }); const askIBMAPIConnectOrgOwnerUser = async () => await (0, _basicPrompts.askInput)({ msg: IBMAPIConnectPrompts.enterApiConnectConsumerOrgOwnerUser }); const askIBMAPIConnectOrgOwnerRegistry = async () => await (0, _basicPrompts.askInput)({ msg: IBMAPIConnectPrompts.enterApiConnectConsumerOrgOwnerRegistry }); const askIBMAPIConnectAnalyticsServerName = async () => await (0, _basicPrompts.askInput)({ msg: IBMAPIConnectPrompts.enterApiConnectAnalyticsServerName }); const gatewayConnectivity = async installConfig => { const ibmAPIConnectAgentValues = new _ibmAPIConnectTemplates.IBMAPIConnectAgentValues(); console.log('\nCONNECTION TO IBM API Connect:'); console.log(_chalk.default.gray(`The discovery agent needs to connect to the IBM API Connect Gateway to discover API's for publishing to Amplify.\nThe traceability agent needs to connect to IBM API Connect for collecting APIs transactions. These will be forwarded to the Business Insights.\n`)); await askCommonPrompts(ibmAPIConnectAgentValues); // IBM API Connect Discovery Agent Prompts if (installConfig.switches.isDaEnabled) { console.log(_chalk.default.gray(`\nDiscovery Agent Configuration\n`)); await askDiscoveryPrompts(ibmAPIConnectAgentValues); } // IBM API Connect Traceability Agent Prompts if (installConfig.switches.isTaEnabled) { console.log(_chalk.default.gray(`\nTraceability Agent Configuration\n`)); await askTraceabilityPrompts(ibmAPIConnectAgentValues); } return ibmAPIConnectAgentValues; }; exports.gatewayConnectivity = gatewayConnectivity; const generateSuccessHelpMsg = installConfig => { if (installConfig.centralConfig.ampcDosaInfo.isNew && !installConfig.switches.isHelmInstall) { console.log(_chalk.default.yellow(_agents.svcAccMsg)); } dockerSuccessMsg(installConfig); console.log(_chalk.default.gray(`\nAdditional information about agent features can be found here:\n${helpers.agentsDocsUrl.IBMAPICONNECT}`)); }; const dockerSuccessMsg = installConfig => { let dockerInfo; const runDaLinuxMsg = `docker run -it --env-file ${helpers.pwd}/${helpers.configFiles.DA_ENV_VARS} -v ${helpers.pwd}:/keys ${helpers.eolChar}`; const runDaWinMsg = `docker run -it --env-file ${helpers.pwdWin}/${helpers.configFiles.DA_ENV_VARS} -v ${helpers.pwdWin}:/keys ${helpers.eolCharWin}`; const runTaLinuxMsg = `docker run -it --env-file ${helpers.pwd}/${helpers.configFiles.TA_ENV_VARS} -v ${helpers.pwd}:/keys ${helpers.eolChar}`; const runTaWinMsg = `docker run -it --env-file ${helpers.pwdWin}/${helpers.configFiles.TA_ENV_VARS} -v ${helpers.pwdWin}:/keys ${helpers.eolCharWin}`; const startDaLinuxMsg = `\nStart the Discovery Agent on a Linux based machine`; const startDaWinMsg = `\nStart the Discovery Agent on a Windows machine`; const startTaLinuxMsg = `\nStart the Traceability Agent on a Linux based machine`; const startTaWinMsg = `\nStart the Traceability Agent on a Windows machine`; if (installConfig.switches.isDaEnabled && installConfig.switches.isTaEnabled) { dockerInfo = `To utilize the agents, pull the latest Docker images and run them using the appropriate supplied environment files, (${helpers.configFiles.DA_ENV_VARS} & ${helpers.configFiles.TA_ENV_VARS}):`; } else if (installConfig.switches.isDaEnabled) { dockerInfo = `To utilize the discovery agent, pull the latest Docker image and run it using the supplied environment file, (${helpers.configFiles.DA_ENV_VARS}):`; } else { dockerInfo = `To utilize the traceability agent, pull the latest Docker image and run it using the supplied environment file, (${helpers.configFiles.TA_ENV_VARS}):`; } console.log(_chalk.default.whiteBright(dockerInfo), '\n'); if (installConfig.switches.isDaEnabled) { const daImageVersion = `${daImage}:${installConfig.daVersion}`; console.log(_chalk.default.white('Pull the latest image of the Discovery Agent:')); console.log(_chalk.default.cyan(`docker pull ${daImageVersion}`)); console.log(_chalk.default.white(_utils.isWindows ? startDaWinMsg : startDaLinuxMsg)); console.log(_chalk.default.cyan(_utils.isWindows ? runDaWinMsg : runDaLinuxMsg)); console.log('\t', _chalk.default.cyan(`-v /data ${daImageVersion}`), '\n'); } if (installConfig.switches.isTaEnabled) { const taImageVersion = `${taImage}:${installConfig.taVersion}`; console.log(_chalk.default.white('Pull the latest image of the Traceability Agent:')); console.log(_chalk.default.cyan(`docker pull ${taImageVersion}`)); console.log(_chalk.default.white(_utils.isWindows ? startTaWinMsg : startTaLinuxMsg)); console.log(_chalk.default.cyan(_utils.isWindows ? runTaWinMsg : runTaLinuxMsg)); console.log('\t', _chalk.default.cyan(`-v /data ${taImageVersion}`), '\n'); } }; async function askCommonPrompts(ibmAPIConnectAgentValues) { // IBM API Connect URL ibmAPIConnectAgentValues.apiConnectURL = await askIBMAPIConnectURL(); // IBM API Connect Org Name ibmAPIConnectAgentValues.apiConnectOrgName = await askIBMAPIConnectOrgName(); // IBM API Connect Catalog Name ibmAPIConnectAgentValues.apiConnectCatalogName = await askIBMAPIConnectCatalogName(); // IBM API Connect Auth API Key ibmAPIConnectAgentValues.apiConnectAuthAPIKey = await askIBMAPIConnectAuthAPIKey(); // IBM API Connect Auth Client ID ibmAPIConnectAgentValues.apiConnectAuthClientID = await askIBMAPIConnectClientID(); // IBM API Connect Auth Client Secret ibmAPIConnectAgentValues.apiConnectAuthClientSecret = await askIBMAPIConnectClientSecret(); } // IBM API Connect DA prompts async function askDiscoveryPrompts(ibmAPIConnectAgentValues) { // IBM API Connect Consumer Org Owner User ibmAPIConnectAgentValues.apiConnectConsumerOrgOwnerUser = await askIBMAPIConnectOrgOwnerUser(); // IBM API Connect Consumer Org Owner Registry ibmAPIConnectAgentValues.apiConnectConsumerOrgOwnerRegistry = await askIBMAPIConnectOrgOwnerRegistry(); } async function askTraceabilityPrompts(ibmAPIConnectAgentValues) { // IBM API Connect Analytics Server Name ibmAPIConnectAgentValues.apiConnectAnalyticsServerName = await askIBMAPIConnectAnalyticsServerName(); } const completeInstall = async installConfig => { /** * Create agent resources */ const ibmAPIConnectAgentValues = installConfig.gatewayConfig; // Add final settings to ibmAPIConnectAgentValues ibmAPIConnectAgentValues.centralConfig = installConfig.centralConfig; ibmAPIConnectAgentValues.traceabilityConfig = installConfig.traceabilityConfig; console.log('Generating the configuration file(s)...'); if (installConfig.switches.isDaEnabled) { (0, _utils.writeTemplates)(ConfigFiles.DAEnvVars, ibmAPIConnectAgentValues, helpers.ibmAPIConnectDAEnvVarTemplate); } if (installConfig.switches.isTaEnabled) { (0, _utils.writeTemplates)(ConfigFiles.TAEnvVars, ibmAPIConnectAgentValues, helpers.ibmAPIConnectTAEnvVarTemplate); } console.log('Configuration file(s) have been successfully created.\n'); generateSuccessHelpMsg(installConfig); }; exports.completeInstall = completeInstall; const IBMAPIConnectInstallMethods = exports.IBMAPIConnectInstallMethods = { GetBundleType: askBundleType, GetDeploymentType: askConfigType, AskGatewayQuestions: gatewayConnectivity, FinalizeGatewayInstall: completeInstall, ConfigFiles: Object.values(ConfigFiles), AgentNameMap: { [_types.AgentTypes.da]: _types.AgentNames.IBMAPICONNECT_DA, [_types.AgentTypes.ta]: _types.AgentNames.IBMAPICONNECT_TA }, GatewayDisplay: _types.GatewayTypes.IBMAPICONNECT }; const testables = exports.testables = { IBMAPIConnectPrompts, ConfigFiles, defaultLogFiles };