mirror of
https://github.com/thegeeklab/corenetworks.git
synced 2024-11-21 21:20:38 +00:00
update records with different ttl to prevent duplicate entries
This commit is contained in:
parent
fa581cd48d
commit
0edfc084d7
@ -1,2 +1,4 @@
|
||||
* ENHANCEMENT
|
||||
* make `ttl` mandatory for add function
|
||||
* BUGFIX
|
||||
* fix passed variable basic auth to fix broken env variables
|
||||
* update (delete + create) records with different `ttl` to prevent duplicate entries
|
||||
|
@ -202,9 +202,25 @@ class CoreNetworks():
|
||||
|
||||
"""
|
||||
schema = copy.deepcopy(self._schema)
|
||||
schema["required"] = ["name", "type", "data"]
|
||||
schema["required"] = ["name", "type", "data", "ttl"]
|
||||
self.__validate(params, schema)
|
||||
|
||||
curr = copy.deepcopy(params)
|
||||
curr.pop("ttl")
|
||||
|
||||
records = self.records(zone, curr)
|
||||
if len(records) > 1:
|
||||
raise CorenetworksError(
|
||||
"More than one record already exists for the given attributes. "
|
||||
"That should be impossible, please open an issue!"
|
||||
)
|
||||
|
||||
# delete existing record with different ttl for a fake update
|
||||
for r in records:
|
||||
r["ttl"] = int(r["ttl"])
|
||||
if r["ttl"] != params["ttl"]:
|
||||
self._delete_record_raw(zone, params=r)
|
||||
|
||||
self.__rest_helper(
|
||||
"/dnszones/{zone}/records/".format(zone=zone), data=params, method="POST"
|
||||
)
|
||||
@ -216,6 +232,13 @@ class CoreNetworks():
|
||||
|
||||
return self.__normalize(result)
|
||||
|
||||
def _delete_record_raw(self, zone, params):
|
||||
r = self.__rest_helper(
|
||||
"/dnszones/{zone}/records/delete".format(zone=zone), data=params, method="POST"
|
||||
)
|
||||
|
||||
return r
|
||||
|
||||
def delete_record(self, zone, params):
|
||||
"""
|
||||
Delete all DNS records of a zone that match the data.
|
||||
@ -245,9 +268,7 @@ class CoreNetworks():
|
||||
if params.get("force_all"):
|
||||
params = {}
|
||||
|
||||
result = self.__rest_helper(
|
||||
"/dnszones/{zone}/records/delete".format(zone=zone), data=params, method="POST"
|
||||
)
|
||||
result = self._delete_record_raw(zone, params)
|
||||
|
||||
if self.config["auto_commit"]:
|
||||
self.commit(zone=zone)
|
||||
|
Loading…
Reference in New Issue
Block a user