diff --git a/core/src/main/java/google/registry/tools/CreateDomainCommand.java b/core/src/main/java/google/registry/tools/CreateDomainCommand.java index e6589064c..c83faa44a 100644 --- a/core/src/main/java/google/registry/tools/CreateDomainCommand.java +++ b/core/src/main/java/google/registry/tools/CreateDomainCommand.java @@ -80,8 +80,7 @@ final class CreateDomainCommand extends CreateOrUpdateDomainCommand } setSoyTemplate(DomainCreateSoyInfo.getInstance(), DomainCreateSoyInfo.DOMAINCREATE); - addSoyRecord( - clientId, + SoyMapData soyMapData = new SoyMapData( "domain", domain, "period", period, @@ -92,7 +91,12 @@ final class CreateDomainCommand extends CreateOrUpdateDomainCommand "password", password, "currency", currency, "price", cost, - "dsRecords", DsRecord.convertToSoy(dsRecords))); + "dsRecords", DsRecord.convertToSoy(dsRecords), + "reason", reason); + if (requestedByRegistrar != null) { + soyMapData.put("requestedByRegistrar", requestedByRegistrar.toString()); + } + addSoyRecord(clientId, soyMapData); } } } diff --git a/core/src/main/java/google/registry/tools/CreateOrUpdateDomainCommand.java b/core/src/main/java/google/registry/tools/CreateOrUpdateDomainCommand.java index 2696fbeca..0becbea03 100644 --- a/core/src/main/java/google/registry/tools/CreateOrUpdateDomainCommand.java +++ b/core/src/main/java/google/registry/tools/CreateOrUpdateDomainCommand.java @@ -78,6 +78,17 @@ abstract class CreateOrUpdateDomainCommand extends MutatingEppToolCommand { converter = DsRecord.Converter.class) List dsRecords = new ArrayList<>(); + @Parameter( + names = {"--reason"}, + description = "Reason for the change.") + String reason; + + @Parameter( + names = {"--registrar_request"}, + description = "Whether the change was requested by a registrar.", + arity = 1) + Boolean requestedByRegistrar; + Set domains; @Override diff --git a/core/src/main/java/google/registry/tools/UpdateDomainCommand.java b/core/src/main/java/google/registry/tools/UpdateDomainCommand.java index 2462f7c39..d2b0be6e8 100644 --- a/core/src/main/java/google/registry/tools/UpdateDomainCommand.java +++ b/core/src/main/java/google/registry/tools/UpdateDomainCommand.java @@ -315,10 +315,14 @@ final class UpdateDomainCommand extends CreateOrUpdateDomainCommand { "secdns", secDns, "addDsRecords", DsRecord.convertToSoy(addDsRecords), "removeDsRecords", DsRecord.convertToSoy(removeDsRecords), - "removeAllDsRecords", clearDsRecords); + "removeAllDsRecords", clearDsRecords, + "reason", reason); if (autorenews != null) { soyMapData.put("autorenews", autorenews.toString()); } + if (requestedByRegistrar != null) { + soyMapData.put("requestedByRegistrar", requestedByRegistrar.toString()); + } addSoyRecord(clientId, soyMapData); } diff --git a/core/src/main/resources/google/registry/tools/soy/DomainCreate.soy b/core/src/main/resources/google/registry/tools/soy/DomainCreate.soy index fc34d4516..8703c81e7 100644 --- a/core/src/main/resources/google/registry/tools/soy/DomainCreate.soy +++ b/core/src/main/resources/google/registry/tools/soy/DomainCreate.soy @@ -27,6 +27,8 @@ {@param? currency: string} {@param? price: string} {@param dsRecords: list<[keyTag:int, alg:int, digestType:int, digest:string]>} + {@param? reason: string} + {@param? requestedByRegistrar: string} @@ -54,7 +56,7 @@ - {if length($dsRecords) > 0 or $price != null} + {if length($dsRecords) > 0 or $price != null or $reason or $requestedByRegistrar} {if $price != null} @@ -74,6 +76,16 @@ {/for} {/if} + {if $reason or $requestedByRegistrar} + + {if $reason} + {$reason} + {/if} + {if $requestedByRegistrar} + {$requestedByRegistrar} + {/if} + + {/if} {/if} RegistryTool diff --git a/core/src/main/resources/google/registry/tools/soy/DomainUpdate.soy b/core/src/main/resources/google/registry/tools/soy/DomainUpdate.soy index 62c984442..281d00b3c 100644 --- a/core/src/main/resources/google/registry/tools/soy/DomainUpdate.soy +++ b/core/src/main/resources/google/registry/tools/soy/DomainUpdate.soy @@ -36,6 +36,8 @@ {@param removeDsRecords: list<[keyTag:int, alg:int, digestType:int, digest:string]>} {@param removeAllDsRecords: bool} {@param? autorenews: string} + {@param? reason: string} + {@param? requestedByRegistrar: string} @@ -97,7 +99,7 @@ {/if} - {if $secdns or $autorenews} + {if $secdns or $autorenews or $reason or $requestedByRegistrar} {if $secdns} @@ -137,6 +139,16 @@ {$autorenews} {/if} + {if $reason or $requestedByRegistrar} + + {if $reason} + {$reason} + {/if} + {if $requestedByRegistrar} + {$requestedByRegistrar} + {/if} + + {/if} {/if} RegistryTool diff --git a/core/src/test/java/google/registry/tools/CreateDomainCommandTest.java b/core/src/test/java/google/registry/tools/CreateDomainCommandTest.java index fb827ea3c..71fd160a4 100644 --- a/core/src/test/java/google/registry/tools/CreateDomainCommandTest.java +++ b/core/src/test/java/google/registry/tools/CreateDomainCommandTest.java @@ -162,6 +162,20 @@ class CreateDomainCommandTest extends EppToolCommandTestCase + + + + + example.tld + 1 + crr-admin + crr-admin + crr-tech + + abcdefghijklmnop + + + + + + Creating test domain + false + + + RegistryTool + + diff --git a/core/src/test/resources/google/registry/tools/server/domain_update_change_metadata.xml b/core/src/test/resources/google/registry/tools/server/domain_update_change_metadata.xml new file mode 100644 index 000000000..e40072762 --- /dev/null +++ b/core/src/test/resources/google/registry/tools/server/domain_update_change_metadata.xml @@ -0,0 +1,24 @@ + + + + + + example.tld + + crr-admin + + 2fooBAR + + + + + + + Testing domain update + false + + + RegistryTool + +