1# gRPC Bazel BUILD file.
2#
3# Copyright 2022 gRPC authors.
4#
5# Licensed under the Apache License, Version 2.0 (the "License");
6# you may not use this file except in compliance with the License.
7# You may obtain a copy of the License at
8#
9#     http://www.apache.org/licenses/LICENSE-2.0
10#
11# Unless required by applicable law or agreed to in writing, software
12# distributed under the License is distributed on an "AS IS" BASIS,
13# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
14# See the License for the specific language governing permissions and
15# limitations under the License.
16
17load(
18    "//bazel:grpc_build_system.bzl",
19    "grpc_cc_library",
20)
21
22licenses(["reciprocal"])
23
24package(
25    default_visibility = ["//visibility:public"],
26    features = [
27        "layering_check",
28    ],
29)
30
31grpc_cc_library(
32    name = "observability",
33    srcs = [
34        "observability.cc",
35    ],
36    hdrs = [
37        "//:include/grpcpp/ext/gcp_observability.h",
38    ],
39    external_deps = [
40        "absl/status",
41        "absl/status:statusor",
42        "absl/strings",
43        "absl/time",
44        "absl/types:optional",
45        "google/api:monitored_resource_cc_proto",
46        "googleapis_monitoring_grpc_service",
47        "googleapis_trace_grpc_service",
48        "opencensus-stats",
49        "opencensus-stats-stackdriver_exporter",
50        "opencensus-trace",
51        "opencensus-trace-stackdriver_exporter",
52    ],
53    language = "c++",
54    visibility = ["//:__subpackages__"],
55    deps = [
56        "environment_autodetect",
57        "observability_config",
58        "observability_logging_sink",
59        "//:gpr",
60        "//:grpc",
61        "//:grpc++",
62        "//:grpc++_base",
63        "//:grpc_opencensus_plugin",
64        "//src/core:logging_filter",
65        "//src/core:notification",
66    ],
67)
68
69grpc_cc_library(
70    name = "observability_config",
71    srcs = [
72        "observability_config.cc",
73    ],
74    hdrs = [
75        "observability_config.h",
76    ],
77    external_deps = [
78        "absl/status",
79        "absl/status:statusor",
80        "absl/strings",
81        "absl/types:optional",
82    ],
83    language = "c++",
84    visibility = ["//test:__subpackages__"],
85    deps = [
86        "//:gpr",
87        "//:grpc_base",
88        "//:grpc_public_hdrs",
89        "//src/core:env",
90        "//src/core:error",
91        "//src/core:json",
92        "//src/core:json_args",
93        "//src/core:json_object_loader",
94        "//src/core:json_reader",
95        "//src/core:slice",
96        "//src/core:slice_refcount",
97        "//src/core:status_helper",
98        "//src/core:validation_errors",
99    ],
100)
101
102grpc_cc_library(
103    name = "observability_logging_sink",
104    srcs = [
105        "observability_logging_sink.cc",
106    ],
107    hdrs = [
108        "observability_logging_sink.h",
109    ],
110    external_deps = [
111        "absl/base:core_headers",
112        "absl/numeric:int128",
113        "absl/strings",
114        "absl/strings:str_format",
115        "absl/types:optional",
116        "google/api:monitored_resource_cc_proto",
117        "googleapis_logging_cc_proto",
118        "googleapis_logging_grpc_service",
119        "protobuf_headers",
120    ],
121    language = "c++",
122    visibility = ["//test:__subpackages__"],
123    deps = [
124        "environment_autodetect",
125        "observability_config",
126        "//:event_engine_base_hdrs",
127        "//:gpr",
128        "//:gpr_platform",
129        "//:grpc++",
130        "//:grpc_opencensus_plugin",
131        "//src/core:default_event_engine",
132        "//src/core:env",
133        "//src/core:json",
134        "//src/core:logging_sink",
135        "//src/core:time",
136        "//src/core:uuid_v4",
137    ],
138)
139
140grpc_cc_library(
141    name = "environment_autodetect",
142    srcs = [
143        "environment_autodetect.cc",
144    ],
145    hdrs = [
146        "environment_autodetect.h",
147    ],
148    external_deps = [
149        "absl/base:core_headers",
150        "absl/container:flat_hash_map",
151        "absl/functional:any_invocable",
152        "absl/meta:type_traits",
153        "absl/status",
154        "absl/status:statusor",
155        "absl/types:optional",
156    ],
157    language = "c++",
158    visibility = [
159        "//src/cpp/ext/gcp:__subpackages__",
160        "//test:__subpackages__",
161    ],
162    deps = [
163        "//:exec_ctx",
164        "//:gpr",
165        "//:gpr_platform",
166        "//:grpc++",
167        "//:grpc_base",
168        "//:grpc_trace",
169        "//:orphanable",
170        "//src/core:closure",
171        "//src/core:default_event_engine",
172        "//src/core:env",
173        "//src/core:error",
174        "//src/core:gcp_metadata_query",
175        "//src/core:iomgr_fwd",
176        "//src/core:load_file",
177        "//src/core:slice",
178        "//src/core:status_helper",
179        "//src/core:time",
180    ],
181)
182