diff --git a/google/monitoring/BUILD b/google/monitoring/BUILD new file mode 100644 index 000000000..44625bee6 --- /dev/null +++ b/google/monitoring/BUILD @@ -0,0 +1,11 @@ +package(default_visibility = ["//visibility:public"]) + +java_library( + name = "monitoring_java_lib", + exports = [ + "@google_api_services_monitoring//jar", + ], + runtime_deps = [ + "@google_api_client//jar", + ], +) diff --git a/java/google/registry/module/backend/BackendComponent.java b/java/google/registry/module/backend/BackendComponent.java index 5680b1522..d79e7e5fa 100644 --- a/java/google/registry/module/backend/BackendComponent.java +++ b/java/google/registry/module/backend/BackendComponent.java @@ -27,6 +27,7 @@ import google.registry.groups.GroupsModule; import google.registry.groups.GroupssettingsModule; import google.registry.keyring.api.KeyModule; import google.registry.keyring.api.VoidKeyringModule; +import google.registry.monitoring.whitebox.StackdriverModule; import google.registry.rde.JSchModule; import google.registry.request.Modules.AppIdentityCredentialModule; import google.registry.request.Modules.DatastoreServiceModule; @@ -45,30 +46,32 @@ import javax.inject.Singleton; /** Dagger component with instance lifetime for "backend" App Engine module. */ @Singleton @Component( - modules = { - AppIdentityCredentialModule.class, - BigqueryModule.class, - ConfigModule.class, - DatastoreServiceModule.class, - DirectoryModule.class, - DriveModule.class, - GcsServiceModule.class, - GoogleCredentialModule.class, - GroupsModule.class, - GroupssettingsModule.class, - JSchModule.class, - Jackson2Module.class, - KeyModule.class, - ModulesServiceModule.class, - SpreadsheetServiceModule.class, - SystemClockModule.class, - SystemSleeperModule.class, - URLFetchServiceModule.class, - UrlFetchTransportModule.class, - UseAppIdentityCredentialForGoogleApisModule.class, - VoidDnsWriterModule.class, - VoidKeyringModule.class, - }) + modules = { + AppIdentityCredentialModule.class, + BigqueryModule.class, + ConfigModule.class, + DatastoreServiceModule.class, + DirectoryModule.class, + DriveModule.class, + GcsServiceModule.class, + GoogleCredentialModule.class, + GroupsModule.class, + GroupssettingsModule.class, + JSchModule.class, + Jackson2Module.class, + KeyModule.class, + ModulesServiceModule.class, + SpreadsheetServiceModule.class, + StackdriverModule.class, + SystemClockModule.class, + SystemSleeperModule.class, + URLFetchServiceModule.class, + UrlFetchTransportModule.class, + UseAppIdentityCredentialForGoogleApisModule.class, + VoidDnsWriterModule.class, + VoidKeyringModule.class, + } +) interface BackendComponent { BackendRequestComponent startRequest(RequestModule requestModule); } diff --git a/java/google/registry/monitoring/whitebox/BUILD b/java/google/registry/monitoring/whitebox/BUILD index 3e9238d7f..fc9ab0c78 100644 --- a/java/google/registry/monitoring/whitebox/BUILD +++ b/java/google/registry/monitoring/whitebox/BUILD @@ -10,6 +10,9 @@ java_library( srcs = glob(["*.java"]), deps = [ "//apiserving/discoverydata/bigquery:bigqueryv2", + "//google/monitoring:monitoring_java_lib", + "//java/com/google/api/client/http", + "//java/com/google/api/client/json", "//java/com/google/api/client/util", "//java/com/google/common/annotations", "//java/com/google/common/base", diff --git a/java/google/registry/monitoring/whitebox/StackdriverModule.java b/java/google/registry/monitoring/whitebox/StackdriverModule.java new file mode 100644 index 000000000..8989a0bf3 --- /dev/null +++ b/java/google/registry/monitoring/whitebox/StackdriverModule.java @@ -0,0 +1,54 @@ +// Copyright 2016 The Domain Registry 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.monitoring.whitebox; + +import com.google.api.client.http.HttpRequestInitializer; +import com.google.api.client.http.HttpTransport; +import com.google.api.client.json.JsonFactory; +import com.google.api.services.monitoring.v3.Monitoring; +import com.google.api.services.monitoring.v3.MonitoringScopes; + +import dagger.Module; +import dagger.Provides; +import dagger.multibindings.ElementsIntoSet; + +import google.registry.config.ConfigModule.Config; +import google.registry.request.OAuthScopes; + +import java.util.Set; + +/** Dagger module for Google Stackdriver service connection objects. */ +@Module +public final class StackdriverModule { + + /** Provides OAuth2 scopes for the Stackdriver service needed by Domain Registry. */ + @Provides + @ElementsIntoSet + @OAuthScopes + static Set provideStackdriverOAuthScopes() { + return MonitoringScopes.all(); + } + + @Provides + static Monitoring provideMonitoring( + HttpTransport transport, + JsonFactory jsonFactory, + HttpRequestInitializer httpRequestInitializer, + @Config("projectId") String projectId) { + return new Monitoring.Builder(transport, jsonFactory, httpRequestInitializer) + .setApplicationName(projectId) + .build(); + } +} diff --git a/java/google/registry/repositories.bzl b/java/google/registry/repositories.bzl index 51ed7f592..406fc894b 100644 --- a/java/google/registry/repositories.bzl +++ b/java/google/registry/repositories.bzl @@ -210,6 +210,12 @@ def domain_registry_repositories(): sha1 = "098adf9128428643992ae6fa0878a7f45e7cec7d", ) + native.maven_jar( + name = "google_api_services_monitoring", + artifact = "com.google.apis:google-api-services-monitoring:v3-rev6-1.21.0", + sha1 = "d8490745206ca5b1bfedad650dd64a69737a4b20", + ) + native.maven_jar( name = "google_api_services_storage", artifact = "com.google.apis:google-api-services-storage:v1-rev15-1.19.0",