api/router: Add support for hidden services/methods.
BUG=None
TEST=./run_pytest
Cq-Depend: chromium:2728532
Change-Id: I72e57fa74f9ea2cb0044228553d3b6b248b76262
Reviewed-on: https://chromium-review.googlesource.com/c/chromiumos/chromite/+/2729182
Tested-by: Alex Klein <saklein@chromium.org>
Reviewed-by: LaMont Jones <lamontjones@chromium.org>
Commit-Queue: Alex Klein <saklein@chromium.org>
diff --git a/api/router.py b/api/router.py
index f556552..04b462d 100644
--- a/api/router.py
+++ b/api/router.py
@@ -170,7 +170,19 @@
"""List all methods registered with the router."""
services = []
for service_name, (svc, _module) in self._services.items():
+ svc_visibility = getattr(
+ svc.GetOptions().Extensions[self._svc_options_ext],
+ 'service_visibility', build_api_pb2.LV_VISIBLE)
+ if svc_visibility == build_api_pb2.LV_HIDDEN:
+ continue
+
for method_name in svc.methods_by_name.keys():
+ method_options = self._get_method_options(service_name, method_name)
+ method_visibility = getattr(method_options, 'method_visibility',
+ build_api_pb2.LV_VISIBLE)
+ if method_visibility == build_api_pb2.LV_HIDDEN:
+ continue
+
services.append('%s/%s' % (service_name, method_name))
return sorted(services)