7860c44f4e
* Dim/quack lets go (#1275) * Add model ingestion to sharp connectors * correct ingestion message * Progress * grasshopper * GH exception messages * fix GH * file names * revit file name * grasshopper file names * etabs file names * delete tests * tekla maybe * ingestion scope * bad boolean logic * Longer TimeSpan * wip upload pipe * 10s * passthrough ingestion id * happy hack time: prevent ingestion completion this is handled server-side in the processing logic. * add packfile send endpoint detection and routing Route to SendViaPackfile when the server supports the upload-signing endpoint (POST probe, 404 = unsupported) and a continuous traversal builder is registered. * Adds Continuous Traversal Builder Introduces a Continuous Traversal Builder to manage the conversion and processing of Revit elements within a Send Pipeline. --------- Co-authored-by: Jedd Morgan <45512892+JR-Morgan@users.noreply.github.com> * feat(api): DI Refactor for Duck DB + Gergo's API endpoint changes (#1282) * Di * undo accidental change * Feat (duck): dui ingestion updates post upload (#1295) * Pass optional ingestion id to DUI * Make ingestion id null for the SendViaIngestion, see the note :) * feat!: Duckdev progress reporitng (#1296) * Di * throwaway from laptop * Progress reporting * Use matching logger * Revit and revert rhino unpacker progress * more revertion * make pr even cleaner * and this one * fix build issues with other connectors * SDK nuget (#1299) * Bump to 3.14.0-alpha.2 * Feat(duck): grasshopper (#1297) * Duck x Grasshopper - who would win? * Fix registration for new builder * missing imports * return version id grasshopper * Align sync resource to sync --------- Co-authored-by: Jedd Morgan <45512892+JR-Morgan@users.noreply.github.com> * Bump SDK * feat(importer): rhino file importer changes for packfile (#1301) * rhino importer changes * correct deps * Bump SDK * Fix build issues * ditto * Fix build issue * Lower standards * Fix build * feat: duck for acad, civil, navis, tekla, etabs (#1300) * duck: acad, civil, etabs, tekla, navis and bump channels to 10.0.0 * notes * fix conflicts * more conflicts * Ready for testing * fix(duck): Fix send caching (#1302) * potential fix * undo-rhino chnages * fix xml comment * amended comment * revit * Fix build * Aligned converting message * fix: reoccurring object references * Bump sdk and resolve merge conflict issues * Merge pull request #1317 from specklesystems/jrm/importer-tracing feat(otel): Tracing and OTEL changes for Rhino importer * Fix revit linked model progress (#1312) * Revert otel packages * bump SDK * Trace unpacking groups * Align trace context nullability with app * Disable send caching in Navisworks * comments * Update FileimportPayload.cs * fix using directive --------- Co-authored-by: Jedd Morgan <45512892+JR-Morgan@users.noreply.github.com> * Fix merge conflicts --------- Co-authored-by: Dimitrie Stefanescu <didimitrie@gmail.com> Co-authored-by: Oğuzhan Koral <45078678+oguzhankoral@users.noreply.github.com> Co-authored-by: Björn Steinhagen <88777268+bjoernsteinhagen@users.noreply.github.com> Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com> Co-authored-by: Sebastian Witt <sebastian.witt@rwth-aachen.de>
117 lines
3.5 KiB
C#
117 lines
3.5 KiB
C#
using System.Reflection;
|
|
using Microsoft.Extensions.DependencyInjection;
|
|
using Microsoft.Extensions.Logging;
|
|
using Speckle.Connectors.Common.Common;
|
|
using Speckle.Connectors.Logging;
|
|
using Speckle.Objects.Geometry;
|
|
using Speckle.Sdk;
|
|
|
|
namespace Speckle.Connectors.Common;
|
|
|
|
public static class Connector
|
|
{
|
|
private sealed record LoggingDisposable(IDisposable Logging, IDisposable Tracing, IDisposable Metrics) : IDisposable
|
|
{
|
|
public void Dispose()
|
|
{
|
|
Logging.Dispose();
|
|
Tracing.Dispose();
|
|
Metrics.Dispose();
|
|
}
|
|
}
|
|
|
|
public static readonly string TabName = "Speckle";
|
|
public static readonly string TabTitle = "Speckle";
|
|
|
|
public static IDisposable Initialize(
|
|
this IServiceCollection serviceCollection,
|
|
Application application,
|
|
HostAppVersion version
|
|
)
|
|
{
|
|
var assemblyVersion = Assembly.GetExecutingAssembly().GetVersion();
|
|
serviceCollection.AddSpeckleSdk(
|
|
application,
|
|
HostApplications.GetVersion(version),
|
|
assemblyVersion,
|
|
typeof(Point).Assembly
|
|
);
|
|
|
|
return serviceCollection.AddOpenTelemetry(
|
|
"Connector",
|
|
application,
|
|
version,
|
|
#if DEBUG || LOCAL
|
|
new SpeckleLogging(Console: true, File: new(), MinimumLevel: SpeckleLogLevel.Debug),
|
|
new SpeckleTracing(Console: false),
|
|
new SpeckleMetrics(Console: false)
|
|
#else
|
|
new SpeckleLogging(
|
|
Console: true,
|
|
File: new(),
|
|
Otel:
|
|
[
|
|
new(
|
|
Endpoint: new Uri("https://seq.speckle.systems/ingest/otlp/v1/logs"),
|
|
Headers: new() { { "X-Seq-ApiKey", "Y0Ya2CFVt1tCSgrbY07c" } }
|
|
)
|
|
],
|
|
MinimumLevel: SpeckleLogLevel.Information
|
|
),
|
|
new SpeckleTracing(
|
|
Console: false,
|
|
Otel:
|
|
[
|
|
new(
|
|
Endpoint: new Uri("https://seq.speckle.systems/ingest/otlp/v1/traces"),
|
|
Headers: new() { { "X-Seq-ApiKey", "Y0Ya2CFVt1tCSgrbY07c" } }
|
|
)
|
|
]
|
|
),
|
|
null
|
|
#endif
|
|
);
|
|
}
|
|
|
|
public static IDisposable AddOpenTelemetry(
|
|
this IServiceCollection serviceCollection,
|
|
string serviceName,
|
|
Application application,
|
|
HostAppVersion version,
|
|
SpeckleLogging loggingConfig,
|
|
SpeckleTracing? tracingConfig,
|
|
SpeckleMetrics? metricsConfig
|
|
)
|
|
{
|
|
var assemblyVersion = Assembly.GetExecutingAssembly().GetVersion();
|
|
var (logging, tracing, metrics) = Observability.Initialize(
|
|
serviceName,
|
|
application.Name + " " + HostApplications.GetVersion(version),
|
|
application.Slug,
|
|
assemblyVersion,
|
|
new(loggingConfig, tracingConfig, metricsConfig)
|
|
);
|
|
//do this after the AddSpeckleSdk so that the logging system gets values from here.
|
|
serviceCollection.AddLogging(x =>
|
|
{
|
|
x.ClearProviders();
|
|
x.AddProvider(new SpeckleLogProvider(logging));
|
|
x.SetMinimumLevel(GetMicrosoftLevel(loggingConfig.MinimumLevel));
|
|
});
|
|
serviceCollection.AddSingleton<Speckle.Sdk.Logging.ISdkActivityFactory, ConnectorActivityFactory>();
|
|
return new LoggingDisposable(logging, tracing, metrics);
|
|
}
|
|
|
|
private static LogLevel GetMicrosoftLevel(SpeckleLogLevel speckleLogLevel) =>
|
|
speckleLogLevel switch
|
|
{
|
|
SpeckleLogLevel.Debug => LogLevel.Debug,
|
|
SpeckleLogLevel.Verbose => LogLevel.Trace,
|
|
SpeckleLogLevel.Information => LogLevel.Information,
|
|
SpeckleLogLevel.Warning => LogLevel.Warning,
|
|
SpeckleLogLevel.Error => LogLevel.Error,
|
|
SpeckleLogLevel.Fatal => LogLevel.Critical,
|
|
_ => throw new ArgumentOutOfRangeException(nameof(speckleLogLevel), speckleLogLevel, null)
|
|
};
|
|
}
|