UNPKG

@axway/axway-central-cli

Version:

Manage APIs, services and publish to the Amplify Marketplace

148 lines (144 loc) 7.64 kB
"use strict"; Object.defineProperty(exports, "__esModule", { value: true }); exports.testables = exports.gatewayConnectivity = exports.completeInstall = exports.askConfigType = exports.askBundleType = exports.amplifyAgentsNs = exports.GraylogInstallMethods = exports.ConfigFiles = void 0; var _chalk = _interopRequireDefault(require("chalk")); var _snooplogg = _interopRequireDefault(require("snooplogg")); var _Kubectl = require("../../common/Kubectl"); var _basicPrompts = require("../../common/basicPrompts"); var _inputs = require("./helpers/inputs"); var _types = require("../../common/types"); var _utils = require("../../common/utils"); var helpers = _interopRequireWildcard(require("./helpers")); var _graylogTemplates = require("./helpers/templates/graylogTemplates"); function _getRequireWildcardCache(e) { if ("function" != typeof WeakMap) return null; var r = new WeakMap(), t = new WeakMap(); return (_getRequireWildcardCache = function (e) { return e ? t : r; })(e); } function _interopRequireWildcard(e, r) { if (!r && e && e.__esModule) return e; if (null === e || "object" != typeof e && "function" != typeof e) return { default: e }; var t = _getRequireWildcardCache(r); if (t && t.has(e)) return t.get(e); var n = { __proto__: null }, a = Object.defineProperty && Object.getOwnPropertyDescriptor; for (var u in e) if ("default" !== u && {}.hasOwnProperty.call(e, u)) { var i = a ? Object.getOwnPropertyDescriptor(e, u) : null; i && (i.get || i.set) ? Object.defineProperty(n, u, i) : n[u] = e[u]; } return n.default = e, t && t.set(e, n), n; } function _interopRequireDefault(e) { return e && e.__esModule ? e : { default: e }; } // @ts-ignore const { log } = (0, _snooplogg.default)('engage: install: agents: graylog'); const amplifyAgentsNs = exports.amplifyAgentsNs = 'amplify-agents'; // ConfigFiles - all the config file that are used in the setup const ConfigFiles = exports.ConfigFiles = { helmOverride: 'agent-overrides.yaml' }; // GraylogPrompts - prompts for user inputs const prompts = { agentNamespace: 'Enter the namespace to use for the Amplify Graylog Agents', enterUrl: 'Enter the Graylog base URL that the agent will use', enterUsername: 'Enter the Graylog user name', enterPassword: 'Enter the password for Graylog user', enterBasePathSegmentLen: 'Enter the base path segment length that agent will use for lookup' }; const askBundleType = async () => { return _types.BundleType.TRACEABILITY; }; exports.askBundleType = askBundleType; const askConfigType = async () => { return _types.AgentConfigTypes.HELM; }; // // Questions for the configuration of Graylog agent // exports.askConfigType = askConfigType; const askURL = async () => await (0, _basicPrompts.askInput)({ msg: prompts.enterUrl, allowEmptyInput: false, validate: (0, _basicPrompts.validateRegex)(helpers.GitLabRegexPatterns.gitLabBaseURLRegex, helpers.invalidValueExampleErrMsg('BaseURL', 'https://www.testdomain.com')) }); const askUsername = async () => await (0, _basicPrompts.askInput)({ msg: prompts.enterUsername, allowEmptyInput: false }); const askPassword = async () => await (0, _basicPrompts.askInput)({ msg: prompts.enterPassword }); const askBasePathSegmentLen = async () => await (0, _basicPrompts.askInput)({ msg: prompts.enterBasePathSegmentLen, type: 'number', defaultValue: 2 }); const gatewayConnectivity = async _installConfig => { console.log(_chalk.default.gray(`The Amplify Graylog Agent needs to be deployed to your Kubernetes cluster to discover APIs for publishing to Amplify Engage.`)); const { error } = await _Kubectl.kubectl.isInstalled(); if (error) { throw new Error(`Kubectl is required to fill out the following prompts. It appears to be missing or misconfigured.\n${error}`); } const graylogAgentValues = new _graylogTemplates.GraylogAgentValues(); graylogAgentValues.namespace = await (0, _inputs.askNamespace)(prompts.agentNamespace, amplifyAgentsNs); graylogAgentValues.url = await askURL(); graylogAgentValues.userName = await askUsername(); graylogAgentValues.password = await askPassword(); graylogAgentValues.basePathSegmentLen = await askBasePathSegmentLen(); return graylogAgentValues; }; exports.gatewayConnectivity = gatewayConnectivity; const generateSuccessHelpMsg = namespace => { console.log(`Graylog Agent override file has been placed at ${process.cwd()}/${ConfigFiles.helmOverride}`); helpers.helmImageSecretInfo(namespace); let agentHelmInfo = new Set(); agentHelmInfo.add({ helmReleaseName: 'graylog-agent', helmChartName: 'axway/graylog-agent', overrideFileName: ConfigFiles.helmOverride, imageSecretOverrides: `--set image.pullSecret=<image-pull-secret-name>` }); helpers.helmInstallInfo('Graylog', namespace, agentHelmInfo); console.log('Configuration file(s) have been successfully created.\n'); console.log(_chalk.default.gray(`\nAdditional information about agent features can be found here:\n${helpers.agentsDocsUrl.GRAYLOG}`)); }; const completeInstall = async installConfig => { // Add final settings to graylogAgentValues const graylogAgentValues = installConfig.gatewayConfig; if (graylogAgentValues.namespace.isNew) { await helpers.createNamespace(graylogAgentValues.namespace.name); } graylogAgentValues.centralConfig = installConfig.centralConfig; graylogAgentValues.graylogSecret = helpers.amplifyAgentsCredsSecret; graylogAgentValues.agentKeysSecret = helpers.amplifyAgentsKeysSecret; // read file content await helpers.createSecret(graylogAgentValues.namespace.name, helpers.amplifyAgentsKeysSecret, async () => { if (installConfig.centralConfig.ampcDosaInfo.isNew) { console.log(_chalk.default.yellow(`The secret '${helpers.amplifyAgentsKeysSecret}' will be created with the same "private_key.pem" and "public_key.pem" that was auto generated to create the Service Account.`)); } await helpers.createAmplifyAgentKeysSecret(graylogAgentValues.namespace.name, helpers.amplifyAgentsKeysSecret, 'publicKey', graylogAgentValues.centralConfig.dosaAccount.publicKey, 'privateKey', graylogAgentValues.centralConfig.dosaAccount.privateKey); }); await helpers.createSecret(graylogAgentValues.namespace.name, helpers.amplifyAgentsCredsSecret, async () => { await createGraylogCredsSecret(graylogAgentValues.namespace.name, helpers.amplifyAgentsCredsSecret, graylogAgentValues.userName, graylogAgentValues.password); }); graylogAgentValues.traceabilityConfig = installConfig.traceabilityConfig; console.log('Generating the configuration file(s)...'); (0, _utils.writeTemplates)(ConfigFiles.helmOverride, graylogAgentValues, helpers.graylogHelmOverrideTemplate); generateSuccessHelpMsg(graylogAgentValues.namespace.name); }; exports.completeInstall = completeInstall; const createGraylogCredsSecret = async (namespace, secretName, user, password) => { const { error } = await _Kubectl.kubectl.create('secret', `-n ${namespace} generic ${secretName} \ --from-literal=username=${user} \ --from-literal=password=${password}`); if (error) { throw Error(error); } console.log(`Created ${secretName} in the ${namespace} namespace.`); }; const GraylogInstallMethods = exports.GraylogInstallMethods = { GetBundleType: askBundleType, GetDeploymentType: askConfigType, AskGatewayQuestions: gatewayConnectivity, FinalizeGatewayInstall: completeInstall, ConfigFiles: Object.values(ConfigFiles), AgentNameMap: { [_types.AgentTypes.ca]: _types.AgentNames.GRAYLOG_CA }, GatewayDisplay: _types.GatewayTypes.GRAYLOG }; const testables = exports.testables = { prompts, ConfigFiles };