getter and setter added for dnssecdata; dnssecdata added to cache

This commit is contained in:
David Kennedy 2023-09-28 10:10:48 -04:00
parent 24ecb6be50
commit 6df2a65a90
No known key found for this signature in database
GPG key ID: 6528A5386E66B96B
2 changed files with 47 additions and 3 deletions

View file

@ -47,6 +47,7 @@ try:
from .client import CLIENT, commands
from .errors import RegistryError, ErrorCode
from epplib.models import common
from epplib.responses import extensions
except ImportError:
pass
@ -54,6 +55,7 @@ __all__ = [
"CLIENT",
"commands",
"common",
"extensions",
"ErrorCode",
"RegistryError",
]

View file

@ -10,6 +10,7 @@ from epplibwrapper import (
CLIENT as registry,
commands,
common as epp,
extensions,
RegistryError,
ErrorCode,
)
@ -279,6 +280,36 @@ class Domain(TimeStampedModel, DomainHelper):
logger.error("Error _create_host, code was %s error was %s" % (e.code, e))
return e.code
@Cache
def dnssecdata(self) -> extensions.DNSSECExtension:
return self._get_property("dnssecdata")
@dnssecdata.setter
def dnssecdata(
self,
_dnssecdata: extensions.DNSSECExtension
):
updateParams = {
"maxSigLife": _dnssecdata.maxSigLife,
"dsData": _dnssecdata.dsData,
"keyData": _dnssecdata.keyData,
"remAllDsKeyData": True,
}
request = commands.UpdateDomain(
name=self.name
)
extension = commands.UpdateDomainDNSSECExtension(**updateParams)
request.add_extension(extension)
try:
registry.send(request, cleaned=True)
except RegistryError as e:
logger.error(
"Error adding DNSSEC, code was %s error was %s"
% (e.code, e)
)
raise e
@nameservers.setter # type: ignore
def nameservers(self, hosts: list[tuple[str]]):
"""host should be a tuple of type str, str,... where the elements are
@ -725,9 +756,9 @@ class Domain(TimeStampedModel, DomainHelper):
try:
logger.info("Getting domain info from epp")
req = commands.InfoDomain(name=self.name)
domainInfo = registry.send(req, cleaned=True).res_data[0]
domainInfoResponse = registry.send(req, cleaned=True)
exitEarly = True
return domainInfo
return domainInfoResponse
except RegistryError as e:
count += 1
@ -952,7 +983,8 @@ class Domain(TimeStampedModel, DomainHelper):
"""Contact registry for info about a domain."""
try:
# get info from registry
data = self._get_or_create_domain()
dataResponse = self._get_or_create_domain()
data = dataResponse.res_data[0]
# extract properties from response
# (Ellipsis is used to mean "null")
cache = {
@ -974,6 +1006,16 @@ class Domain(TimeStampedModel, DomainHelper):
# statuses can just be a list no need to keep the epp object
if "statuses" in cleaned.keys():
cleaned["statuses"] = [status.state for status in cleaned["statuses"]]
# get extensions info, if there is any
# DNSSECExtension is one possible extension, make sure to handle
# only DNSSECExtension and not other type extensions
extensions = dataResponse.extensions
cleaned["dnssecdata"] = None
for extension in extensions:
if isinstance(extension,extensions.DNSSECExtension):
cleaned["dnssecdata"] = extension
# get contact info, if there are any
if (
# fetch_contacts and