@@ -82,7 +82,7 @@ func (s *stackitDnsProviderResolver) Present(ch *v1alpha1.ChallengeRequest) erro
8282 return err
8383 }
8484
85- return s .updateExistingRRSet (initResolverRes , rrSet )
85+ return s .updateExistingRRSet (initResolverRes , rrSet , ch . Key )
8686}
8787
8888// CleanUp should delete the relevant TXT record from the DNS provider console.
@@ -384,12 +384,31 @@ func (s *stackitDnsProviderResolver) handleRRSetNotFound(
384384 return nil
385385}
386386
387+ func keyExists (records * []stackitdnsclient.Record , challengeKey string ) bool {
388+ for _ , record := range * records {
389+ if record .Content != nil && * record .Content == challengeKey {
390+ return true
391+ }
392+ }
393+
394+ return false
395+ }
396+
387397func (s * stackitDnsProviderResolver ) updateExistingRRSet (
388398 initResolverRes * initResolverContextResult ,
389399 rrSet * stackitdnsclient.RecordSet ,
400+ challengeKey string ,
390401) error {
391402 s .logger .Info ("RRSet found, updating RRSet" , zap .String ("rrSetName" , initResolverRes .rrSetName ))
392403
404+ if ! keyExists (rrSet .Records , challengeKey ) {
405+ s .logger .Info ("Challenge key not found in existing RRSet, adding new record" , zap .String ("rrSetName" , initResolverRes .rrSetName ))
406+ newRecord := stackitdnsclient.Record {
407+ Content : & challengeKey ,
408+ }
409+ * rrSet .Records = append (* rrSet .Records , newRecord )
410+ }
411+
393412 rrSet .Ttl = & initResolverRes .acmeTxtDefaultTTL
394413
395414 if err := initResolverRes .rrSetRepository .UpdateRRSet (s .ctx , * rrSet ); err != nil {
0 commit comments