blob: ccfab5b5095cd3274b29753448d862fe8607822b [file] [log] [blame] [edit]
<!DOCTYPE html>
<html lang="en" data-content_root="../">
<head>
<meta charset="utf-8" />
<meta name="viewport" content="width=device-width, initial-scale=1.0" />
<title>grpc_csds &#8212; gRPC Python 1.76.0 documentation</title>
<link rel="stylesheet" type="text/css" href="../_static/pygments.css?v=5ecbeea2" />
<link rel="stylesheet" type="text/css" href="../_static/alabaster.css?v=f0f94f3a" />
<script src="../_static/documentation_options.js?v=8c3e8212"></script>
<script src="../_static/doctools.js?v=9a2dae69"></script>
<script src="../_static/sphinx_highlight.js?v=dc90522c"></script>
<link rel="index" title="Index" href="../genindex.html" />
<link rel="search" title="Search" href="../search.html" />
<link rel="stylesheet" href="../_static/custom.css" type="text/css" />
</head><body>
<div class="document">
<div class="sphinxsidebar" role="navigation" aria-label="Main">
<div class="sphinxsidebarwrapper">
<h1 class="logo"><a href="../index.html">gRPC Python</a></h1>
<p class="blurb">1.76.0</p>
<h3>Navigation</h3>
<p class="caption" role="heading"><span class="caption-text">Contents:</span></p>
<ul>
<li class="toctree-l1"><a class="reference internal" href="../grpc.html">gRPC</a></li>
<li class="toctree-l1"><a class="reference internal" href="../grpc_asyncio.html">gRPC AsyncIO API</a></li>
<li class="toctree-l1"><a class="reference internal" href="../grpc_admin.html">gRPC Admin</a></li>
<li class="toctree-l1"><a class="reference internal" href="../grpc_channelz.html">gRPC Channelz</a></li>
<li class="toctree-l1"><a class="reference internal" href="../grpc_csds.html">gRPC CSDS</a></li>
<li class="toctree-l1"><a class="reference internal" href="../grpc_health_checking.html">gRPC Health Checking</a></li>
<li class="toctree-l1"><a class="reference internal" href="../grpc_reflection.html">gRPC Reflection</a></li>
<li class="toctree-l1"><a class="reference internal" href="../grpc_status.html">gRPC Status</a></li>
<li class="toctree-l1"><a class="reference internal" href="../grpc_testing.html">gRPC Testing</a></li>
<li class="toctree-l1"><a class="reference internal" href="../grpc_observability.html">gRPC Python Observability</a></li>
<li class="toctree-l1"><a class="reference internal" href="../glossary.html">Glossary</a></li>
</ul>
<div class="relations">
<h3>Related Topics</h3>
<ul>
<li><a href="../index.html">Documentation overview</a><ul>
<li><a href="index.html">Module code</a><ul>
</ul></li>
</ul></li>
</ul>
</div>
<search id="searchbox" style="display: none" role="search">
<h3 id="searchlabel">Quick search</h3>
<div class="searchformwrapper">
<form class="search" action="../search.html" method="get">
<input type="text" name="q" aria-labelledby="searchlabel" autocomplete="off" autocorrect="off" autocapitalize="off" spellcheck="false"/>
<input type="submit" value="Go" />
</form>
</div>
</search>
<script>document.getElementById('searchbox').style.display = "block"</script>
</div>
</div>
<div class="documentwrapper">
<div class="bodywrapper">
<div class="body" role="main">
<h1>Source code for grpc_csds</h1><div class="highlight"><pre>
<span></span><span class="c1"># Copyright 2021 The gRPC Authors</span>
<span class="c1">#</span>
<span class="c1"># Licensed under the Apache License, Version 2.0 (the &quot;License&quot;);</span>
<span class="c1"># you may not use this file except in compliance with the License.</span>
<span class="c1"># You may obtain a copy of the License at</span>
<span class="c1">#</span>
<span class="c1"># http://www.apache.org/licenses/LICENSE-2.0</span>
<span class="c1">#</span>
<span class="c1"># Unless required by applicable law or agreed to in writing, software</span>
<span class="c1"># distributed under the License is distributed on an &quot;AS IS&quot; BASIS,</span>
<span class="c1"># WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.</span>
<span class="c1"># See the License for the specific language governing permissions and</span>
<span class="c1"># limitations under the License.</span>
<span class="sd">&quot;&quot;&quot;Channelz debug service implementation in gRPC Python.&quot;&quot;&quot;</span>
<span class="kn">from</span><span class="w"> </span><span class="nn">envoy.service.status.v3</span><span class="w"> </span><span class="kn">import</span> <span class="n">csds_pb2</span>
<span class="kn">from</span><span class="w"> </span><span class="nn">envoy.service.status.v3</span><span class="w"> </span><span class="kn">import</span> <span class="n">csds_pb2_grpc</span>
<span class="kn">from</span><span class="w"> </span><span class="nn">google.protobuf</span><span class="w"> </span><span class="kn">import</span> <span class="n">json_format</span>
<span class="kn">from</span><span class="w"> </span><span class="nn">grpc._cython</span><span class="w"> </span><span class="kn">import</span> <span class="n">cygrpc</span>
<div class="viewcode-block" id="ClientStatusDiscoveryServiceServicer">
<a class="viewcode-back" href="../grpc_csds.html#grpc_csds.ClientStatusDiscoveryServiceServicer">[docs]</a>
<span class="k">class</span><span class="w"> </span><span class="nc">ClientStatusDiscoveryServiceServicer</span><span class="p">(</span>
<span class="n">csds_pb2_grpc</span><span class="o">.</span><span class="n">ClientStatusDiscoveryServiceServicer</span>
<span class="p">):</span>
<span class="w"> </span><span class="sd">&quot;&quot;&quot;CSDS Servicer works for both the sync API and asyncio API.&quot;&quot;&quot;</span>
<span class="nd">@staticmethod</span>
<span class="k">def</span><span class="w"> </span><span class="nf">FetchClientStatus</span><span class="p">(</span><span class="n">request</span><span class="p">,</span> <span class="n">unused_context</span><span class="p">):</span>
<span class="k">return</span> <span class="n">csds_pb2</span><span class="o">.</span><span class="n">ClientStatusResponse</span><span class="o">.</span><span class="n">FromString</span><span class="p">(</span>
<span class="n">cygrpc</span><span class="o">.</span><span class="n">dump_xds_configs</span><span class="p">()</span>
<span class="p">)</span>
<span class="nd">@staticmethod</span>
<span class="k">def</span><span class="w"> </span><span class="nf">StreamClientStatus</span><span class="p">(</span><span class="n">request_iterator</span><span class="p">,</span> <span class="n">context</span><span class="p">):</span>
<span class="k">for</span> <span class="n">request</span> <span class="ow">in</span> <span class="n">request_iterator</span><span class="p">:</span>
<span class="k">yield</span> <span class="n">ClientStatusDiscoveryServiceServicer</span><span class="o">.</span><span class="n">FetchClientStatus</span><span class="p">(</span>
<span class="n">request</span><span class="p">,</span> <span class="n">context</span>
<span class="p">)</span></div>
<div class="viewcode-block" id="add_csds_servicer">
<a class="viewcode-back" href="../grpc_csds.html#grpc_csds.add_csds_servicer">[docs]</a>
<span class="k">def</span><span class="w"> </span><span class="nf">add_csds_servicer</span><span class="p">(</span><span class="n">server</span><span class="p">):</span>
<span class="w"> </span><span class="sd">&quot;&quot;&quot;Register CSDS servicer to a server.</span>
<span class="sd"> CSDS is part of xDS protocol used to expose in-effective traffic</span>
<span class="sd"> configuration (or xDS resources). It focuses on simplify the debugging of</span>
<span class="sd"> unexpected routing behaviors, which could be due to a misconfiguration,</span>
<span class="sd"> unhealthy backends or issues in the control or data plane.</span>
<span class="sd"> Args:</span>
<span class="sd"> server: A gRPC server to which the CSDS service will be added.</span>
<span class="sd"> &quot;&quot;&quot;</span>
<span class="n">csds_pb2_grpc</span><span class="o">.</span><span class="n">add_ClientStatusDiscoveryServiceServicer_to_server</span><span class="p">(</span>
<span class="n">ClientStatusDiscoveryServiceServicer</span><span class="p">(),</span> <span class="n">server</span>
<span class="p">)</span></div>
<span class="n">__all__</span> <span class="o">=</span> <span class="p">[</span><span class="s2">&quot;ClientStatusDiscoveryServiceServicer&quot;</span><span class="p">,</span> <span class="s2">&quot;add_csds_servicer&quot;</span><span class="p">]</span>
</pre></div>
</div>
</div>
</div>
<div class="clearer"></div>
</div>
<div class="footer">
&#169;2025, The gRPC Authors.
</div>
<script>
var _gaq = _gaq || [];
_gaq.push(['_setAccount', 'UA-60127042-1']);
_gaq.push(['_setDomainName', 'none']);
_gaq.push(['_setAllowLinker', true]);
_gaq.push(['_trackPageview']);
(function() {
var ga = document.createElement('script'); ga.async = true;
ga.src = ('https:' == document.location.protocol ? 'https://ssl' : 'https://www') + '.google-analytics.com/ga.js';
var s = document.getElementsByTagName('script')[0]; s.parentNode.insertBefore(ga, s);
})();
</script>
</body>
</html>