Moving IDeferredTracerProviderBuilder to API (#2100)
* Moved IDeferredTracerProviderBuilder to API project. Co-authored-by: Cijo Thomas <cithomas@microsoft.com>
This commit is contained in:
parent
b6d4e88dce
commit
e481492380
|
|
@ -1,2 +1,4 @@
|
|||
abstract OpenTelemetry.Trace.TracerProviderBuilder.AddLegacySource(string operationName) -> OpenTelemetry.Trace.TracerProviderBuilder
|
||||
OpenTelemetry.Trace.IDeferredTracerProviderBuilder
|
||||
OpenTelemetry.Trace.IDeferredTracerProviderBuilder.Configure(System.Action<System.IServiceProvider, OpenTelemetry.Trace.TracerProviderBuilder> configure) -> OpenTelemetry.Trace.TracerProviderBuilder
|
||||
OpenTelemetry.Trace.TracerProviderBuilder.TracerProviderBuilder() -> void
|
||||
|
|
@ -1,2 +1,4 @@
|
|||
abstract OpenTelemetry.Trace.TracerProviderBuilder.AddLegacySource(string operationName) -> OpenTelemetry.Trace.TracerProviderBuilder
|
||||
OpenTelemetry.Trace.IDeferredTracerProviderBuilder
|
||||
OpenTelemetry.Trace.IDeferredTracerProviderBuilder.Configure(System.Action<System.IServiceProvider, OpenTelemetry.Trace.TracerProviderBuilder> configure) -> OpenTelemetry.Trace.TracerProviderBuilder
|
||||
OpenTelemetry.Trace.TracerProviderBuilder.TracerProviderBuilder() -> void
|
||||
|
|
@ -9,6 +9,9 @@ please check the latest changes
|
|||
|
||||
## Unreleased
|
||||
|
||||
* Added `IDeferredTracerProviderBuilder`.
|
||||
([#2058](https://github.com/open-telemetry/opentelemetry-dotnet/pull/2100))
|
||||
|
||||
## 1.1.0-beta4
|
||||
|
||||
Released 2021-Jun-09
|
||||
|
|
|
|||
|
|
@ -15,9 +15,6 @@
|
|||
// </copyright>
|
||||
|
||||
using System;
|
||||
#if NET461_OR_GREATER || NETSTANDARD2_0
|
||||
using Microsoft.Extensions.DependencyInjection;
|
||||
#endif
|
||||
|
||||
namespace OpenTelemetry.Trace
|
||||
{
|
||||
|
|
@ -28,13 +25,6 @@ namespace OpenTelemetry.Trace
|
|||
/// </summary>
|
||||
public interface IDeferredTracerProviderBuilder
|
||||
{
|
||||
#if NET461_OR_GREATER || NETSTANDARD2_0
|
||||
/// <summary>
|
||||
/// Gets the application <see cref="IServiceCollection"/>.
|
||||
/// </summary>
|
||||
IServiceCollection Services { get; }
|
||||
#endif
|
||||
|
||||
/// <summary>
|
||||
/// Register a callback action to configure the <see
|
||||
/// cref="TracerProviderBuilder"/> once the application <see
|
||||
|
|
@ -6,4 +6,5 @@ static OpenTelemetry.Trace.TracerProviderBuilderExtensions.AddInstrumentation<T>
|
|||
static OpenTelemetry.Trace.TracerProviderBuilderExtensions.AddProcessor<T>(this OpenTelemetry.Trace.TracerProviderBuilder tracerProviderBuilder) -> OpenTelemetry.Trace.TracerProviderBuilder
|
||||
static OpenTelemetry.Trace.TracerProviderBuilderExtensions.Build(this OpenTelemetry.Trace.TracerProviderBuilder tracerProviderBuilder, System.IServiceProvider serviceProvider) -> OpenTelemetry.Trace.TracerProvider
|
||||
static OpenTelemetry.Trace.TracerProviderBuilderExtensions.Configure(this OpenTelemetry.Trace.TracerProviderBuilder tracerProviderBuilder, System.Action<System.IServiceProvider, OpenTelemetry.Trace.TracerProviderBuilder> configure) -> OpenTelemetry.Trace.TracerProviderBuilder
|
||||
static OpenTelemetry.Trace.TracerProviderBuilderExtensions.GetServices(this OpenTelemetry.Trace.TracerProviderBuilder tracerProviderBuilder) -> Microsoft.Extensions.DependencyInjection.IServiceCollection
|
||||
static OpenTelemetry.Trace.TracerProviderBuilderExtensions.SetSampler<T>(this OpenTelemetry.Trace.TracerProviderBuilder tracerProviderBuilder) -> OpenTelemetry.Trace.TracerProviderBuilder
|
||||
|
|
|
|||
|
|
@ -2,6 +2,9 @@
|
|||
|
||||
## Unreleased
|
||||
|
||||
* Added `GetServices` extension.
|
||||
([#2058](https://github.com/open-telemetry/opentelemetry-dotnet/pull/2100))
|
||||
|
||||
## 1.0.0-rc5
|
||||
|
||||
Released 2021-Jun-09
|
||||
|
|
|
|||
|
|
@ -65,21 +65,18 @@ from the application `IServiceCollection` so any services registered in the
|
|||
|
||||
Library authors may want to configure the OpenTelemetry `TracerProvider` and
|
||||
register application services to provide more complex features. This can be
|
||||
accomplished concisely by casting the `TracerProviderBuilder` into an
|
||||
`IDeferredTracerProviderBuilder` instance in an extension method like this:
|
||||
accomplished concisely by using the `TracerProviderBuilder.GetServices`
|
||||
extension method inside of a more general `TracerProviderBuilder` configuration
|
||||
extension like this:
|
||||
|
||||
```csharp
|
||||
public static class MyLibraryExtensions
|
||||
{
|
||||
public static TracerProviderBuilder AddMyFeature(this TracerProviderBuilder tracerProviderBuilder)
|
||||
{
|
||||
if (!(tracerProviderBuilder is IDeferredTracerProviderBuilder deferredTracerProviderBuilder))
|
||||
{
|
||||
throw new NotSupportedException(
|
||||
"MyFeature requires an IDeferredTracerProviderBuilder instance.");
|
||||
}
|
||||
|
||||
deferredTracerProviderBuilder.Services
|
||||
(tracerProviderBuilder.GetServices()
|
||||
?? throw new NotSupportedException(
|
||||
"MyFeature requires a hosting TracerProviderBuilder instance."))
|
||||
.AddHostedService<MyHostedService>()
|
||||
.AddSingleton<MyService>()
|
||||
.AddSingleton<MyProcessor>()
|
||||
|
|
|
|||
|
|
@ -97,6 +97,23 @@ namespace OpenTelemetry.Trace
|
|||
return tracerProviderBuilder;
|
||||
}
|
||||
|
||||
/// <summary>
|
||||
/// Gets the application <see cref="IServiceCollection"/> attached to
|
||||
/// the <see cref="TracerProviderBuilder"/>.
|
||||
/// </summary>
|
||||
/// <param name="tracerProviderBuilder"><see cref="TracerProviderBuilder"/>.</param>
|
||||
/// <returns><see cref="IServiceCollection"/> or <see langword="null"/>
|
||||
/// if services are unavailable.</returns>
|
||||
public static IServiceCollection GetServices(this TracerProviderBuilder tracerProviderBuilder)
|
||||
{
|
||||
if (tracerProviderBuilder is TracerProviderBuilderHosting tracerProviderBuilderHosting)
|
||||
{
|
||||
return tracerProviderBuilderHosting.Services;
|
||||
}
|
||||
|
||||
return null;
|
||||
}
|
||||
|
||||
/// <summary>
|
||||
/// Run the configured actions to initialize the <see cref="TracerProvider"/>.
|
||||
/// </summary>
|
||||
|
|
|
|||
|
|
@ -1,5 +1,3 @@
|
|||
OpenTelemetry.Trace.IDeferredTracerProviderBuilder
|
||||
OpenTelemetry.Trace.IDeferredTracerProviderBuilder.Configure(System.Action<System.IServiceProvider, OpenTelemetry.Trace.TracerProviderBuilder> configure) -> OpenTelemetry.Trace.TracerProviderBuilder
|
||||
OpenTelemetry.Trace.ParentBasedSampler.ParentBasedSampler(OpenTelemetry.Trace.Sampler rootSampler, OpenTelemetry.Trace.Sampler remoteParentSampled = null, OpenTelemetry.Trace.Sampler remoteParentNotSampled = null, OpenTelemetry.Trace.Sampler localParentSampled = null, OpenTelemetry.Trace.Sampler localParentNotSampled = null) -> void
|
||||
OpenTelemetry.Trace.TracerProviderBuilderBase
|
||||
OpenTelemetry.Trace.TracerProviderBuilderBase.AddInstrumentation(string instrumentationName, string instrumentationVersion, System.Func<object> instrumentationFactory) -> OpenTelemetry.Trace.TracerProviderBuilder
|
||||
|
|
|
|||
|
|
@ -1,5 +1,3 @@
|
|||
OpenTelemetry.Trace.IDeferredTracerProviderBuilder
|
||||
OpenTelemetry.Trace.IDeferredTracerProviderBuilder.Configure(System.Action<System.IServiceProvider, OpenTelemetry.Trace.TracerProviderBuilder> configure) -> OpenTelemetry.Trace.TracerProviderBuilder
|
||||
OpenTelemetry.Trace.ParentBasedSampler.ParentBasedSampler(OpenTelemetry.Trace.Sampler rootSampler, OpenTelemetry.Trace.Sampler remoteParentSampled = null, OpenTelemetry.Trace.Sampler remoteParentNotSampled = null, OpenTelemetry.Trace.Sampler localParentSampled = null, OpenTelemetry.Trace.Sampler localParentNotSampled = null) -> void
|
||||
OpenTelemetry.Trace.TracerProviderBuilderBase
|
||||
OpenTelemetry.Trace.TracerProviderBuilderBase.AddInstrumentation(string instrumentationName, string instrumentationVersion, System.Func<object> instrumentationFactory) -> OpenTelemetry.Trace.TracerProviderBuilder
|
||||
|
|
|
|||
|
|
@ -19,9 +19,6 @@ OpenTelemetry.Logs.OpenTelemetryLoggerOptions.IncludeScopes.set -> void
|
|||
OpenTelemetry.Logs.OpenTelemetryLoggerOptions.ParseStateValues.get -> bool
|
||||
OpenTelemetry.Logs.OpenTelemetryLoggerOptions.ParseStateValues.set -> void
|
||||
OpenTelemetry.Logs.OpenTelemetryLoggerOptions.SetResourceBuilder(OpenTelemetry.Resources.ResourceBuilder resourceBuilder) -> OpenTelemetry.Logs.OpenTelemetryLoggerOptions
|
||||
OpenTelemetry.Trace.IDeferredTracerProviderBuilder
|
||||
OpenTelemetry.Trace.IDeferredTracerProviderBuilder.Configure(System.Action<System.IServiceProvider, OpenTelemetry.Trace.TracerProviderBuilder> configure) -> OpenTelemetry.Trace.TracerProviderBuilder
|
||||
OpenTelemetry.Trace.IDeferredTracerProviderBuilder.Services.get -> Microsoft.Extensions.DependencyInjection.IServiceCollection
|
||||
OpenTelemetry.Trace.ParentBasedSampler.ParentBasedSampler(OpenTelemetry.Trace.Sampler rootSampler, OpenTelemetry.Trace.Sampler remoteParentSampled = null, OpenTelemetry.Trace.Sampler remoteParentNotSampled = null, OpenTelemetry.Trace.Sampler localParentSampled = null, OpenTelemetry.Trace.Sampler localParentNotSampled = null) -> void
|
||||
OpenTelemetry.Trace.TracerProviderBuilderBase
|
||||
OpenTelemetry.Trace.TracerProviderBuilderBase.AddInstrumentation(string instrumentationName, string instrumentationVersion, System.Func<object> instrumentationFactory) -> OpenTelemetry.Trace.TracerProviderBuilder
|
||||
|
|
|
|||
|
|
@ -19,9 +19,6 @@ OpenTelemetry.Logs.OpenTelemetryLoggerOptions.IncludeScopes.set -> void
|
|||
OpenTelemetry.Logs.OpenTelemetryLoggerOptions.ParseStateValues.get -> bool
|
||||
OpenTelemetry.Logs.OpenTelemetryLoggerOptions.ParseStateValues.set -> void
|
||||
OpenTelemetry.Logs.OpenTelemetryLoggerOptions.SetResourceBuilder(OpenTelemetry.Resources.ResourceBuilder resourceBuilder) -> OpenTelemetry.Logs.OpenTelemetryLoggerOptions
|
||||
OpenTelemetry.Trace.IDeferredTracerProviderBuilder
|
||||
OpenTelemetry.Trace.IDeferredTracerProviderBuilder.Configure(System.Action<System.IServiceProvider, OpenTelemetry.Trace.TracerProviderBuilder> configure) -> OpenTelemetry.Trace.TracerProviderBuilder
|
||||
OpenTelemetry.Trace.IDeferredTracerProviderBuilder.Services.get -> Microsoft.Extensions.DependencyInjection.IServiceCollection
|
||||
OpenTelemetry.Trace.ParentBasedSampler.ParentBasedSampler(OpenTelemetry.Trace.Sampler rootSampler, OpenTelemetry.Trace.Sampler remoteParentSampled = null, OpenTelemetry.Trace.Sampler remoteParentNotSampled = null, OpenTelemetry.Trace.Sampler localParentSampled = null, OpenTelemetry.Trace.Sampler localParentNotSampled = null) -> void
|
||||
OpenTelemetry.Trace.TracerProviderBuilderBase
|
||||
OpenTelemetry.Trace.TracerProviderBuilderBase.AddInstrumentation(string instrumentationName, string instrumentationVersion, System.Func<object> instrumentationFactory) -> OpenTelemetry.Trace.TracerProviderBuilder
|
||||
|
|
|
|||
|
|
@ -9,6 +9,9 @@ please check the latest changes
|
|||
|
||||
## Unreleased
|
||||
|
||||
* Moved `IDeferredTracerProviderBuilder` to API library.
|
||||
([#2058](https://github.com/open-telemetry/opentelemetry-dotnet/pull/2100))
|
||||
|
||||
## 1.1.0-beta4
|
||||
|
||||
Released 2021-Jun-09
|
||||
|
|
|
|||
|
|
@ -120,6 +120,19 @@ namespace OpenTelemetry.Extensions.Hosting.Tests
|
|||
}));
|
||||
}
|
||||
|
||||
[Fact]
|
||||
public void AddOpenTelemetryTracerProvider_GetServicesExtension()
|
||||
{
|
||||
var services = new ServiceCollection();
|
||||
services.AddOpenTelemetryTracing(builder => AddMyFeature(builder));
|
||||
|
||||
using var serviceProvider = services.BuildServiceProvider();
|
||||
|
||||
var tracerProvider = (TracerProviderSdk)serviceProvider.GetRequiredService<TracerProvider>();
|
||||
|
||||
Assert.True(tracerProvider.Sampler is TestSampler);
|
||||
}
|
||||
|
||||
[Fact]
|
||||
public void AddOpenTelemetryTracerProvider_NestedConfigureCallbacks()
|
||||
{
|
||||
|
|
@ -199,6 +212,14 @@ namespace OpenTelemetry.Extensions.Hosting.Tests
|
|||
Assert.True(testInstrumentation2.Disposed);
|
||||
}
|
||||
|
||||
private static TracerProviderBuilder AddMyFeature(TracerProviderBuilder tracerProviderBuilder)
|
||||
{
|
||||
(tracerProviderBuilder.GetServices() ?? throw new NotSupportedException("MyFeature requires a hosting TracerProviderBuilder instance."))
|
||||
.AddSingleton<TestSampler>();
|
||||
|
||||
return tracerProviderBuilder.SetSampler<TestSampler>();
|
||||
}
|
||||
|
||||
internal class TestInstrumentation : IDisposable
|
||||
{
|
||||
public bool Disposed { get; private set; }
|
||||
|
|
|
|||
Loading…
Reference in New Issue