@@ -197,8 +197,9 @@ func handleCustomConfig(ctx context.Context, comp *vshnv1.VSHNKeycloak, svc *run
197197 l := svc .Log
198198 customConfigurationRef := comp .Spec .Parameters .Service .CustomConfigurationRef
199199 customEnvVariablesRef := comp .Spec .Parameters .Service .CustomEnvVariablesRef
200+ envFrom := comp .Spec .Parameters .Service .EnvFrom
200201
201- if customConfigurationRef == nil && customEnvVariablesRef == nil {
202+ if customConfigurationRef == nil && customEnvVariablesRef == nil && envFrom == nil {
202203 return nil
203204 }
204205
@@ -242,6 +243,50 @@ func handleCustomConfig(ctx context.Context, comp *vshnv1.VSHNKeycloak, svc *run
242243 currentEnvHash = fmt .Sprintf ("%x" , md5 .Sum (dataBytes ))
243244 }
244245
246+ if envFrom != nil {
247+ var envFromData []byte
248+ for _ , ef := range * envFrom {
249+ if ef .SecretRef != nil {
250+ sec := & corev1.Secret {}
251+ obj , err := svc .CopyKubeResource (ctx , sec , comp .GetName ()+ "-env-secret-" + ef .SecretRef .Name , ef .SecretRef .Name , comp .GetClaimNamespace (), comp .GetInstanceNamespace ())
252+ if err != nil {
253+ l .Error (err , "cannot copy envFrom Secret" , "secretName" , ef .SecretRef .Name )
254+ svc .AddResult (runtime .NewWarningResult (fmt .Sprintf ("cannot copy envFrom Secret %q: %s" , ef .SecretRef .Name , err )))
255+ continue
256+ }
257+ dataBytes , err := json .Marshal (obj .(* corev1.Secret ).Data )
258+ if err != nil {
259+ l .Error (err , "cannot marshal Secret data for hashing" , "secretName" , ef .SecretRef .Name )
260+ continue
261+ }
262+ envFromData = append (envFromData , dataBytes ... )
263+ }
264+ if ef .ConfigMapRef != nil {
265+ cm := & corev1.ConfigMap {}
266+ obj , err := svc .CopyKubeResource (ctx , cm , comp .GetName ()+ "-env-cm-" + ef .ConfigMapRef .Name , ef .ConfigMapRef .Name , comp .GetClaimNamespace (), comp .GetInstanceNamespace ())
267+ if err != nil {
268+ l .Error (err , "cannot copy envFrom ConfigMap" , "configMapName" , ef .ConfigMapRef .Name )
269+ svc .AddResult (runtime .NewWarningResult (fmt .Sprintf ("cannot copy envFrom ConfigMap %q: %s" , ef .ConfigMapRef .Name , err )))
270+ continue
271+ }
272+ dataBytes , err := json .Marshal (obj .(* corev1.ConfigMap ).Data )
273+ if err != nil {
274+ l .Error (err , "cannot marshal ConfigMap data for hashing" , "configMapName" , ef .ConfigMapRef .Name )
275+ continue
276+ }
277+ envFromData = append (envFromData , dataBytes ... )
278+ }
279+ }
280+ if len (envFromData ) > 0 {
281+ envFromHash := fmt .Sprintf ("%x" , md5 .Sum (envFromData ))
282+ if currentEnvHash != "" {
283+ currentEnvHash = fmt .Sprintf ("%x" , md5 .Sum ([]byte (currentEnvHash + envFromHash )))
284+ } else {
285+ currentEnvHash = envFromHash
286+ }
287+ }
288+ }
289+
245290 lastConfigHash := comp .GetLastConfigHash ()
246291 lastEnvHash := comp .GetLastEnvHash ()
247292
@@ -798,25 +843,6 @@ func newValues(ctx context.Context, svc *runtime.ServiceRuntime, comp *vshnv1.VS
798843}
799844
800845func newRelease (ctx context.Context , svc * runtime.ServiceRuntime , comp * vshnv1.VSHNKeycloak , adminSecret , pgSecret string ) (* xhelmv1.Release , error ) {
801- if comp .Spec .Parameters .Service .EnvFrom != nil {
802- for _ , r := range * comp .Spec .Parameters .Service .EnvFrom {
803- if r .SecretRef != nil {
804- obj := & corev1.Secret {}
805- _ , err := svc .CopyKubeResource (ctx , obj , comp .GetName ()+ "-env-secret-" + r .SecretRef .Name , r .SecretRef .Name , comp .GetClaimNamespace (), comp .GetInstanceNamespace ())
806- if err != nil {
807- return nil , fmt .Errorf ("cannot copy Keycloak env variable Secret to instance namespace: %w" , err )
808- }
809- }
810- if r .ConfigMapRef != nil {
811- obj := & corev1.ConfigMap {}
812- _ , err := svc .CopyKubeResource (ctx , obj , comp .GetName ()+ "-env-cm-" + r .ConfigMapRef .Name , r .ConfigMapRef .Name , comp .GetClaimNamespace (), comp .GetInstanceNamespace ())
813- if err != nil {
814- return nil , fmt .Errorf ("cannot copy Keycloak env variable ConfigMap to instance namespace: %w" , err )
815- }
816- }
817- }
818- }
819-
820846 values , err := newValues (ctx , svc , comp , adminSecret , pgSecret )
821847 if err != nil {
822848 return nil , err
0 commit comments