Skip to content

Commit 89b6d0f

Browse files
authored
[CONFIGURATION] File configuration - trace model (#3467)
1 parent b49e1b7 commit 89b6d0f

14 files changed

+534
-0
lines changed
Lines changed: 38 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,38 @@
1+
// Copyright The OpenTelemetry Authors
2+
// SPDX-License-Identifier: Apache-2.0
3+
4+
#pragma once
5+
6+
#include <memory>
7+
8+
#include "opentelemetry/sdk/configuration/span_exporter_configuration.h"
9+
#include "opentelemetry/sdk/configuration/span_processor_configuration.h"
10+
#include "opentelemetry/sdk/configuration/span_processor_configuration_visitor.h"
11+
#include "opentelemetry/version.h"
12+
13+
OPENTELEMETRY_BEGIN_NAMESPACE
14+
namespace sdk
15+
{
16+
namespace configuration
17+
{
18+
19+
// YAML-SCHEMA: schema/tracer_provider.json
20+
// YAML-NODE: BatchSpanProcessor
21+
class BatchSpanProcessorConfiguration : public SpanProcessorConfiguration
22+
{
23+
public:
24+
void Accept(SpanProcessorConfigurationVisitor *visitor) const override
25+
{
26+
visitor->VisitBatch(this);
27+
}
28+
29+
std::size_t schedule_delay{0};
30+
std::size_t export_timeout{0};
31+
std::size_t max_queue_size{0};
32+
std::size_t max_export_batch_size{0};
33+
std::unique_ptr<SpanExporterConfiguration> exporter;
34+
};
35+
36+
} // namespace configuration
37+
} // namespace sdk
38+
OPENTELEMETRY_END_NAMESPACE
Lines changed: 75 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,75 @@
1+
// Copyright The OpenTelemetry Authors
2+
// SPDX-License-Identifier: Apache-2.0
3+
4+
#pragma once
5+
6+
#include <memory>
7+
#include <string>
8+
9+
#include "opentelemetry/sdk/configuration/attribute_limits_configuration.h"
10+
#include "opentelemetry/sdk/configuration/document.h"
11+
#include "opentelemetry/sdk/configuration/logger_provider_configuration.h"
12+
#include "opentelemetry/sdk/configuration/meter_provider_configuration.h"
13+
#include "opentelemetry/sdk/configuration/propagator_configuration.h"
14+
#include "opentelemetry/sdk/configuration/resource_configuration.h"
15+
#include "opentelemetry/sdk/configuration/tracer_provider_configuration.h"
16+
#include "opentelemetry/version.h"
17+
18+
/*
19+
* General notes about configuration classes.
20+
*
21+
* Each Yaml node that exists in the yaml schema,
22+
* as defined by https://github.com/open-telemetry/opentelemetry-configuration
23+
* is represented by a C++ class.
24+
* Special comments are used to relate the C++ class to
25+
* the Yaml node it represents.
26+
*
27+
* YAML-SCHEMA: points to the relevant file within the
28+
* opentelemetry-configuration repository
29+
* YAML-NODE: points to the relevant node within the file.
30+
*
31+
* For example,
32+
* C++ class opentelemetry::sdk::configuration::Configuration
33+
* corresponds to
34+
* Yaml node OpenTelemetryConfiguration,
35+
* in file
36+
* https://github.com/open-telemetry/opentelemetry-configuration/blob/main/schema/opentelemetry_configuration.json
37+
*/
38+
39+
OPENTELEMETRY_BEGIN_NAMESPACE
40+
namespace sdk
41+
{
42+
namespace configuration
43+
{
44+
45+
// YAML-SCHEMA: schema/opentelemetry_configuration.json
46+
// YAML-NODE: OpenTelemetryConfiguration
47+
class Configuration
48+
{
49+
public:
50+
Configuration(std::unique_ptr<Document> doc) : doc_(std::move(doc)) {}
51+
Configuration(Configuration &&) = delete;
52+
Configuration(const Configuration &) = delete;
53+
Configuration &operator=(Configuration &&) = delete;
54+
Configuration &operator=(const Configuration &other) = delete;
55+
~Configuration() = default;
56+
57+
std::string file_format;
58+
bool disabled{false};
59+
std::string log_level;
60+
61+
std::unique_ptr<AttributeLimitsConfiguration> attribute_limits;
62+
std::unique_ptr<LoggerProviderConfiguration> logger_provider;
63+
std::unique_ptr<MeterProviderConfiguration> meter_provider;
64+
std::unique_ptr<PropagatorConfiguration> propagator;
65+
std::unique_ptr<TracerProviderConfiguration> tracer_provider;
66+
std::unique_ptr<ResourceConfiguration> resource;
67+
// Ignored: instrumentation
68+
69+
private:
70+
std::unique_ptr<Document> doc_;
71+
};
72+
73+
} // namespace configuration
74+
} // namespace sdk
75+
OPENTELEMETRY_END_NAMESPACE
Lines changed: 29 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,29 @@
1+
// Copyright The OpenTelemetry Authors
2+
// SPDX-License-Identifier: Apache-2.0
3+
4+
#pragma once
5+
6+
#include "opentelemetry/sdk/configuration/span_exporter_configuration.h"
7+
#include "opentelemetry/sdk/configuration/span_exporter_configuration_visitor.h"
8+
#include "opentelemetry/version.h"
9+
10+
OPENTELEMETRY_BEGIN_NAMESPACE
11+
namespace sdk
12+
{
13+
namespace configuration
14+
{
15+
16+
// YAML-SCHEMA: schema/common.json
17+
// YAML-NODE: Console
18+
class ConsoleSpanExporterConfiguration : public SpanExporterConfiguration
19+
{
20+
public:
21+
void Accept(SpanExporterConfigurationVisitor *visitor) const override
22+
{
23+
visitor->VisitConsole(this);
24+
}
25+
};
26+
27+
} // namespace configuration
28+
} // namespace sdk
29+
OPENTELEMETRY_END_NAMESPACE
Lines changed: 33 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,33 @@
1+
// Copyright The OpenTelemetry Authors
2+
// SPDX-License-Identifier: Apache-2.0
3+
4+
#pragma once
5+
6+
#include <string>
7+
8+
#include "opentelemetry/sdk/configuration/span_exporter_configuration.h"
9+
#include "opentelemetry/sdk/configuration/span_exporter_configuration_visitor.h"
10+
#include "opentelemetry/version.h"
11+
12+
OPENTELEMETRY_BEGIN_NAMESPACE
13+
namespace sdk
14+
{
15+
namespace configuration
16+
{
17+
18+
// YAML-SCHEMA: schema/common.json
19+
// YAML-NODE: ExperimentalOtlpFileExporter
20+
class OtlpFileSpanExporterConfiguration : public SpanExporterConfiguration
21+
{
22+
public:
23+
void Accept(SpanExporterConfigurationVisitor *visitor) const override
24+
{
25+
visitor->VisitOtlpFile(this);
26+
}
27+
28+
std::string output_stream;
29+
};
30+
31+
} // namespace configuration
32+
} // namespace sdk
33+
OPENTELEMETRY_END_NAMESPACE
Lines changed: 43 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,43 @@
1+
// Copyright The OpenTelemetry Authors
2+
// SPDX-License-Identifier: Apache-2.0
3+
4+
#pragma once
5+
6+
#include <memory>
7+
#include <string>
8+
9+
#include "opentelemetry/sdk/configuration/headers_configuration.h"
10+
#include "opentelemetry/sdk/configuration/span_exporter_configuration.h"
11+
#include "opentelemetry/sdk/configuration/span_exporter_configuration_visitor.h"
12+
#include "opentelemetry/version.h"
13+
14+
OPENTELEMETRY_BEGIN_NAMESPACE
15+
namespace sdk
16+
{
17+
namespace configuration
18+
{
19+
20+
// YAML-SCHEMA: schema/common.json
21+
// YAML-NODE: OtlpGrpcExporter
22+
class OtlpGrpcSpanExporterConfiguration : public SpanExporterConfiguration
23+
{
24+
public:
25+
void Accept(SpanExporterConfigurationVisitor *visitor) const override
26+
{
27+
visitor->VisitOtlpGrpc(this);
28+
}
29+
30+
std::string endpoint;
31+
std::string certificate_file;
32+
std::string client_key_file;
33+
std::string client_certificate_file;
34+
std::unique_ptr<HeadersConfiguration> headers;
35+
std::string headers_list;
36+
std::string compression;
37+
std::size_t timeout{0};
38+
bool insecure{false};
39+
};
40+
41+
} // namespace configuration
42+
} // namespace sdk
43+
OPENTELEMETRY_END_NAMESPACE
Lines changed: 44 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,44 @@
1+
// Copyright The OpenTelemetry Authors
2+
// SPDX-License-Identifier: Apache-2.0
3+
4+
#pragma once
5+
6+
#include <memory>
7+
#include <string>
8+
9+
#include "opentelemetry/sdk/configuration/headers_configuration.h"
10+
#include "opentelemetry/sdk/configuration/otlp_http_encoding.h"
11+
#include "opentelemetry/sdk/configuration/span_exporter_configuration.h"
12+
#include "opentelemetry/sdk/configuration/span_exporter_configuration_visitor.h"
13+
#include "opentelemetry/version.h"
14+
15+
OPENTELEMETRY_BEGIN_NAMESPACE
16+
namespace sdk
17+
{
18+
namespace configuration
19+
{
20+
21+
// YAML-SCHEMA: schema/common.json
22+
// YAML-NODE: OtlpHttpExporter
23+
class OtlpHttpSpanExporterConfiguration : public SpanExporterConfiguration
24+
{
25+
public:
26+
void Accept(SpanExporterConfigurationVisitor *visitor) const override
27+
{
28+
visitor->VisitOtlpHttp(this);
29+
}
30+
31+
std::string endpoint;
32+
std::string certificate_file;
33+
std::string client_key_file;
34+
std::string client_certificate_file;
35+
std::unique_ptr<HeadersConfiguration> headers;
36+
std::string headers_list;
37+
std::string compression;
38+
std::size_t timeout{0};
39+
enum_otlp_http_encoding encoding{protobuf};
40+
};
41+
42+
} // namespace configuration
43+
} // namespace sdk
44+
OPENTELEMETRY_END_NAMESPACE
Lines changed: 34 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,34 @@
1+
// Copyright The OpenTelemetry Authors
2+
// SPDX-License-Identifier: Apache-2.0
3+
4+
#pragma once
5+
6+
#include <memory>
7+
8+
#include "opentelemetry/sdk/configuration/span_exporter_configuration.h"
9+
#include "opentelemetry/sdk/configuration/span_processor_configuration.h"
10+
#include "opentelemetry/sdk/configuration/span_processor_configuration_visitor.h"
11+
#include "opentelemetry/version.h"
12+
13+
OPENTELEMETRY_BEGIN_NAMESPACE
14+
namespace sdk
15+
{
16+
namespace configuration
17+
{
18+
19+
// YAML-SCHEMA: schema/tracer_provider.json
20+
// YAML-NODE: SimpleSpanProcessor
21+
class SimpleSpanProcessorConfiguration : public SpanProcessorConfiguration
22+
{
23+
public:
24+
void Accept(SpanProcessorConfigurationVisitor *visitor) const override
25+
{
26+
visitor->VisitSimple(this);
27+
}
28+
29+
std::unique_ptr<SpanExporterConfiguration> exporter;
30+
};
31+
32+
} // namespace configuration
33+
} // namespace sdk
34+
OPENTELEMETRY_END_NAMESPACE
Lines changed: 32 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,32 @@
1+
// Copyright The OpenTelemetry Authors
2+
// SPDX-License-Identifier: Apache-2.0
3+
4+
#pragma once
5+
6+
#include "opentelemetry/version.h"
7+
8+
OPENTELEMETRY_BEGIN_NAMESPACE
9+
namespace sdk
10+
{
11+
namespace configuration
12+
{
13+
class SpanExporterConfigurationVisitor;
14+
15+
// YAML-SCHEMA: schema/tracer_provider.json
16+
// YAML-NODE: SpanExporter
17+
class SpanExporterConfiguration
18+
{
19+
public:
20+
SpanExporterConfiguration() = default;
21+
SpanExporterConfiguration(SpanExporterConfiguration &&) = default;
22+
SpanExporterConfiguration(const SpanExporterConfiguration &) = default;
23+
SpanExporterConfiguration &operator=(SpanExporterConfiguration &&) = default;
24+
SpanExporterConfiguration &operator=(const SpanExporterConfiguration &other) = default;
25+
virtual ~SpanExporterConfiguration() = default;
26+
27+
virtual void Accept(SpanExporterConfigurationVisitor *visitor) const = 0;
28+
};
29+
30+
} // namespace configuration
31+
} // namespace sdk
32+
OPENTELEMETRY_END_NAMESPACE
Lines changed: 42 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,42 @@
1+
// Copyright The OpenTelemetry Authors
2+
// SPDX-License-Identifier: Apache-2.0
3+
4+
#pragma once
5+
6+
#include "opentelemetry/version.h"
7+
8+
OPENTELEMETRY_BEGIN_NAMESPACE
9+
namespace sdk
10+
{
11+
namespace configuration
12+
{
13+
14+
class OtlpHttpSpanExporterConfiguration;
15+
class OtlpGrpcSpanExporterConfiguration;
16+
class OtlpFileSpanExporterConfiguration;
17+
class ConsoleSpanExporterConfiguration;
18+
class ZipkinSpanExporterConfiguration;
19+
class ExtensionSpanExporterConfiguration;
20+
21+
class SpanExporterConfigurationVisitor
22+
{
23+
public:
24+
SpanExporterConfigurationVisitor() = default;
25+
SpanExporterConfigurationVisitor(SpanExporterConfigurationVisitor &&) = default;
26+
SpanExporterConfigurationVisitor(const SpanExporterConfigurationVisitor &) = default;
27+
SpanExporterConfigurationVisitor &operator=(SpanExporterConfigurationVisitor &&) = default;
28+
SpanExporterConfigurationVisitor &operator=(const SpanExporterConfigurationVisitor &other) =
29+
default;
30+
virtual ~SpanExporterConfigurationVisitor() = default;
31+
32+
virtual void VisitOtlpHttp(const OtlpHttpSpanExporterConfiguration *model) = 0;
33+
virtual void VisitOtlpGrpc(const OtlpGrpcSpanExporterConfiguration *model) = 0;
34+
virtual void VisitOtlpFile(const OtlpFileSpanExporterConfiguration *model) = 0;
35+
virtual void VisitConsole(const ConsoleSpanExporterConfiguration *model) = 0;
36+
virtual void VisitZipkin(const ZipkinSpanExporterConfiguration *model) = 0;
37+
virtual void VisitExtension(const ExtensionSpanExporterConfiguration *model) = 0;
38+
};
39+
40+
} // namespace configuration
41+
} // namespace sdk
42+
OPENTELEMETRY_END_NAMESPACE

0 commit comments

Comments
 (0)