@@ -127,38 +127,16 @@ func (d *DNSProvider) Present(domain, token, keyAuth string) error {
127127		return  fmt .Errorf ("exoscale: zone %q not found" , zoneName )
128128	}
129129
130- 	recordID , err  :=  d .findExistingRecordID (deref (zone .ID ), recordName )
131- 	if  err  !=  nil  {
132- 		return  fmt .Errorf ("exoscale: %w" , err )
133- 	}
134- 
135- 	if  recordID  ==  ""  {
136- 		record  :=  egoscale.DNSDomainRecord {
137- 			Name :    pointer (recordName ),
138- 			TTL :     pointer (d .config .TTL ),
139- 			Content : pointer (info .Value ),
140- 			Type :    pointer ("TXT" ),
141- 		}
142- 
143- 		_ , err  =  d .client .CreateDNSDomainRecord (ctx , d .apiZone , deref (zone .ID ), & record )
144- 		if  err  !=  nil  {
145- 			return  fmt .Errorf ("exoscale: error while creating DNS record: %w" , err )
146- 		}
147- 
148- 		return  nil 
149- 	}
150- 
151130	record  :=  egoscale.DNSDomainRecord {
152- 		ID :      pointer (recordID ),
153131		Name :    pointer (recordName ),
154132		TTL :     pointer (d .config .TTL ),
155133		Content : pointer (info .Value ),
156134		Type :    pointer ("TXT" ),
157135	}
158136
159- 	err  =  d .client .UpdateDNSDomainRecord (ctx , d .apiZone , deref (zone .ID ), & record )
137+ 	_ ,  err  =  d .client .CreateDNSDomainRecord (ctx , d .apiZone , deref (zone .ID ), & record )
160138	if  err  !=  nil  {
161- 		return  fmt .Errorf ("exoscale: error while updating  DNS record: %w" , err )
139+ 		return  fmt .Errorf ("exoscale: error while creating  DNS record: %w" , err )
162140	}
163141
164142	return  nil 
@@ -182,7 +160,7 @@ func (d *DNSProvider) CleanUp(domain, token, keyAuth string) error {
182160		return  fmt .Errorf ("exoscale: zone %q not found" , zoneName )
183161	}
184162
185- 	recordID , err  :=  d .findExistingRecordID (deref (zone .ID ), recordName )
163+ 	recordID , err  :=  d .findExistingRecordID (deref (zone .ID ), recordName ,  info . Value )
186164	if  err  !=  nil  {
187165		return  err 
188166	}
@@ -224,7 +202,7 @@ func (d *DNSProvider) findExistingZone(zoneName string) (*egoscale.DNSDomain, er
224202
225203// findExistingRecordID Query Exoscale to find an existing record for this name. 
226204// Returns empty result if no record could be found. 
227- func  (d  * DNSProvider ) findExistingRecordID (zoneID , recordName  string ) (string , error ) {
205+ func  (d  * DNSProvider ) findExistingRecordID (zoneID , recordName ,  value  string ) (string , error ) {
228206	ctx  :=  context .Background ()
229207
230208	records , err  :=  d .client .ListDNSDomainRecords (ctx , d .apiZone , zoneID )
@@ -233,8 +211,7 @@ func (d *DNSProvider) findExistingRecordID(zoneID, recordName string) (string, e
233211	}
234212
235213	for  _ , record  :=  range  records  {
236- 		if  deref (record .Name ) ==  recordName  && 
237- 			deref (record .Type ) ==  "TXT"  {
214+ 		if  deref (record .Name ) ==  recordName  &&  deref (record .Type ) ==  "TXT"  &&  deref (record .Content ) ==  value  {
238215			return  deref (record .ID ), nil 
239216		}
240217	}
0 commit comments