blob: 8797cc77f230d1adf77d83d21308b500ca16cd51 [file] [log] [blame]
/*
* Copyright 2017, OpenCensus Authors
*
* 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 io.opencensus.exporter.trace.stackdriver;
import com.google.auth.Credentials;
import com.google.auth.oauth2.GoogleCredentials;
import com.google.cloud.ServiceOptions;
import com.google.common.annotations.VisibleForTesting;
import io.opencensus.trace.export.SpanExporter;
import io.opencensus.trace.export.SpanExporter.Handler;
import java.io.IOException;
/**
* An OpenCensus span exporter implementation which exports data to Stackdriver Trace.
*
* <p>Example of usage on Google Cloud VMs:
*
* <pre>{@code
* public static void main(String[] args) {
* StackdriverExporter.createAndRegisterWithProjectId("MyStackdriverProjectId");
* ... // Do work.
* }
* }</pre>
*
* @deprecated Deprecated due to inconsistent naming. Use {@link StackdriverTraceExporter}.
* @since 0.6
*/
@Deprecated
public final class StackdriverExporter {
/**
* Creates and registers the Stackdriver Trace exporter to the OpenCensus library for an explicit
* project ID and using explicit credentials. Only one Stackdriver exporter can be registered at
* any point.
*
* @param credentials a credentials used to authenticate API calls.
* @param projectId the cloud project id.
* @throws IllegalStateException if a Stackdriver exporter is already registered.
* @since 0.6
*/
public static void createAndRegisterWithCredentialsAndProjectId(
Credentials credentials, String projectId) throws IOException {
StackdriverTraceExporter.createAndRegister(
StackdriverTraceConfiguration.builder()
.setCredentials(credentials)
.setProjectId(projectId)
.build());
}
/**
* Creates and registers the Stackdriver Trace exporter to the OpenCensus library for an explicit
* project ID. Only one Stackdriver exporter can be registered at any point.
*
* <p>This uses the default application credentials see {@link
* GoogleCredentials#getApplicationDefault}.
*
* <p>This is equivalent with:
*
* <pre>{@code
* StackdriverExporter.createAndRegisterWithCredentialsAndProjectId(
* GoogleCredentials.getApplicationDefault(), projectId);
* }</pre>
*
* @param projectId the cloud project id.
* @throws IllegalStateException if a Stackdriver exporter is already registered.
* @since 0.6
*/
public static void createAndRegisterWithProjectId(String projectId) throws IOException {
StackdriverTraceExporter.createAndRegister(
StackdriverTraceConfiguration.builder()
.setCredentials(GoogleCredentials.getApplicationDefault())
.setProjectId(projectId)
.build());
}
/**
* Creates and registers the Stackdriver Trace exporter to the OpenCensus library. Only one
* Stackdriver exporter can be registered at any point.
*
* <p>This uses the default application credentials see {@link
* GoogleCredentials#getApplicationDefault}.
*
* <p>This uses the default project ID configured see {@link ServiceOptions#getDefaultProjectId}.
*
* <p>This is equivalent with:
*
* <pre>{@code
* StackdriverExporter.createAndRegisterWithProjectId(ServiceOptions.getDefaultProjectId());
* }</pre>
*
* @throws IllegalStateException if a Stackdriver exporter is already registered.
* @since 0.6
*/
public static void createAndRegister() throws IOException {
StackdriverTraceExporter.createAndRegister(
StackdriverTraceConfiguration.builder()
.setCredentials(GoogleCredentials.getApplicationDefault())
.setProjectId(ServiceOptions.getDefaultProjectId())
.build());
}
/**
* Registers the {@code StackdriverExporter}.
*
* @param spanExporter the instance of the {@code SpanExporter} where this service is registered.
*/
@VisibleForTesting
static void register(SpanExporter spanExporter, Handler handler) {
StackdriverTraceExporter.register(spanExporter, handler);
}
/**
* Unregisters the Stackdriver Trace exporter from the OpenCensus library.
*
* @throws IllegalStateException if a Stackdriver exporter is not registered.
* @since 0.6
*/
public static void unregister() {
StackdriverTraceExporter.unregister();
}
/**
* Unregisters the {@code StackdriverExporter}.
*
* @param spanExporter the instance of the {@code SpanExporter} from where this service is
* unregistered.
*/
@VisibleForTesting
static void unregister(SpanExporter spanExporter) {
StackdriverTraceExporter.unregister(spanExporter);
}
private StackdriverExporter() {}
}