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
|
* 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 = copy.deepcopy(self._schema)
|
||||||
schema["required"] = ["name", "type", "data"]
|
schema["required"] = ["name", "type", "data", "ttl"]
|
||||||
self.__validate(params, schema)
|
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(
|
self.__rest_helper(
|
||||||
"/dnszones/{zone}/records/".format(zone=zone), data=params, method="POST"
|
"/dnszones/{zone}/records/".format(zone=zone), data=params, method="POST"
|
||||||
)
|
)
|
||||||
@ -216,6 +232,13 @@ class CoreNetworks():
|
|||||||
|
|
||||||
return self.__normalize(result)
|
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):
|
def delete_record(self, zone, params):
|
||||||
"""
|
"""
|
||||||
Delete all DNS records of a zone that match the data.
|
Delete all DNS records of a zone that match the data.
|
||||||
@ -245,9 +268,7 @@ class CoreNetworks():
|
|||||||
if params.get("force_all"):
|
if params.get("force_all"):
|
||||||
params = {}
|
params = {}
|
||||||
|
|
||||||
result = self.__rest_helper(
|
result = self._delete_record_raw(zone, params)
|
||||||
"/dnszones/{zone}/records/delete".format(zone=zone), data=params, method="POST"
|
|
||||||
)
|
|
||||||
|
|
||||||
if self.config["auto_commit"]:
|
if self.config["auto_commit"]:
|
||||||
self.commit(zone=zone)
|
self.commit(zone=zone)
|
||||||
|
Loading…
Reference in New Issue
Block a user