@@ -1379,38 +1379,46 @@ func (r *KeystoneAPIReconciler) ensureFernetKeys(
13791379 //
13801380 secretName := keystone .ServiceName
13811381 secret , hash , err := oko_secret .GetSecret (ctx , helper , secretName , instance .Namespace )
1382+
13821383 if err != nil && ! k8s_errors .IsNotFound (err ) {
13831384 return err
1384- } else if k8s_errors .IsNotFound (err ) {
1385- fernetKeys := map [string ]string {
1386- "CredentialKeys0" : keystone .GenerateFernetKey (),
1387- "CredentialKeys1" : keystone .GenerateFernetKey (),
1388- }
1389- var numberKeys int
1390- fmt .Sscan (instance .Spec .FernetMaxActiveKeys , & numberKeys )
1391- for i := 0 ; i < numberKeys ; i ++ {
1392- fernetKeys [fmt .Sprintf ("FernetKeys%d" , i )] = keystone .GenerateFernetKey ()
1393- }
1394-
1395- tmpl := []util.Template {
1396- {
1397- Name : secretName ,
1398- Namespace : instance .Namespace ,
1399- Type : util .TemplateTypeNone ,
1400- CustomData : fernetKeys ,
1401- Labels : labels ,
1402- },
1403- }
1404- err := oko_secret .EnsureSecrets (ctx , helper , instance , tmpl , envVars )
1405- if err != nil {
1406- return err
1407- }
14081385 } else {
14091386 // add hash to envVars
14101387 (* envVars )[secret .Name ] = env .SetValue (hash )
14111388 }
14121389
1413- // TODO: fernet key rotation
1390+ fernetKeys := map [string ]string {
1391+ "CredentialKeys0" : keystone .GenerateFernetKey (),
1392+ "CredentialKeys1" : keystone .GenerateFernetKey (),
1393+ }
1394+
1395+ var numberKeys int
1396+ fmt .Sscan (instance .Spec .FernetMaxActiveKeys , & numberKeys )
1397+
1398+ for i := 0 ; i < numberKeys ; i ++ {
1399+ key := fmt .Sprintf ("FernetKeys%d" , i )
1400+ v , exists := secret .Data [key ]
1401+ if exists {
1402+ fernetKeys [key ] = string (v [:])
1403+ } else {
1404+ fernetKeys [key ] = keystone .GenerateFernetKey ()
1405+ }
1406+ }
1407+
1408+ tmpl := []util.Template {
1409+ {
1410+ Name : secretName ,
1411+ Namespace : instance .Namespace ,
1412+ Type : util .TemplateTypeNone ,
1413+ CustomData : fernetKeys ,
1414+ Labels : labels ,
1415+ },
1416+ }
1417+
1418+ err = oko_secret .EnsureSecrets (ctx , helper , instance , tmpl , envVars )
1419+ if err != nil {
1420+ return err
1421+ }
14141422
14151423 return nil
14161424}
0 commit comments