mirror of
https://github.com/google/nomulus.git
synced 2025-05-01 12:37:52 +02:00
Add server end points to backup Datastore using managed-export mechanism. A cron job is defined in Alpha to run daily exports using this implementation. Existing backup is left running. The new backups are saved to a new set of locations: - GCS bucket: gs://PROJECT-ID-datastore-backups - Big Query data set: datastore_backups - Big Query latest back up view name: latest_datastore_backup Also, the names of Bigquery tables now use the export timestamp assigned by Datastore. E.g., 2018_12_05T23_56_18_50532_ContactResource, After the new import mechanism is implemented and the back-restore flow is tested, we will stop the existing backup runs and deploy the new implementation to all environments. ------------- Created by MOE: https://github.com/google/moe MOE_MIGRATED_REVID=224932957
120 lines
4.6 KiB
Java
120 lines
4.6 KiB
Java
// Copyright 2017 The Nomulus Authors. All Rights Reserved.
|
|
//
|
|
// Licensed under the Apache License, Version 2.0 (the "License");
|
|
// you may not use this file except in compliance with the License.
|
|
// You may obtain a copy of the License at
|
|
//
|
|
// http://www.apache.org/licenses/LICENSE-2.0
|
|
//
|
|
// Unless required by applicable law or agreed to in writing, software
|
|
// distributed under the License is distributed on an "AS IS" BASIS,
|
|
// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
|
|
// See the License for the specific language governing permissions and
|
|
// limitations under the License.
|
|
|
|
package google.registry.export;
|
|
|
|
import static google.registry.export.BigqueryPollJobAction.CHAINED_TASK_QUEUE_HEADER;
|
|
import static google.registry.export.BigqueryPollJobAction.JOB_ID_HEADER;
|
|
import static google.registry.export.BigqueryPollJobAction.PROJECT_ID_HEADER;
|
|
import static google.registry.export.CheckSnapshotAction.CHECK_SNAPSHOT_KINDS_TO_LOAD_PARAM;
|
|
import static google.registry.export.CheckSnapshotAction.CHECK_SNAPSHOT_NAME_PARAM;
|
|
import static google.registry.export.LoadSnapshotAction.LOAD_SNAPSHOT_FILE_PARAM;
|
|
import static google.registry.export.LoadSnapshotAction.LOAD_SNAPSHOT_ID_PARAM;
|
|
import static google.registry.export.LoadSnapshotAction.LOAD_SNAPSHOT_KINDS_PARAM;
|
|
import static google.registry.export.UpdateSnapshotViewAction.UPDATE_SNAPSHOT_DATASET_ID_PARAM;
|
|
import static google.registry.export.UpdateSnapshotViewAction.UPDATE_SNAPSHOT_KIND_PARAM;
|
|
import static google.registry.export.UpdateSnapshotViewAction.UPDATE_SNAPSHOT_TABLE_ID_PARAM;
|
|
import static google.registry.export.UpdateSnapshotViewAction.UPDATE_SNAPSHOT_VIEWNAME_PARAM;
|
|
import static google.registry.export.UploadDatastoreBackupAction.UPLOAD_BACKUP_FOLDER_PARAM;
|
|
import static google.registry.request.RequestParameters.extractRequiredHeader;
|
|
import static google.registry.request.RequestParameters.extractRequiredParameter;
|
|
|
|
import dagger.Module;
|
|
import dagger.Provides;
|
|
import google.registry.request.Header;
|
|
import google.registry.request.Parameter;
|
|
import javax.servlet.http.HttpServletRequest;
|
|
|
|
/** Dagger module for data export tasks. */
|
|
@Module
|
|
public final class ExportRequestModule {
|
|
|
|
@Provides
|
|
@Parameter(UPDATE_SNAPSHOT_DATASET_ID_PARAM)
|
|
static String provideUpdateSnapshotDatasetId(HttpServletRequest req) {
|
|
return extractRequiredParameter(req, UPDATE_SNAPSHOT_DATASET_ID_PARAM);
|
|
}
|
|
|
|
@Provides
|
|
@Parameter(UPDATE_SNAPSHOT_TABLE_ID_PARAM)
|
|
static String provideUpdateSnapshotTableId(HttpServletRequest req) {
|
|
return extractRequiredParameter(req, UPDATE_SNAPSHOT_TABLE_ID_PARAM);
|
|
}
|
|
|
|
@Provides
|
|
@Parameter(UPDATE_SNAPSHOT_KIND_PARAM)
|
|
static String provideUpdateSnapshotKind(HttpServletRequest req) {
|
|
return extractRequiredParameter(req, UPDATE_SNAPSHOT_KIND_PARAM);
|
|
}
|
|
|
|
@Provides
|
|
@Parameter(UPDATE_SNAPSHOT_VIEWNAME_PARAM)
|
|
static String provideUpdateSnapshotViewName(HttpServletRequest req) {
|
|
return extractRequiredParameter(req, UPDATE_SNAPSHOT_VIEWNAME_PARAM);
|
|
}
|
|
|
|
@Provides
|
|
@Parameter(LOAD_SNAPSHOT_FILE_PARAM)
|
|
static String provideLoadSnapshotFile(HttpServletRequest req) {
|
|
return extractRequiredParameter(req, LOAD_SNAPSHOT_FILE_PARAM);
|
|
}
|
|
|
|
@Provides
|
|
@Parameter(UPLOAD_BACKUP_FOLDER_PARAM)
|
|
static String provideSnapshotUrlPrefix(HttpServletRequest req) {
|
|
return extractRequiredParameter(req, UPLOAD_BACKUP_FOLDER_PARAM);
|
|
}
|
|
|
|
@Provides
|
|
@Parameter(LOAD_SNAPSHOT_ID_PARAM)
|
|
static String provideLoadSnapshotId(HttpServletRequest req) {
|
|
return extractRequiredParameter(req, LOAD_SNAPSHOT_ID_PARAM);
|
|
}
|
|
|
|
@Provides
|
|
@Parameter(LOAD_SNAPSHOT_KINDS_PARAM)
|
|
static String provideLoadSnapshotKinds(HttpServletRequest req) {
|
|
return extractRequiredParameter(req, LOAD_SNAPSHOT_KINDS_PARAM);
|
|
}
|
|
|
|
@Provides
|
|
@Parameter(CHECK_SNAPSHOT_NAME_PARAM)
|
|
static String provideCheckSnapshotName(HttpServletRequest req) {
|
|
return extractRequiredParameter(req, CHECK_SNAPSHOT_NAME_PARAM);
|
|
}
|
|
|
|
@Provides
|
|
@Parameter(CHECK_SNAPSHOT_KINDS_TO_LOAD_PARAM)
|
|
static String provideCheckSnapshotKindsToLoad(HttpServletRequest req) {
|
|
return extractRequiredParameter(req, CHECK_SNAPSHOT_KINDS_TO_LOAD_PARAM);
|
|
}
|
|
|
|
@Provides
|
|
@Header(CHAINED_TASK_QUEUE_HEADER)
|
|
static String provideChainedTaskQueue(HttpServletRequest req) {
|
|
return extractRequiredHeader(req, CHAINED_TASK_QUEUE_HEADER);
|
|
}
|
|
|
|
@Provides
|
|
@Header(JOB_ID_HEADER)
|
|
static String provideJobId(HttpServletRequest req) {
|
|
return extractRequiredHeader(req, JOB_ID_HEADER);
|
|
}
|
|
|
|
@Provides
|
|
@Header(PROJECT_ID_HEADER)
|
|
static String provideProjectId(HttpServletRequest req) {
|
|
return extractRequiredHeader(req, PROJECT_ID_HEADER);
|
|
}
|
|
}
|