@@ -75,7 +75,7 @@ func (j *Janitor) runRule(ctx context.Context, logger *slogger.Logger, rule *Con
7575 gvkLogger ,
7676 resourceType ,
7777 resource ,
78- rule . Id ,
78+ rule ,
7979 ttl ,
8080 metricList ,
8181 )
@@ -92,7 +92,7 @@ func (j *Janitor) runRule(ctx context.Context, logger *slogger.Logger, rule *Con
9292}
9393
9494// checkResourceTtlAndTriggerDeleteIfExpired checks the resource against the defined TTL and deletes if the resource is expired
95- func (j * Janitor ) checkResourceTtlAndTriggerDeleteIfExpired (ctx context.Context , logger * slogger.Logger , resourceConfig * ConfigResource , resource unstructured.Unstructured , ruleId string , ttlValue string , metricResourceTtl * prometheusCommon.MetricList ) error {
95+ func (j * Janitor ) checkResourceTtlAndTriggerDeleteIfExpired (ctx context.Context , logger * slogger.Logger , resourceConfig * ConfigResource , resource unstructured.Unstructured , rule * ConfigRule , ttlValue string , metricResourceTtl * prometheusCommon.MetricList ) error {
9696 resourceLogger := logger .WithGroup ("resource" ).With (
9797 slog .String ("namespace" , resource .GetNamespace ()),
9898 slog .String ("name" , resource .GetName ()),
@@ -149,22 +149,31 @@ func (j *Janitor) checkResourceTtlAndTriggerDeleteIfExpired(ctx context.Context,
149149 resourceLogger .Info ("resource is expired, would delete resource (DRY-RUN)" , slog .Time ("expirationDate" , * parsedDate ))
150150 } else {
151151 resourceLogger .Info ("deleting expired resource" , slog .Time ("expirationDate" , * parsedDate ))
152- err := j .dynClient .Resource (resourceConfig .AsGVR ()).Namespace (resource .GetNamespace ()).Delete (ctx , resource .GetName (), metav1.DeleteOptions {})
152+ deleteOpts := metav1.DeleteOptions {}
153+ if rule .DeleteOptions .PropagationPolicy != nil {
154+ propagationPolicy := metav1 .DeletionPropagation (* rule .DeleteOptions .PropagationPolicy )
155+ deleteOpts .PropagationPolicy = & propagationPolicy
156+ }
157+ if rule .DeleteOptions .GracePeriodSeconds != nil {
158+ deleteOpts .GracePeriodSeconds = rule .DeleteOptions .GracePeriodSeconds
159+ }
160+
161+ err := j .dynClient .Resource (resourceConfig .AsGVR ()).Namespace (resource .GetNamespace ()).Delete (ctx , resource .GetName (), deleteOpts )
153162 if err != nil {
154163 return err
155164 }
156165
157166 // increase deleted counter
158167 j .prometheus .deleted .With (
159168 prometheus.Labels {
160- "rule" : ruleId ,
169+ "rule" : rule . Id ,
161170 "groupVersionKind" : fmt .Sprintf ("%s/%s/%s" , groupVersionKind .Group , groupVersionKind .Version , groupVersionKind .Kind ),
162171 "namespace" : resource .GetNamespace (),
163172 },
164173 ).Inc ()
165174
166175 reason := "TimeToLiveExpired"
167- message := fmt .Sprintf (`TTL of "%v" is expired and resource is being deleted (%s)` , ttlValue , ruleId )
176+ message := fmt .Sprintf (`TTL of "%v" is expired and resource is being deleted (%s)` , ttlValue , rule . Id )
168177
169178 err = j .kubeCreateEventFromResource (ctx , resource .GetNamespace (), resource , message , reason )
170179 if err != nil {
@@ -176,7 +185,7 @@ func (j *Janitor) checkResourceTtlAndTriggerDeleteIfExpired(ctx context.Context,
176185
177186 metricResourceTtl .AddTime (
178187 prometheus.Labels {
179- "rule" : ruleId ,
188+ "rule" : rule . Id ,
180189 "groupVersionKind" : fmt .Sprintf ("%s/%s/%s" , groupVersionKind .Group , groupVersionKind .Version , groupVersionKind .Kind ),
181190 "namespace" : resource .GetNamespace (),
182191 "name" : resource .GetName (),
0 commit comments