From 632740138900ab8d3628365fc4635fee6c180b97 Mon Sep 17 00:00:00 2001 From: Richard Lindner Date: Fri, 22 Dec 2023 16:02:04 +0100 Subject: [PATCH] Fb/service keys prep (#52) * prep for service-key changes * prep for service-key changes 2 * fix linter problems --- src/context.js | 30 +++++++++++++++--------------- src/setting.js | 32 ++++++++++++++++++++------------ src/shared/static.js | 3 +++ src/submodules/hanaManagement.js | 4 ++-- 4 files changed, 40 insertions(+), 29 deletions(-) diff --git a/src/context.js b/src/context.js index a6fb628..68a094d 100644 --- a/src/context.js +++ b/src/context.js @@ -156,8 +156,8 @@ const _readRuntimeConfig = (filepath, { logged = false, checkConfig = true } = { } return rawRuntimeConfig - ? Object.keys(SETTING).reduce((result, key) => { - result[key] = rawRuntimeConfig[key]; + ? Object.values(SETTING).reduce((result, value) => { + result[value.config] = rawRuntimeConfig[value.config]; return result; }, Object.create(null)) : {}; @@ -209,13 +209,13 @@ const _setup = async (location) => { const newRuntimeConfig = {}; console.log("hit enter to skip a question. re-using the same app for multiple questions is possible."); try { - const settings = Object.entries(SETTING); + const settings = Object.values(SETTING); for (let i = 0; i < settings.length; i++) { - const [key, value] = settings[i]; + const value = settings[i]; const ask = `${i + 1}/${settings.length} | ${value.question}`; - const answer = (await question(ask, runtimeConfig[key])).trim(); + const answer = (await question(ask, runtimeConfig[value.config])).trim(); if (answer) { - newRuntimeConfig[key] = answer; + newRuntimeConfig[value.config] = answer; } } } catch (err) { @@ -235,10 +235,10 @@ const setupLocal = async () => { const setupList = () => { const { filepath } = _resolveDir(FILENAME.CONFIG) || {}; const runtimeConfig = _readRuntimeConfig(filepath, { logged: true }); - return Object.entries(SETTING) + return Object.values(SETTING) .map( - ([key, value], i, settings) => - `${i + 1}/${settings.length} | ${value.question} ${runtimeConfig[key] || ""}` + (value, i, settings) => + `${i + 1}/${settings.length} | ${value.question} ${runtimeConfig[value.config] || ""}` ) .join("\n"); }; @@ -410,7 +410,7 @@ const newContext = async ({ usePersistedCache = true, isReadonlyCommand = false const setting = SETTING[type]; // determine configured appName - const configAppName = runtimeConfig[type]; + const configAppName = runtimeConfig[setting.config]; const envAppName = (setting.envVariable && process.env[setting.envVariable]) || null; if (envAppName && configAppName !== envAppName) { if (configAppName) { @@ -495,11 +495,11 @@ const newContext = async ({ usePersistedCache = true, isReadonlyCommand = false return processRawAppInfo(cfApp.name, rawAppInfo, setting); }; - const getUaaInfo = getAppInfoCached(SETTING_TYPE.UAA); - const getRegInfo = getAppInfoCached(SETTING_TYPE.REG); - const getCdsInfo = getAppInfoCached(SETTING_TYPE.CDS); - const getHdiInfo = getAppInfoCached(SETTING_TYPE.HDI); - const getSrvInfo = getAppInfoCached(SETTING_TYPE.SRV); + const getUaaInfo = getAppInfoCached(SETTING_TYPE.UAA_APP); + const getRegInfo = getAppInfoCached(SETTING_TYPE.REGISTRY_APP); + const getCdsInfo = getAppInfoCached(SETTING_TYPE.CDS_APP); + const getHdiInfo = getAppInfoCached(SETTING_TYPE.HDI_APP); + const getSrvInfo = getAppInfoCached(SETTING_TYPE.SERVER_APP); const getCachedUaaTokenFromCredentials = async (credentials, options) => await cfUaaTokenCache.getSetCb( diff --git a/src/setting.js b/src/setting.js index df624eb..8b297a2 100644 --- a/src/setting.js +++ b/src/setting.js @@ -3,15 +3,19 @@ const { ENV } = require("./shared/static"); const SETTING_TYPE = { - UAA: "uaaAppName", - REG: "regAppName", - CDS: "cdsAppName", - HDI: "hdiAppName", - SRV: "srvAppName", + UAA_APP: "UAA_APP", + UAA_KEY: "UAA_KEY", + REGISTRY_APP: "REGISTRY_APP", + REGISTRY_KEY: "REGISTRY_KEY", + CDS_APP: "CDS_APP", + HDI_APP: "HDI_APP", + HDI_KEY: "HDI_KEY", + SERVER_APP: "SERVER_APP", }; const SETTING = { - [SETTING_TYPE.UAA]: { + [SETTING_TYPE.UAA_APP]: { + config: "uaaAppName", name: "uaa app", envVariable: ENV.UAA_APP, question: "cf app bound to xsuaa service (optional)?", @@ -27,8 +31,9 @@ const SETTING = { }, ], }, - [SETTING_TYPE.REG]: { - name: "registry app", + [SETTING_TYPE.REGISTRY_APP]: { + config: "regAppName", + name: "saas-registry app", envVariable: ENV.REGISTRY_APP, question: "cf app bound to saas-registry service (optional)?", failMessage: "option requires configured app bound to service label:saas-registry plan:application", @@ -43,15 +48,17 @@ const SETTING = { }, ], }, - [SETTING_TYPE.CDS]: { + [SETTING_TYPE.CDS_APP]: { + config: "cdsAppName", name: "cds-mtx app", envVariable: ENV.CDS_APP, question: "cf app running @sap/cds-mtx or @sap/cds-mtxs library (optional)?", failMessage: "option requires configured app running @sap/cds-mtx", requireRoute: true, }, - [SETTING_TYPE.HDI]: { - name: "hdi app", + [SETTING_TYPE.HDI_APP]: { + config: "hdiAppName", + name: "service-manager app", envVariable: ENV.HDI_APP, question: "cf app bound to service-manager or managed-hana service (optional)?", failMessage: @@ -67,7 +74,8 @@ const SETTING = { }, ], }, - [SETTING_TYPE.SRV]: { + [SETTING_TYPE.SERVER_APP]: { + config: "srvAppName", name: "server app", envVariable: ENV.SERVER_APP, question: 'cf app with "/info" endpoint (optional)?', diff --git a/src/shared/static.js b/src/shared/static.js index 81c156f..b681024 100644 --- a/src/shared/static.js +++ b/src/shared/static.js @@ -10,9 +10,12 @@ const util = require("util"); const ENV = Object.freeze({ UAA_APP: "MTX_UAA_APP", + UAA_KEY: "MTX_UAA_KEY", REGISTRY_APP: "MTX_REG_APP", + REGISTRY_KEY: "MTX_REG_KEY", CDS_APP: "MTX_CDS_APP", HDI_APP: "MTX_HDI_APP", + HDI_KEY: "MTX_HDI_KEY", SERVER_APP: "MTX_SRV_APP", APP_SUFFIX: "MTX_APP_SUFFIX", CDS_CONCURRENCY: "MTX_CDS_CONCURRENCY", diff --git a/src/submodules/hanaManagement.js b/src/submodules/hanaManagement.js index fd31530..a708061 100644 --- a/src/submodules/hanaManagement.js +++ b/src/submodules/hanaManagement.js @@ -471,8 +471,8 @@ const hdiListServiceManager = async (context, filterTenantId, doTimestamps) => { const [binding] = bindingsByInstance[instance.id] || []; const row = [ instance.labels.tenant_id[0], - binding ? binding.credentials.host + ":" + binding.credentials.port : "missing binding", - binding ? binding.credentials.schema : "", + binding ? binding.credentials?.host + ":" + binding.credentials?.port : "missing binding", + binding ? binding.credentials?.schema : "", instance.ready, ]; doTimestamps && row.push(...formatTimestampsWithRelativeDays([instance.created_at, instance.updated_at], nowDate));