diff --git a/core/build.gradle b/core/build.gradle index 3f3b25948..225841d52 100644 --- a/core/build.gradle +++ b/core/build.gradle @@ -796,6 +796,11 @@ if (environment == 'alpha') { mainClass: 'google.registry.beam.rde.RdePipeline', metaData : 'google/registry/beam/rde_pipeline_metadata.json' ], + validateDatastore : + [ + mainClass: 'google.registry.beam.comparedb.ValidateDatastorePipeline', + metaData: 'google/registry/beam/validate_datastore_pipeline_metadata.json' + ], ] project.tasks.create("stageBeamPipelines") { doLast { diff --git a/core/src/main/resources/google/registry/beam/validate_datastore_pipeline_metadata.json b/core/src/main/resources/google/registry/beam/validate_datastore_pipeline_metadata.json new file mode 100644 index 000000000..789129acc --- /dev/null +++ b/core/src/main/resources/google/registry/beam/validate_datastore_pipeline_metadata.json @@ -0,0 +1,42 @@ +{ + "name": "Validate Datastore with Cloud SQL", + "description": "An Apache Beam batch pipeline that compares Datastore with the primary Cloud SQL database.", + "parameters": [ + { + "name": "registryEnvironment", + "label": "The Registry environment.", + "helpText": "The Registry environment.", + "is_optional": false, + "regexes": [ + "^PRODUCTION|SANDBOX|CRASH|QA|ALPHA$" + ] + }, + { + "name": "isolationOverride", + "label": "The desired SQL transaction isolation level.", + "helpText": "The desired SQL transaction isolation level.", + "is_optional": true, + "regexes": [ + "^[0-9A-Z_]+$" + ] + }, + { + "name": "sqlSnapshotId", + "label": "The ID of an exported Cloud SQL (Postgresql) snapshot.", + "helpText": "The ID of an exported Cloud SQL (Postgresql) snapshot.", + "is_optional": true + }, + { + "name": "latestCommitLogTimestamp", + "label": "Nomulus CommitLog start time", + "helpText": "The latest entity update time allowed for inclusion in validation, in ISO8601 format.", + "is_optional": false + }, + { + "name": "comparisonStartTimestamp", + "label": "Only entities updated at or after this time are included for validation.", + "helpText": "The earliest entity update time allowed for inclusion in validation, in ISO8601 format.", + "is_optional": true + } + ] +} diff --git a/release/cloudbuild-nomulus.yaml b/release/cloudbuild-nomulus.yaml index c016445ef..cd8b8c9dc 100644 --- a/release/cloudbuild-nomulus.yaml +++ b/release/cloudbuild-nomulus.yaml @@ -96,7 +96,9 @@ steps: google.registry.beam.invoicing.InvoicingPipeline \ google/registry/beam/invoicing_pipeline_metadata.json \ google.registry.beam.rde.RdePipeline \ - google/registry/beam/rde_pipeline_metadata.json + google/registry/beam/rde_pipeline_metadata.json \ + google.registry.beam.comparedb.ValidateDatastorePipeline \ + google/registry/beam/validate_datastore_pipeline_metadata.json # Tentatively build and publish Cloud SQL schema jar here, before schema release # process is finalized. Also publish nomulus:core jars that are needed for # server/schema compatibility tests.