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 .client import CLIENT, commands
from .errors import RegistryError, ErrorCode from .errors import RegistryError, ErrorCode
from epplib.models import common from epplib.models import common
from epplib.responses import extensions
except ImportError: except ImportError:
pass pass
@ -54,6 +55,7 @@ __all__ = [
"CLIENT", "CLIENT",
"commands", "commands",
"common", "common",
"extensions",
"ErrorCode", "ErrorCode",
"RegistryError", "RegistryError",
] ]

View file

@ -10,6 +10,7 @@ from epplibwrapper import (
CLIENT as registry, CLIENT as registry,
commands, commands,
common as epp, common as epp,
extensions,
RegistryError, RegistryError,
ErrorCode, ErrorCode,
) )
@ -279,6 +280,36 @@ class Domain(TimeStampedModel, DomainHelper):
logger.error("Error _create_host, code was %s error was %s" % (e.code, e)) logger.error("Error _create_host, code was %s error was %s" % (e.code, e))
return e.code 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 @nameservers.setter # type: ignore
def nameservers(self, hosts: list[tuple[str]]): def nameservers(self, hosts: list[tuple[str]]):
"""host should be a tuple of type str, str,... where the elements are """host should be a tuple of type str, str,... where the elements are
@ -725,9 +756,9 @@ class Domain(TimeStampedModel, DomainHelper):
try: try:
logger.info("Getting domain info from epp") logger.info("Getting domain info from epp")
req = commands.InfoDomain(name=self.name) req = commands.InfoDomain(name=self.name)
domainInfo = registry.send(req, cleaned=True).res_data[0] domainInfoResponse = registry.send(req, cleaned=True)
exitEarly = True exitEarly = True
return domainInfo return domainInfoResponse
except RegistryError as e: except RegistryError as e:
count += 1 count += 1
@ -952,7 +983,8 @@ class Domain(TimeStampedModel, DomainHelper):
"""Contact registry for info about a domain.""" """Contact registry for info about a domain."""
try: try:
# get info from registry # 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 # extract properties from response
# (Ellipsis is used to mean "null") # (Ellipsis is used to mean "null")
cache = { cache = {
@ -974,6 +1006,16 @@ class Domain(TimeStampedModel, DomainHelper):
# statuses can just be a list no need to keep the epp object # statuses can just be a list no need to keep the epp object
if "statuses" in cleaned.keys(): if "statuses" in cleaned.keys():
cleaned["statuses"] = [status.state for status in cleaned["statuses"]] 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 # get contact info, if there are any
if ( if (
# fetch_contacts and # fetch_contacts and