@@ -68,7 +68,6 @@ import {
6868 getServiceUrl ,
6969 getValuesSchema ,
7070 removeBlankAttributes ,
71- valueArrayToObject ,
7271} from 'src/utils'
7372import {
7473 cleanEnv ,
@@ -112,8 +111,8 @@ import {
112111 testPrivateRepoConnect ,
113112 testPublicRepoConnect ,
114113} from './utils/codeRepoUtils'
115- import { getAplObjectFromV1 , getV1MergeObject , getV1ObjectFromApl , getV1SealedSecretFromApl } from './utils/manifests'
116- import { getEncryptedData , sealedSecretManifest , SealedSecretManifestType } from './utils/sealedSecretUtils'
114+ import { getAplObjectFromV1 , getV1MergeObject , getV1ObjectFromApl } from './utils/manifests'
115+ import { getSealedSecretsPEM , sealedSecretManifest , SealedSecretManifestType } from './utils/sealedSecretUtils'
117116import { getKeycloakUsers , isValidUsername } from './utils/userUtils'
118117import { ObjectStorageClient } from './utils/wizardUtils'
119118import { fetchChartYaml , fetchWorkloadCatalog , NewHelmChartValues , sparseCloneChart } from './utils/workloadUtils'
@@ -2234,35 +2233,16 @@ export default class OtomiStack {
22342233 }
22352234
22362235 async createSealedSecret ( teamId : string , data : SealedSecret ) : Promise < SealedSecret > {
2237- const spec = {
2238- ...omit ( data , 'encryptedData' ) ,
2239- decryptedData : valueArrayToObject ( data . encryptedData ) ,
2240- metadata : {
2241- annotations : valueArrayToObject ( data . metadata ?. annotations ) ,
2242- labels : valueArrayToObject ( data . metadata ?. labels ) ,
2243- finalizers : data . metadata ?. finalizers ,
2244- } ,
2245- }
22462236 const newSecret = await this . createAplSealedSecret (
22472237 teamId ,
2248- getAplObjectFromV1 ( 'AplTeamSecret' , spec ) as AplSecretRequest ,
2238+ getAplObjectFromV1 ( 'AplTeamSecret' , data ) as AplSecretRequest ,
22492239 )
2250- return getV1SealedSecretFromApl ( newSecret )
2240+ return getV1ObjectFromApl ( newSecret ) as SealedSecret
22512241 }
22522242
22532243 async createAplSealedSecret ( teamId : string , data : AplSecretRequest ) : Promise < AplSecretResponse > {
2254- const namespace = data . spec . namespace ?? `team-${ teamId } `
22552244 try {
2256- const encryptedData = await getEncryptedData ( data . spec . decryptedData , data . metadata . name , namespace )
2257- const sealedSecret = this . repoService . getTeamConfigService ( teamId ) . createSealedSecret ( {
2258- kind : 'AplTeamSecret' ,
2259- metadata : data . metadata ,
2260- spec : {
2261- ...omit ( data . spec , 'decryptedData' ) ,
2262- encryptedData,
2263- namespace,
2264- } ,
2265- } )
2245+ const sealedSecret = this . repoService . getTeamConfigService ( teamId ) . createSealedSecret ( data )
22662246 await this . saveTeamSealedSecret ( sealedSecret )
22672247 await this . doTeamDeployment (
22682248 teamId ,
@@ -2279,22 +2259,9 @@ export default class OtomiStack {
22792259 }
22802260
22812261 async editSealedSecret ( teamId : string , name : string , data : SealedSecret ) : Promise < SealedSecret > {
2282- const mergeObj = getV1MergeObject ( omit ( data , [ 'encryptedData' , 'metadata' ] ) ) as DeepPartial < AplSecretRequest >
2283- if ( ! mergeObj . spec ) {
2284- mergeObj . spec = { }
2285- }
2286- if ( data . encryptedData ) {
2287- mergeObj . spec . decryptedData = valueArrayToObject ( data . encryptedData )
2288- }
2289- if ( data . metadata ) {
2290- mergeObj . spec . metadata = {
2291- annotations : valueArrayToObject ( data . metadata . annotations ) ,
2292- labels : valueArrayToObject ( data . metadata . labels ) ,
2293- finalizers : data . metadata . finalizers ,
2294- }
2295- }
2262+ const mergeObj = getV1MergeObject ( data ) as DeepPartial < AplSecretRequest >
22962263 const mergedSecret = await this . editAplSealedSecret ( teamId , name , mergeObj )
2297- return getV1SealedSecretFromApl ( mergedSecret )
2264+ return getV1ObjectFromApl ( mergedSecret ) as SealedSecret
22982265 }
22992266
23002267 async editAplSealedSecret (
@@ -2305,16 +2272,11 @@ export default class OtomiStack {
23052272 ) : Promise < AplSecretResponse > {
23062273 const existingSecret = this . repoService . getTeamConfigService ( teamId ) . getSealedSecret ( name )
23072274 const namespace = data . spec ?. namespace ?? existingSecret . spec . namespace ?? `team-${ teamId } `
2308- let encryptedData
2309- if ( data . spec ?. decryptedData ) {
2310- encryptedData = await getEncryptedData ( data . spec . decryptedData , data . metadata ?. name || name , namespace )
2311- }
23122275 const sealedSecret = patch
23132276 ? this . repoService . getTeamConfigService ( teamId ) . patchSealedSecret ( name , {
23142277 metadata : data . metadata ,
23152278 spec : {
2316- ...omit ( data . spec , 'decryptedData' ) ,
2317- encryptedData,
2279+ encryptedData : data . spec ?. encryptedData ,
23182280 namespace,
23192281 } ,
23202282 } )
@@ -2323,9 +2285,10 @@ export default class OtomiStack {
23232285 metadata : data . metadata ,
23242286 spec : {
23252287 ...existingSecret . spec ,
2326- ...omit ( data . spec , 'decryptedData' ) ,
2327- encryptedData,
2288+ encryptedData : data . spec ?. encryptedData ,
23282289 namespace,
2290+ immutable : data . spec ?. immutable ?? existingSecret . spec . immutable ,
2291+ metadata : data . spec ?. metadata ?? existingSecret . spec . metadata ,
23292292 } ,
23302293 } as AplSecretRequest )
23312294 await this . saveTeamSealedSecret ( sealedSecret )
@@ -2355,26 +2318,24 @@ export default class OtomiStack {
23552318
23562319 async getSealedSecret ( teamId : string , name : string ) : Promise < SealedSecret > {
23572320 const aplSecret = await this . getAplSealedSecret ( teamId , name )
2358- return getV1SealedSecretFromApl ( aplSecret )
2321+ return getV1ObjectFromApl ( aplSecret ) as SealedSecret
23592322 }
23602323
23612324 async getAplSealedSecret ( teamId : string , name : string ) : Promise < AplSecretResponse > {
23622325 const sealedSecret = this . repoService . getTeamConfigService ( teamId ) . getSealedSecret ( name )
2363- const namespace = sealedSecret . spec . namespace ?? `team-${ teamId } `
2364- sealedSecret . spec . decryptedData = ( await getSecretValues ( name , namespace ) ) || { }
23652326 return sealedSecret
23662327 }
23672328
23682329 getAllSealedSecrets ( ) : SealedSecret [ ] {
2369- return this . getAllAplSealedSecrets ( ) . map ( getV1SealedSecretFromApl )
2330+ return this . getAllAplSealedSecrets ( ) . map ( getV1ObjectFromApl ) as SealedSecret [ ]
23702331 }
23712332
23722333 getAllAplSealedSecrets ( ) : AplSecretResponse [ ] {
23732334 return this . repoService . getAllSealedSecrets ( )
23742335 }
23752336
23762337 getSealedSecrets ( teamId : string ) : SealedSecret [ ] {
2377- return this . getAplSealedSecrets ( teamId ) . map ( getV1SealedSecretFromApl )
2338+ return this . getAplSealedSecrets ( teamId ) . map ( getV1ObjectFromApl ) as SealedSecret [ ]
23782339 }
23792340
23802341 getAplSealedSecrets ( teamId : string ) : AplSecretResponse [ ] {
@@ -2554,6 +2515,7 @@ export default class OtomiStack {
25542515 corrupt : rootStack . git . corrupt ,
25552516 editor : this . editor ,
25562517 inactivityTimeout : env . EDITOR_INACTIVITY_TIMEOUT ,
2518+ sealedSecretsPEM : await getSealedSecretsPEM ( ) ,
25572519 user : user as SessionUser ,
25582520 defaultPlatformAdminEmail : env . DEFAULT_PLATFORM_ADMIN_EMAIL ,
25592521 objectStorage : {
0 commit comments