Skip to content

Commit 5cf0181

Browse files
committed
[CONFIGURATION] File configuration - metric model
1 parent 3b7f564 commit 5cf0181

14 files changed

+504
-0
lines changed
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 "opentelemetry/sdk/configuration/headers_configuration.h"
7+
#include "opentelemetry/sdk/configuration/push_metric_exporter_configuration.h"
8+
#include "opentelemetry/sdk/configuration/push_metric_exporter_configuration_visitor.h"
9+
#include "opentelemetry/version.h"
10+
11+
OPENTELEMETRY_BEGIN_NAMESPACE
12+
namespace sdk
13+
{
14+
namespace configuration
15+
{
16+
17+
// YAML-SCHEMA: schema/common.json
18+
// YAML-NODE: Console
19+
class ConsolePushMetricExporterConfiguration : public PushMetricExporterConfiguration
20+
{
21+
public:
22+
ConsolePushMetricExporterConfiguration() = default;
23+
~ConsolePushMetricExporterConfiguration() override = default;
24+
25+
void Accept(PushMetricExporterConfigurationVisitor *visitor) const override
26+
{
27+
visitor->VisitConsole(this);
28+
}
29+
};
30+
31+
} // namespace configuration
32+
} // namespace sdk
33+
OPENTELEMETRY_END_NAMESPACE
Lines changed: 30 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,30 @@
1+
// Copyright The OpenTelemetry Authors
2+
// SPDX-License-Identifier: Apache-2.0
3+
4+
#pragma once
5+
6+
#include <memory>
7+
8+
#include "opentelemetry/version.h"
9+
10+
OPENTELEMETRY_BEGIN_NAMESPACE
11+
namespace sdk
12+
{
13+
namespace configuration
14+
{
15+
class MetricProducerConfigurationVisitor;
16+
17+
// YAML-SCHEMA: schema/meter_provider.json
18+
// YAML-NODE: MetricProducer
19+
class MetricProducerConfiguration
20+
{
21+
public:
22+
MetricProducerConfiguration() = default;
23+
virtual ~MetricProducerConfiguration() = default;
24+
25+
virtual void Accept(MetricProducerConfigurationVisitor *visitor) const = 0;
26+
};
27+
28+
} // namespace configuration
29+
} // namespace sdk
30+
OPENTELEMETRY_END_NAMESPACE
Lines changed: 30 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,30 @@
1+
// Copyright The OpenTelemetry Authors
2+
// SPDX-License-Identifier: Apache-2.0
3+
4+
#pragma once
5+
6+
#include <memory>
7+
8+
#include "opentelemetry/version.h"
9+
10+
OPENTELEMETRY_BEGIN_NAMESPACE
11+
namespace sdk
12+
{
13+
namespace configuration
14+
{
15+
class MetricReaderConfigurationVisitor;
16+
17+
// YAML-SCHEMA: schema/meter_provider.json
18+
// YAML-NODE: MetricReader
19+
class MetricReaderConfiguration
20+
{
21+
public:
22+
MetricReaderConfiguration() = default;
23+
virtual ~MetricReaderConfiguration() = default;
24+
25+
virtual void Accept(MetricReaderConfigurationVisitor *visitor) const = 0;
26+
};
27+
28+
} // namespace configuration
29+
} // namespace sdk
30+
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/version.h"
7+
8+
OPENTELEMETRY_BEGIN_NAMESPACE
9+
namespace sdk
10+
{
11+
namespace configuration
12+
{
13+
14+
class PeriodicMetricReaderConfiguration;
15+
class PullMetricReaderConfiguration;
16+
17+
class MetricReaderConfigurationVisitor
18+
{
19+
public:
20+
MetricReaderConfigurationVisitor() = default;
21+
virtual ~MetricReaderConfigurationVisitor() = default;
22+
23+
virtual void VisitPeriodic(const PeriodicMetricReaderConfiguration *model) = 0;
24+
virtual void VisitPull(const PullMetricReaderConfiguration *model) = 0;
25+
};
26+
27+
} // namespace configuration
28+
} // namespace sdk
29+
OPENTELEMETRY_END_NAMESPACE
Lines changed: 40 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,40 @@
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/exporter_default_histogram_aggregation.h"
9+
#include "opentelemetry/sdk/configuration/headers_configuration.h"
10+
#include "opentelemetry/sdk/configuration/push_metric_exporter_configuration.h"
11+
#include "opentelemetry/sdk/configuration/push_metric_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/meter_provider.json
21+
// YAML-NODE: ExperimentalOtlpFileMetricExporter
22+
class OtlpFilePushMetricExporterConfiguration : public PushMetricExporterConfiguration
23+
{
24+
public:
25+
OtlpFilePushMetricExporterConfiguration() = default;
26+
~OtlpFilePushMetricExporterConfiguration() override = default;
27+
28+
void Accept(PushMetricExporterConfigurationVisitor *visitor) const override
29+
{
30+
visitor->VisitOtlpFile(this);
31+
}
32+
33+
std::string output_stream;
34+
std::string temporality_preference; // FIXME: enum
35+
enum_default_histogram_aggregation default_histogram_aggregation{explicit_bucket_histogram};
36+
};
37+
38+
} // namespace configuration
39+
} // namespace sdk
40+
OPENTELEMETRY_END_NAMESPACE
Lines changed: 49 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,49 @@
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/exporter_default_histogram_aggregation.h"
10+
#include "opentelemetry/sdk/configuration/headers_configuration.h"
11+
#include "opentelemetry/sdk/configuration/push_metric_exporter_configuration.h"
12+
#include "opentelemetry/sdk/configuration/push_metric_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/meter_provider.json
22+
// YAML-NODE: OtlpGrpcMetricExporter
23+
class OtlpGrpcPushMetricExporterConfiguration : public PushMetricExporterConfiguration
24+
{
25+
public:
26+
OtlpGrpcPushMetricExporterConfiguration() = default;
27+
~OtlpGrpcPushMetricExporterConfiguration() override = default;
28+
29+
void Accept(PushMetricExporterConfigurationVisitor *visitor) const override
30+
{
31+
visitor->VisitOtlpGrpc(this);
32+
}
33+
34+
std::string endpoint;
35+
std::string certificate_file;
36+
std::string client_key_file;
37+
std::string client_certificate_file;
38+
std::unique_ptr<HeadersConfiguration> headers;
39+
std::string headers_list;
40+
std::string compression;
41+
size_t timeout{0};
42+
bool insecure{false};
43+
std::string temporality_preference; // FIXME: enum
44+
enum_default_histogram_aggregation default_histogram_aggregation{explicit_bucket_histogram};
45+
};
46+
47+
} // namespace configuration
48+
} // namespace sdk
49+
OPENTELEMETRY_END_NAMESPACE
Lines changed: 50 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,50 @@
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/exporter_default_histogram_aggregation.h"
10+
#include "opentelemetry/sdk/configuration/headers_configuration.h"
11+
#include "opentelemetry/sdk/configuration/otlp_http_encoding.h"
12+
#include "opentelemetry/sdk/configuration/push_metric_exporter_configuration.h"
13+
#include "opentelemetry/sdk/configuration/push_metric_exporter_configuration_visitor.h"
14+
#include "opentelemetry/version.h"
15+
16+
OPENTELEMETRY_BEGIN_NAMESPACE
17+
namespace sdk
18+
{
19+
namespace configuration
20+
{
21+
22+
// YAML-SCHEMA: schema/meter_provider.json
23+
// YAML-NODE: OtlpHttpMetricExporter
24+
class OtlpHttpPushMetricExporterConfiguration : public PushMetricExporterConfiguration
25+
{
26+
public:
27+
OtlpHttpPushMetricExporterConfiguration() = default;
28+
~OtlpHttpPushMetricExporterConfiguration() override = default;
29+
30+
void Accept(PushMetricExporterConfigurationVisitor *visitor) const override
31+
{
32+
visitor->VisitOtlpHttp(this);
33+
}
34+
35+
std::string endpoint;
36+
std::string certificate_file;
37+
std::string client_key_file;
38+
std::string client_certificate_file;
39+
std::unique_ptr<HeadersConfiguration> headers;
40+
std::string headers_list;
41+
std::string compression;
42+
size_t timeout{0};
43+
enum_otlp_http_encoding encoding{protobuf};
44+
std::string temporality_preference; // FIXME: enum
45+
enum_default_histogram_aggregation default_histogram_aggregation{explicit_bucket_histogram};
46+
};
47+
48+
} // namespace configuration
49+
} // namespace sdk
50+
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 <memory>
7+
#include <vector>
8+
9+
#include "opentelemetry/sdk/configuration/metric_producer_configuration.h"
10+
#include "opentelemetry/sdk/configuration/metric_reader_configuration.h"
11+
#include "opentelemetry/sdk/configuration/metric_reader_configuration_visitor.h"
12+
#include "opentelemetry/sdk/configuration/push_metric_exporter_configuration.h"
13+
#include "opentelemetry/version.h"
14+
15+
OPENTELEMETRY_BEGIN_NAMESPACE
16+
namespace sdk
17+
{
18+
namespace configuration
19+
{
20+
21+
// YAML-SCHEMA: schema/meter_provider.json
22+
// YAML-NODE: PeriodicMetricReader
23+
class PeriodicMetricReaderConfiguration : public MetricReaderConfiguration
24+
{
25+
public:
26+
PeriodicMetricReaderConfiguration() = default;
27+
~PeriodicMetricReaderConfiguration() override = default;
28+
29+
void Accept(MetricReaderConfigurationVisitor *visitor) const override
30+
{
31+
visitor->VisitPeriodic(this);
32+
}
33+
34+
size_t interval{0};
35+
size_t timeout{0};
36+
std::unique_ptr<PushMetricExporterConfiguration> exporter;
37+
std::vector<std::unique_ptr<MetricProducerConfiguration>> producers;
38+
};
39+
40+
} // namespace configuration
41+
} // namespace sdk
42+
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 <string>
7+
8+
#include "opentelemetry/sdk/configuration/headers_configuration.h"
9+
#include "opentelemetry/sdk/configuration/pull_metric_exporter_configuration.h"
10+
#include "opentelemetry/sdk/configuration/pull_metric_exporter_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/meter_provider.json
20+
// YAML-NODE: Prometheus
21+
class PrometheusPullMetricExporterConfiguration : public PullMetricExporterConfiguration
22+
{
23+
public:
24+
PrometheusPullMetricExporterConfiguration() = default;
25+
~PrometheusPullMetricExporterConfiguration() override = default;
26+
27+
void Accept(PullMetricExporterConfigurationVisitor *visitor) const override
28+
{
29+
visitor->VisitPrometheus(this);
30+
}
31+
32+
std::string host;
33+
size_t port{0};
34+
bool without_units{false};
35+
bool without_type_suffix{false};
36+
bool without_scope_info{false};
37+
// FIXME: with_resource_constant_labels;
38+
};
39+
40+
} // namespace configuration
41+
} // namespace sdk
42+
OPENTELEMETRY_END_NAMESPACE
Lines changed: 26 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,26 @@
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 PullMetricExporterConfigurationVisitor;
14+
15+
class PullMetricExporterConfiguration
16+
{
17+
public:
18+
PullMetricExporterConfiguration() = default;
19+
virtual ~PullMetricExporterConfiguration() = default;
20+
21+
virtual void Accept(PullMetricExporterConfigurationVisitor *visitor) const = 0;
22+
};
23+
24+
} // namespace configuration
25+
} // namespace sdk
26+
OPENTELEMETRY_END_NAMESPACE

0 commit comments

Comments
 (0)