mirror of
https://github.com/google/nomulus.git
synced 2025-06-27 14:54:51 +02:00
Notify registrars of async contact/host deletions
We now send PendingActionNotificationResponses in our poll messages upon completion of an asynchronous contact or host deletion. This is part 1 of 2, which begins logging Trid in all enqueued Host/Contact deletion flows for use in batch deletions, and optionally consuming the resultant Trid info to emit a Host/ContactPendingActionNotifcationResponse. Part 2 will make this response emission non-optional, which will happen once the queue is cleared of all non-Trid containing tasks. ------------- Created by MOE: https://github.com/google/moe MOE_MIGRATED_REVID=153084197
This commit is contained in:
parent
478c7576c6
commit
5047d568de
12 changed files with 240 additions and 66 deletions
|
@ -60,6 +60,7 @@ import google.registry.model.host.HostInfoData;
|
|||
import google.registry.model.poll.MessageQueueInfo;
|
||||
import google.registry.model.poll.PendingActionNotificationResponse.ContactPendingActionNotificationResponse;
|
||||
import google.registry.model.poll.PendingActionNotificationResponse.DomainPendingActionNotificationResponse;
|
||||
import google.registry.model.poll.PendingActionNotificationResponse.HostPendingActionNotificationResponse;
|
||||
import google.registry.model.transfer.TransferResponse.ContactTransferResponse;
|
||||
import google.registry.model.transfer.TransferResponse.DomainTransferResponse;
|
||||
import javax.annotation.Nullable;
|
||||
|
@ -98,20 +99,22 @@ public class EppResponse extends ImmutableObject implements ResponseOrGreeting {
|
|||
|
||||
/** Zero or more response "resData" results. */
|
||||
@XmlElementRefs({
|
||||
@XmlElementRef(type = ContactCheckData.class),
|
||||
@XmlElementRef(type = ContactCreateData.class),
|
||||
@XmlElementRef(type = ContactInfoData.class),
|
||||
@XmlElementRef(type = ContactPendingActionNotificationResponse.class),
|
||||
@XmlElementRef(type = ContactTransferResponse.class),
|
||||
@XmlElementRef(type = DomainCheckData.class),
|
||||
@XmlElementRef(type = DomainCreateData.class),
|
||||
@XmlElementRef(type = DomainInfoData.class),
|
||||
@XmlElementRef(type = DomainPendingActionNotificationResponse.class),
|
||||
@XmlElementRef(type = DomainRenewData.class),
|
||||
@XmlElementRef(type = DomainTransferResponse.class),
|
||||
@XmlElementRef(type = HostCheckData.class),
|
||||
@XmlElementRef(type = HostCreateData.class),
|
||||
@XmlElementRef(type = HostInfoData.class)})
|
||||
@XmlElementRef(type = ContactCheckData.class),
|
||||
@XmlElementRef(type = ContactCreateData.class),
|
||||
@XmlElementRef(type = ContactInfoData.class),
|
||||
@XmlElementRef(type = ContactPendingActionNotificationResponse.class),
|
||||
@XmlElementRef(type = ContactTransferResponse.class),
|
||||
@XmlElementRef(type = DomainCheckData.class),
|
||||
@XmlElementRef(type = DomainCreateData.class),
|
||||
@XmlElementRef(type = DomainInfoData.class),
|
||||
@XmlElementRef(type = DomainPendingActionNotificationResponse.class),
|
||||
@XmlElementRef(type = DomainRenewData.class),
|
||||
@XmlElementRef(type = DomainTransferResponse.class),
|
||||
@XmlElementRef(type = HostCheckData.class),
|
||||
@XmlElementRef(type = HostCreateData.class),
|
||||
@XmlElementRef(type = HostInfoData.class),
|
||||
@XmlElementRef(type = HostPendingActionNotificationResponse.class)
|
||||
})
|
||||
@XmlElementWrapper
|
||||
ImmutableList<? extends ResponseData> resData;
|
||||
|
||||
|
|
|
@ -125,4 +125,30 @@ public abstract class PendingActionNotificationResponse
|
|||
processedDate);
|
||||
}
|
||||
}
|
||||
|
||||
/** An adapter to output the XML in response to resolving a pending command on a host. */
|
||||
@Embed
|
||||
@XmlRootElement(name = "panData", namespace = "urn:ietf:params:xml:ns:domain-1.0")
|
||||
@XmlType(
|
||||
propOrder = {"name", "trid", "processedDate"},
|
||||
namespace = "urn:ietf:params:xml:ns:domain-1.0"
|
||||
)
|
||||
public static class HostPendingActionNotificationResponse
|
||||
extends PendingActionNotificationResponse {
|
||||
|
||||
@XmlElement
|
||||
NameOrId getName() {
|
||||
return nameOrId;
|
||||
}
|
||||
|
||||
public static HostPendingActionNotificationResponse create(
|
||||
String fullyQualifiedHostName, boolean actionResult, Trid trid, DateTime processedDate) {
|
||||
return init(
|
||||
new HostPendingActionNotificationResponse(),
|
||||
fullyQualifiedHostName,
|
||||
actionResult,
|
||||
trid,
|
||||
processedDate);
|
||||
}
|
||||
}
|
||||
}
|
||||
|
|
|
@ -39,6 +39,7 @@ import google.registry.model.eppoutput.EppResponse.ResponseData;
|
|||
import google.registry.model.eppoutput.EppResponse.ResponseExtension;
|
||||
import google.registry.model.poll.PendingActionNotificationResponse.ContactPendingActionNotificationResponse;
|
||||
import google.registry.model.poll.PendingActionNotificationResponse.DomainPendingActionNotificationResponse;
|
||||
import google.registry.model.poll.PendingActionNotificationResponse.HostPendingActionNotificationResponse;
|
||||
import google.registry.model.reporting.HistoryEntry;
|
||||
import google.registry.model.transfer.TransferData.TransferServerApproveEntity;
|
||||
import google.registry.model.transfer.TransferResponse.ContactTransferResponse;
|
||||
|
@ -189,6 +190,7 @@ public abstract class PollMessage extends ImmutableObject
|
|||
List<ContactTransferResponse> contactTransferResponses;
|
||||
List<DomainPendingActionNotificationResponse> domainPendingActionNotificationResponses;
|
||||
List<DomainTransferResponse> domainTransferResponses;
|
||||
List<HostPendingActionNotificationResponse> hostPendingActionNotificationResponses;
|
||||
|
||||
// Extensions. Objectify cannot persist a base class type, so we must have a separate field
|
||||
// to hold every possible derived type of ResponseExtensions that we might store.
|
||||
|
@ -211,6 +213,7 @@ public abstract class PollMessage extends ImmutableObject
|
|||
.addAll(nullToEmpty(contactTransferResponses))
|
||||
.addAll(nullToEmpty(domainPendingActionNotificationResponses))
|
||||
.addAll(nullToEmpty(domainTransferResponses))
|
||||
.addAll(nullToEmpty(hostPendingActionNotificationResponses))
|
||||
.build();
|
||||
}
|
||||
|
||||
|
@ -240,6 +243,8 @@ public abstract class PollMessage extends ImmutableObject
|
|||
iterable.filter(DomainPendingActionNotificationResponse.class).toList());
|
||||
getInstance().domainTransferResponses = forceEmptyToNull(
|
||||
iterable.filter(DomainTransferResponse.class).toList());
|
||||
getInstance().hostPendingActionNotificationResponses = forceEmptyToNull(
|
||||
iterable.filter(HostPendingActionNotificationResponse.class).toList());
|
||||
return this;
|
||||
}
|
||||
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue