// Copyright 2018 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.reporting; import com.google.appengine.api.taskqueue.QueueFactory; import com.google.appengine.api.taskqueue.TaskOptions; import org.joda.time.Duration; import org.joda.time.YearMonth; /** Static methods common to various reporting tasks. */ public class ReportingUtils { private static final int ENQUEUE_DELAY_MINUTES = 10; /** Enqueues a task that takes a Beam jobId and the {@link YearMonth} as parameters. */ public static void enqueueBeamReportingTask(String path, String jobId, YearMonth yearMonth) { TaskOptions publishTask = TaskOptions.Builder.withUrl(path) .method(TaskOptions.Method.POST) // Dataflow jobs tend to take about 10 minutes to complete. .countdownMillis(Duration.standardMinutes(ENQUEUE_DELAY_MINUTES).getMillis()) .param(ReportingModule.PARAM_JOB_ID, jobId) // Need to pass this through to ensure transitive yearMonth dependencies are satisfied. .param(ReportingModule.PARAM_YEAR_MONTH, yearMonth.toString()); QueueFactory.getQueue(ReportingModule.BEAM_QUEUE).add(publishTask); } }