Create Stackdriver module and inject it into backend module

This adds Stackdriver as a DI module into the registry codebase. This is a
necessary prerequisite for using Stackdriver based monitoring. For now, I'm
only adding it to the backend module as it will be more work to add it to the
frontend module.
-------------
Created by MOE: https://github.com/google/moe
MOE_MIGRATED_REVID=126730925
This commit is contained in:
shikhman 2016-07-06 13:24:20 -07:00 committed by Ben McIlwain
parent 9fcb8984ad
commit aa1b5229a0
5 changed files with 101 additions and 24 deletions

11
google/monitoring/BUILD Normal file
View file

@ -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",
],
)

View file

@ -27,6 +27,7 @@ import google.registry.groups.GroupsModule;
import google.registry.groups.GroupssettingsModule; import google.registry.groups.GroupssettingsModule;
import google.registry.keyring.api.KeyModule; import google.registry.keyring.api.KeyModule;
import google.registry.keyring.api.VoidKeyringModule; import google.registry.keyring.api.VoidKeyringModule;
import google.registry.monitoring.whitebox.StackdriverModule;
import google.registry.rde.JSchModule; import google.registry.rde.JSchModule;
import google.registry.request.Modules.AppIdentityCredentialModule; import google.registry.request.Modules.AppIdentityCredentialModule;
import google.registry.request.Modules.DatastoreServiceModule; import google.registry.request.Modules.DatastoreServiceModule;
@ -61,6 +62,7 @@ import javax.inject.Singleton;
KeyModule.class, KeyModule.class,
ModulesServiceModule.class, ModulesServiceModule.class,
SpreadsheetServiceModule.class, SpreadsheetServiceModule.class,
StackdriverModule.class,
SystemClockModule.class, SystemClockModule.class,
SystemSleeperModule.class, SystemSleeperModule.class,
URLFetchServiceModule.class, URLFetchServiceModule.class,
@ -68,7 +70,8 @@ import javax.inject.Singleton;
UseAppIdentityCredentialForGoogleApisModule.class, UseAppIdentityCredentialForGoogleApisModule.class,
VoidDnsWriterModule.class, VoidDnsWriterModule.class,
VoidKeyringModule.class, VoidKeyringModule.class,
}) }
)
interface BackendComponent { interface BackendComponent {
BackendRequestComponent startRequest(RequestModule requestModule); BackendRequestComponent startRequest(RequestModule requestModule);
} }

View file

@ -10,6 +10,9 @@ java_library(
srcs = glob(["*.java"]), srcs = glob(["*.java"]),
deps = [ deps = [
"//apiserving/discoverydata/bigquery:bigqueryv2", "//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/api/client/util",
"//java/com/google/common/annotations", "//java/com/google/common/annotations",
"//java/com/google/common/base", "//java/com/google/common/base",

View file

@ -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<String> 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();
}
}

View file

@ -210,6 +210,12 @@ def domain_registry_repositories():
sha1 = "098adf9128428643992ae6fa0878a7f45e7cec7d", 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( native.maven_jar(
name = "google_api_services_storage", name = "google_api_services_storage",
artifact = "com.google.apis:google-api-services-storage:v1-rev15-1.19.0", artifact = "com.google.apis:google-api-services-storage:v1-rev15-1.19.0",