diff --git a/src/api/v1/settings/{settingId}.ts b/src/api/v1/settings/{settingId}.ts index a804ba47e..8551022c0 100644 --- a/src/api/v1/settings/{settingId}.ts +++ b/src/api/v1/settings/{settingId}.ts @@ -1,6 +1,7 @@ import Debug from 'debug' import { Response } from 'express' import { OpenApiRequestExt, Settings } from 'src/otomi-models' +import { omit } from 'lodash' const debug = Debug('otomi:api:v1:settings') @@ -13,5 +14,9 @@ export const editSettings = async (req: OpenApiRequestExt, res: Response): Promi const ids = Object.keys(req.body as Settings) debug(`editSettings(${ids.join(',')})`) const v = await req.otomi.editSettings(req.body as Settings, settingId) - res.json(v) + if (v?.otomi) { + res.json(omit(v, ['otomi.adminPassword', 'otomi.git.password'])) + } else { + res.json(v) + } } diff --git a/src/openapi/settings.yaml b/src/openapi/settings.yaml index 1d140dfc5..9cb390ee7 100644 --- a/src/openapi/settings.yaml +++ b/src/openapi/settings.yaml @@ -261,7 +261,6 @@ Settings: required: - repoUrl - username - - password - email - branch adminPassword: diff --git a/src/otomi-stack.ts b/src/otomi-stack.ts index 1499eca33..a7b40077c 100644 --- a/src/otomi-stack.ts +++ b/src/otomi-stack.ts @@ -1,4 +1,4 @@ -import { CoreV1Api, User as k8sUser, KubeConfig, V1ObjectReference } from '@kubernetes/client-node' +import { CoreV1Api, KubeConfig, User as k8sUser, V1ObjectReference } from '@kubernetes/client-node' import Debug from 'debug' import { getRegions, ObjectStorageKeyRegions } from '@linode/api-v4' @@ -503,11 +503,15 @@ export default class OtomiStack { const settings = this.getSettings() await this.editIngressApps(settings, data, settingId) const updatedSettingsData: any = { ...data } - // Preserve the otomi.adminPassword when editing otomi settings + // Preserve the otomi.adminPassword and otomi.git.password if not present when editing otomi settings if (settingId === 'otomi') { updatedSettingsData.otomi = { ...updatedSettingsData.otomi, adminPassword: settings.otomi?.adminPassword, + git: { + ...updatedSettingsData.otomi?.git, + ...(!updatedSettingsData.otomi?.git?.password && { password: settings.otomi?.git?.password }), + }, } // convert otomi.nodeSelector to object if (Array.isArray(updatedSettingsData.otomi.nodeSelector)) {