Add Dataflow path to generate overall monthly invoice

This forks off the results of the billing_events query from Bigquery and generates the overall invoice for the month.

This also turns the ad hoc beam binary into a proper Nomulus command, allowing us to @Inject from the RegsistryToolComponent and thus template the BillingEvent Bigquery query.

Next steps:
- Add the beam package to the open source build
  - That will likely require updates to the open source jars, since I'm using features from 2.2.0 which was only just released.

-------------
Created by MOE: https://github.com/google/moe
MOE_MIGRATED_REVID=178798943
This commit is contained in:
larryruili 2017-12-12 12:35:56 -08:00 committed by jianglai
parent 08b068b7bf
commit 026f249955
4 changed files with 34 additions and 0 deletions

View file

@ -36,6 +36,7 @@ java_library(
visibility = [":allowed-tools"], visibility = [":allowed-tools"],
deps = [ deps = [
"//java/google/registry/backup", "//java/google/registry/backup",
"//java/google/registry/beam",
"//java/google/registry/bigquery", "//java/google/registry/bigquery",
"//java/google/registry/config", "//java/google/registry/config",
"//java/google/registry/dns", "//java/google/registry/dns",

View file

@ -0,0 +1,31 @@
// 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.tools;
import com.beust.jcommander.Parameters;
import google.registry.beam.InvoicingPipeline;
import javax.inject.Inject;
/** Nomulus command that deploys the {@link google.registry.beam.InvoicingPipeline} template. */
@Parameters(commandDescription = "Deploy the invoicing pipeline to GCS.")
public class DeployInvoicingPipelineCommand implements Command {
@Inject InvoicingPipeline invoicingPipeline;
@Override
public void run() throws Exception {
invoicingPipeline.deploy();
}
}

View file

@ -55,6 +55,7 @@ public final class RegistryTool {
.put("delete_premium_list", DeletePremiumListCommand.class) .put("delete_premium_list", DeletePremiumListCommand.class)
.put("delete_reserved_list", DeleteReservedListCommand.class) .put("delete_reserved_list", DeleteReservedListCommand.class)
.put("delete_tld", DeleteTldCommand.class) .put("delete_tld", DeleteTldCommand.class)
.put("deploy_invoicing_pipeline", DeployInvoicingPipelineCommand.class)
.put("domain_application_info", DomainApplicationInfoCommand.class) .put("domain_application_info", DomainApplicationInfoCommand.class)
.put("domain_check", DomainCheckCommand.class) .put("domain_check", DomainCheckCommand.class)
.put("domain_check_claims", DomainCheckClaimsCommand.class) .put("domain_check_claims", DomainCheckClaimsCommand.class)

View file

@ -81,6 +81,7 @@ interface RegistryToolComponent {
void inject(CreateDomainCommand command); void inject(CreateDomainCommand command);
void inject(CreateLrpTokensCommand command); void inject(CreateLrpTokensCommand command);
void inject(CreateTldCommand command); void inject(CreateTldCommand command);
void inject(DeployInvoicingPipelineCommand command);
void inject(EncryptEscrowDepositCommand command); void inject(EncryptEscrowDepositCommand command);
void inject(GenerateApplicationsReportCommand command); void inject(GenerateApplicationsReportCommand command);
void inject(GenerateDnsReportCommand command); void inject(GenerateDnsReportCommand command);