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

View file

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

View file

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

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