




<!DOCTYPE html>
<!--[if IE 8]><html class="no-js lt-ie9" lang="en" > <![endif]-->
<!--[if gt IE 8]><!--> <html class="no-js" lang="en" > <!--<![endif]-->
<head>
  <meta charset="utf-8">
  
  <meta name="viewport" content="width=device-width, initial-scale=1.0">
  
  <title>airflow.hooks.zendesk_hook &mdash; Airflow Documentation</title>
  

  
  
  
  

  
  <script type="text/javascript" src="../../../_static/js/modernizr.min.js"></script>
  
    
      <script type="text/javascript" id="documentation_options" data-url_root="../../../" src="../../../_static/documentation_options.js"></script>
        <script type="text/javascript" src="../../../_static/jquery.js"></script>
        <script type="text/javascript" src="../../../_static/underscore.js"></script>
        <script type="text/javascript" src="../../../_static/doctools.js"></script>
        <script type="text/javascript" src="../../../_static/language_data.js"></script>
    
    <script type="text/javascript" src="../../../_static/js/theme.js"></script>

    

  
  <link rel="stylesheet" href="../../../_static/css/theme.css" type="text/css" />
  <link rel="stylesheet" href="../../../_static/pygments.css" type="text/css" />
    <link rel="index" title="Index" href="../../../genindex.html" />
    <link rel="search" title="Search" href="../../../search.html" />
   
  <script>
    document.addEventListener('DOMContentLoaded', function() {
      var el = document.getElementById('changelog');
      if (el !== null ) {
        // [AIRFLOW-...]
        el.innerHTML = el.innerHTML.replace(
            /\[(AIRFLOW-[\d]+)\]/g,
            `<a href="https://issues.apache.org/jira/browse/$1">[$1]</a>`
        );
        // (#...)
        el.innerHTML = el.innerHTML.replace(
            /\(#([\d]+)\)/g,
            `<a href="https://github.com/apache/airflow/pull/$1">(#$1)</a>`
        );
      };
    })
  </script>
<!-- Matomo -->
<script>
  var _paq = window._paq = window._paq || [];
  _paq.push(['disableCookies']);
  _paq.push(['trackPageView']);
  _paq.push(['enableLinkTracking']);
  (function() {
    var u="https://analytics.apache.org/";
    _paq.push(['setTrackerUrl', u+'matomo.php']);
    _paq.push(['setSiteId', '13']);
    var d=document, g=d.createElement('script'), s=d.getElementsByTagName('script')[0];
    g.async=true; g.src=u+'matomo.js'; s.parentNode.insertBefore(g,s);
  })();
</script>
<!-- End Matomo -->
  <style>
    .example-header {
      position: relative;
      background: #9AAA7A;
      padding: 8px 16px;
      margin-bottom: 0;
    }
    .example-header--with-button {
      padding-right: 166px;
    }
    .example-header:after{
      content: '';
      display: table;
      clear: both;
    }
    .example-title {
      display:block;
      padding: 4px;
      margin-right: 16px;
      color: white;
      overflow-x: auto;
    }
    .example-header-button {
      top: 8px;
      right: 16px;
      position: absolute;
    }
    .example-header + .highlight-python {
      margin-top: 0 !important;
    }
    .viewcode-button {
      display: inline-block;
      padding: 8px 16px;
      border: 0;
      margin: 0;
      outline: 0;
      border-radius: 2px;
      -webkit-box-shadow: 0 3px 5px 0 rgba(0,0,0,.3);
      box-shadow: 0 3px 6px 0 rgba(0,0,0,.3);
      color: #404040;
      background-color: #e7e7e7;
      cursor: pointer;
      font-size: 16px;
      font-weight: 500;
      line-height: 1;
      text-decoration: none;
      text-overflow: ellipsis;
      overflow: hidden;
      text-transform: uppercase;
      -webkit-transition: background-color .2s;
      transition: background-color .2s;
      vertical-align: middle;
      white-space: nowrap;
    }
    .viewcode-button:visited {
      color: #404040;
    }
    .viewcode-button:hover, .viewcode-button:focus {
      color: #404040;
      background-color: #d6d6d6;
    }
  </style>

</head>

<body class="wy-body-for-nav">

   
  <div class="wy-grid-for-nav">
    
    <nav data-toggle="wy-nav-shift" class="wy-nav-side">
      <div class="wy-side-scroll">
        <div class="wy-side-nav-search" >
          

          
            <a href="../../../index.html" class="icon icon-home"> Airflow
          

          
          </a>

          
            
            
              <div class="version">
                1.10.5
              </div>
            
          

          
<div role="search">
  <form id="rtd-search-form" class="wy-form" action="../../../search.html" method="get">
    <input type="text" name="q" placeholder="Search docs" />
    <input type="hidden" name="check_keywords" value="yes" />
    <input type="hidden" name="area" value="default" />
  </form>
</div>

          
        </div>

        <div class="wy-menu wy-menu-vertical" data-spy="affix" role="navigation" aria-label="main navigation">
          
            
            
              
            
            
              <ul>
<li class="toctree-l1"><a class="reference internal" href="../../../project.html">Project</a></li>
<li class="toctree-l1"><a class="reference internal" href="../../../license.html">License</a></li>
<li class="toctree-l1"><a class="reference internal" href="../../../start.html">Quick Start</a></li>
<li class="toctree-l1"><a class="reference internal" href="../../../installation.html">Installation</a></li>
<li class="toctree-l1"><a class="reference internal" href="../../../tutorial.html">Tutorial</a></li>
<li class="toctree-l1"><a class="reference internal" href="../../../howto/index.html">How-to Guides</a></li>
<li class="toctree-l1"><a class="reference internal" href="../../../ui.html">UI / Screenshots</a></li>
<li class="toctree-l1"><a class="reference internal" href="../../../concepts.html">Concepts</a></li>
<li class="toctree-l1"><a class="reference internal" href="../../../profiling.html">Data Profiling</a></li>
<li class="toctree-l1"><a class="reference internal" href="../../../cli.html">Command Line Interface Reference</a></li>
<li class="toctree-l1"><a class="reference internal" href="../../../scheduler.html">Scheduling &amp; Triggers</a></li>
<li class="toctree-l1"><a class="reference internal" href="../../../plugins.html">Plugins</a></li>
<li class="toctree-l1"><a class="reference internal" href="../../../security.html">Security</a></li>
<li class="toctree-l1"><a class="reference internal" href="../../../timezone.html">Time zones</a></li>
<li class="toctree-l1"><a class="reference internal" href="../../../api.html">REST API Reference</a></li>
<li class="toctree-l1"><a class="reference internal" href="../../../integration.html">Integration</a></li>
<li class="toctree-l1"><a class="reference internal" href="../../../metrics.html">Metrics</a></li>
<li class="toctree-l1"><a class="reference internal" href="../../../kubernetes.html">Kubernetes</a></li>
<li class="toctree-l1"><a class="reference internal" href="../../../lineage.html">Lineage</a></li>
<li class="toctree-l1"><a class="reference internal" href="../../../changelog.html">Changelog</a></li>
<li class="toctree-l1"><a class="reference internal" href="../../../faq.html">FAQ</a></li>
<li class="toctree-l1"><a class="reference internal" href="../../../macros.html">Macros reference</a></li>
<li class="toctree-l1"><a class="reference internal" href="../../../_api/index.html">Python API Reference</a></li>
<li class="toctree-l1"><a class="reference internal" href="../../../privacy_notice.html">Privacy Notice</a></li>
</ul>

            
          
        </div>
      </div>
    </nav>

    <section data-toggle="wy-nav-shift" class="wy-nav-content-wrap">

      
      <nav class="wy-nav-top" aria-label="top navigation">
        
          <i data-toggle="wy-nav-top" class="fa fa-bars"></i>
          <a href="../../../index.html">Airflow</a>
        
      </nav>


      <div class="wy-nav-content">
        
        <div class="rst-content">
        
          















<div role="navigation" aria-label="breadcrumbs navigation">

  <ul class="wy-breadcrumbs">
    
      <li><a href="../../../index.html">Docs</a> &raquo;</li>
        
          <li><a href="../../index.html">Module code</a> &raquo;</li>
        
          <li><a href="../hooks.html">airflow.hooks</a> &raquo;</li>
        
      <li>airflow.hooks.zendesk_hook</li>
    
    
      <li class="wy-breadcrumbs-aside">
        
      </li>
    
  </ul>

  
  <hr/>
</div>
          <div role="main" class="document" itemscope="itemscope" itemtype="http://schema.org/Article">
           <div itemprop="articleBody">
            
  <h1>Source code for airflow.hooks.zendesk_hook</h1><div class="highlight"><pre>
<span></span><span class="c1"># -*- coding: utf-8 -*-</span>
<span class="c1">#</span>
<span class="c1"># Licensed to the Apache Software Foundation (ASF) under one</span>
<span class="c1"># or more contributor license agreements.  See the NOTICE file</span>
<span class="c1"># distributed with this work for additional information</span>
<span class="c1"># regarding copyright ownership.  The ASF licenses this file</span>
<span class="c1"># to you under the Apache License, Version 2.0 (the</span>
<span class="c1"># &quot;License&quot;); you may not use this file except in compliance</span>
<span class="c1"># with the License.  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,</span>
<span class="c1"># software distributed under the License is distributed on an</span>
<span class="c1"># &quot;AS IS&quot; BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY</span>
<span class="c1"># KIND, either express or implied.  See the License for the</span>
<span class="c1"># specific language governing permissions and limitations</span>
<span class="c1"># under the License.</span>

<span class="kn">import</span> <span class="nn">time</span>
<span class="kn">from</span> <span class="nn">zdesk</span> <span class="k">import</span> <span class="n">Zendesk</span><span class="p">,</span> <span class="n">RateLimitError</span><span class="p">,</span> <span class="n">ZendeskError</span>
<span class="kn">from</span> <span class="nn">airflow.hooks.base_hook</span> <span class="k">import</span> <span class="n">BaseHook</span>


<div class="viewcode-block" id="ZendeskHook"><a class="viewcode-back" href="../../../_api/airflow/hooks/zendesk_hook/index.html#airflow.hooks.zendesk_hook.ZendeskHook">[docs]</a><span class="k">class</span> <span class="nc">ZendeskHook</span><span class="p">(</span><span class="n">BaseHook</span><span class="p">):</span>
    <span class="sd">&quot;&quot;&quot;</span>
<span class="sd">    A hook to talk to Zendesk</span>
<span class="sd">    &quot;&quot;&quot;</span>
    <span class="k">def</span> <span class="nf">__init__</span><span class="p">(</span><span class="bp">self</span><span class="p">,</span> <span class="n">zendesk_conn_id</span><span class="p">):</span>
        <span class="bp">self</span><span class="o">.</span><span class="n">__zendesk_conn_id</span> <span class="o">=</span> <span class="n">zendesk_conn_id</span>
        <span class="bp">self</span><span class="o">.</span><span class="n">__url</span> <span class="o">=</span> <span class="kc">None</span>

<div class="viewcode-block" id="ZendeskHook.get_conn"><a class="viewcode-back" href="../../../_api/airflow/hooks/zendesk_hook/index.html#airflow.hooks.zendesk_hook.ZendeskHook.get_conn">[docs]</a>    <span class="k">def</span> <span class="nf">get_conn</span><span class="p">(</span><span class="bp">self</span><span class="p">):</span>
        <span class="n">conn</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">get_connection</span><span class="p">(</span><span class="bp">self</span><span class="o">.</span><span class="n">__zendesk_conn_id</span><span class="p">)</span>
        <span class="bp">self</span><span class="o">.</span><span class="n">__url</span> <span class="o">=</span> <span class="s2">&quot;https://&quot;</span> <span class="o">+</span> <span class="n">conn</span><span class="o">.</span><span class="n">host</span>
        <span class="k">return</span> <span class="n">Zendesk</span><span class="p">(</span><span class="n">zdesk_url</span><span class="o">=</span><span class="bp">self</span><span class="o">.</span><span class="n">__url</span><span class="p">,</span> <span class="n">zdesk_email</span><span class="o">=</span><span class="n">conn</span><span class="o">.</span><span class="n">login</span><span class="p">,</span> <span class="n">zdesk_password</span><span class="o">=</span><span class="n">conn</span><span class="o">.</span><span class="n">password</span><span class="p">,</span>
                       <span class="n">zdesk_token</span><span class="o">=</span><span class="kc">True</span><span class="p">)</span></div>

<div class="viewcode-block" id="ZendeskHook.__handle_rate_limit_exception"><a class="viewcode-back" href="../../../_api/airflow/hooks/zendesk_hook/index.html#airflow.hooks.zendesk_hook.ZendeskHook.__handle_rate_limit_exception">[docs]</a>    <span class="k">def</span> <span class="nf">__handle_rate_limit_exception</span><span class="p">(</span><span class="bp">self</span><span class="p">,</span> <span class="n">rate_limit_exception</span><span class="p">):</span>
        <span class="sd">&quot;&quot;&quot;</span>
<span class="sd">        Sleep for the time specified in the exception. If not specified, wait</span>
<span class="sd">        for 60 seconds.</span>
<span class="sd">        &quot;&quot;&quot;</span>
        <span class="n">retry_after</span> <span class="o">=</span> <span class="nb">int</span><span class="p">(</span>
            <span class="n">rate_limit_exception</span><span class="o">.</span><span class="n">response</span><span class="o">.</span><span class="n">headers</span><span class="o">.</span><span class="n">get</span><span class="p">(</span><span class="s1">&#39;Retry-After&#39;</span><span class="p">,</span> <span class="mi">60</span><span class="p">))</span>
        <span class="bp">self</span><span class="o">.</span><span class="n">log</span><span class="o">.</span><span class="n">info</span><span class="p">(</span>
            <span class="s2">&quot;Hit Zendesk API rate limit. Pausing for </span><span class="si">%s</span><span class="s2"> seconds&quot;</span><span class="p">,</span>
            <span class="n">retry_after</span>
        <span class="p">)</span>
        <span class="n">time</span><span class="o">.</span><span class="n">sleep</span><span class="p">(</span><span class="n">retry_after</span><span class="p">)</span></div>

<div class="viewcode-block" id="ZendeskHook.call"><a class="viewcode-back" href="../../../_api/airflow/hooks/zendesk_hook/index.html#airflow.hooks.zendesk_hook.ZendeskHook.call">[docs]</a>    <span class="k">def</span> <span class="nf">call</span><span class="p">(</span><span class="bp">self</span><span class="p">,</span> <span class="n">path</span><span class="p">,</span> <span class="n">query</span><span class="o">=</span><span class="kc">None</span><span class="p">,</span> <span class="n">get_all_pages</span><span class="o">=</span><span class="kc">True</span><span class="p">,</span> <span class="n">side_loading</span><span class="o">=</span><span class="kc">False</span><span class="p">):</span>
        <span class="sd">&quot;&quot;&quot;</span>
<span class="sd">        Call Zendesk API and return results</span>

<span class="sd">        :param path: The Zendesk API to call</span>
<span class="sd">        :param query: Query parameters</span>
<span class="sd">        :param get_all_pages: Accumulate results over all pages before</span>
<span class="sd">               returning. Due to strict rate limiting, this can often timeout.</span>
<span class="sd">               Waits for recommended period between tries after a timeout.</span>
<span class="sd">        :param side_loading: Retrieve related records as part of a single</span>
<span class="sd">               request. In order to enable side-loading, add an &#39;include&#39;</span>
<span class="sd">               query parameter containing a comma-separated list of resources</span>
<span class="sd">               to load. For more information on side-loading see</span>
<span class="sd">               https://developer.zendesk.com/rest_api/docs/core/side_loading</span>
<span class="sd">        &quot;&quot;&quot;</span>
        <span class="n">zendesk</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">get_conn</span><span class="p">()</span>
        <span class="n">first_request_successful</span> <span class="o">=</span> <span class="kc">False</span>

        <span class="k">while</span> <span class="ow">not</span> <span class="n">first_request_successful</span><span class="p">:</span>
            <span class="k">try</span><span class="p">:</span>
                <span class="n">results</span> <span class="o">=</span> <span class="n">zendesk</span><span class="o">.</span><span class="n">call</span><span class="p">(</span><span class="n">path</span><span class="p">,</span> <span class="n">query</span><span class="p">)</span>
                <span class="n">first_request_successful</span> <span class="o">=</span> <span class="kc">True</span>
            <span class="k">except</span> <span class="n">RateLimitError</span> <span class="k">as</span> <span class="n">rle</span><span class="p">:</span>
                <span class="bp">self</span><span class="o">.</span><span class="n">__handle_rate_limit_exception</span><span class="p">(</span><span class="n">rle</span><span class="p">)</span>

        <span class="c1"># Find the key with the results</span>
        <span class="n">keys</span> <span class="o">=</span> <span class="p">[</span><span class="n">path</span><span class="o">.</span><span class="n">split</span><span class="p">(</span><span class="s2">&quot;/&quot;</span><span class="p">)[</span><span class="o">-</span><span class="mi">1</span><span class="p">]</span><span class="o">.</span><span class="n">split</span><span class="p">(</span><span class="s2">&quot;.json&quot;</span><span class="p">)[</span><span class="mi">0</span><span class="p">]]</span>
        <span class="n">next_page</span> <span class="o">=</span> <span class="n">results</span><span class="p">[</span><span class="s1">&#39;next_page&#39;</span><span class="p">]</span>
        <span class="k">if</span> <span class="n">side_loading</span><span class="p">:</span>
            <span class="n">keys</span> <span class="o">+=</span> <span class="n">query</span><span class="p">[</span><span class="s1">&#39;include&#39;</span><span class="p">]</span><span class="o">.</span><span class="n">split</span><span class="p">(</span><span class="s1">&#39;,&#39;</span><span class="p">)</span>
        <span class="n">results</span> <span class="o">=</span> <span class="p">{</span><span class="n">key</span><span class="p">:</span> <span class="n">results</span><span class="p">[</span><span class="n">key</span><span class="p">]</span> <span class="k">for</span> <span class="n">key</span> <span class="ow">in</span> <span class="n">keys</span><span class="p">}</span>

        <span class="k">if</span> <span class="n">get_all_pages</span><span class="p">:</span>
            <span class="k">while</span> <span class="n">next_page</span> <span class="ow">is</span> <span class="ow">not</span> <span class="kc">None</span><span class="p">:</span>
                <span class="k">try</span><span class="p">:</span>
                    <span class="c1"># Need to split because the next page URL has</span>
                    <span class="c1"># `github.zendesk...`</span>
                    <span class="c1"># in it, but the call function needs it removed.</span>
                    <span class="n">next_url</span> <span class="o">=</span> <span class="n">next_page</span><span class="o">.</span><span class="n">split</span><span class="p">(</span><span class="bp">self</span><span class="o">.</span><span class="n">__url</span><span class="p">)[</span><span class="mi">1</span><span class="p">]</span>
                    <span class="bp">self</span><span class="o">.</span><span class="n">log</span><span class="o">.</span><span class="n">info</span><span class="p">(</span><span class="s2">&quot;Calling </span><span class="si">%s</span><span class="s2">&quot;</span><span class="p">,</span> <span class="n">next_url</span><span class="p">)</span>
                    <span class="n">more_res</span> <span class="o">=</span> <span class="n">zendesk</span><span class="o">.</span><span class="n">call</span><span class="p">(</span><span class="n">next_url</span><span class="p">)</span>
                    <span class="k">for</span> <span class="n">key</span> <span class="ow">in</span> <span class="n">results</span><span class="p">:</span>
                        <span class="n">results</span><span class="p">[</span><span class="n">key</span><span class="p">]</span><span class="o">.</span><span class="n">extend</span><span class="p">(</span><span class="n">more_res</span><span class="p">[</span><span class="n">key</span><span class="p">])</span>
                    <span class="k">if</span> <span class="n">next_page</span> <span class="o">==</span> <span class="n">more_res</span><span class="p">[</span><span class="s1">&#39;next_page&#39;</span><span class="p">]:</span>
                        <span class="c1"># Unfortunately zdesk doesn&#39;t always throw ZendeskError</span>
                        <span class="c1"># when we are done getting all the data. Sometimes the</span>
                        <span class="c1"># next just refers to the current set of results.</span>
                        <span class="c1"># Hence, need to deal with this special case</span>
                        <span class="k">break</span>
                    <span class="k">else</span><span class="p">:</span>
                        <span class="n">next_page</span> <span class="o">=</span> <span class="n">more_res</span><span class="p">[</span><span class="s1">&#39;next_page&#39;</span><span class="p">]</span>
                <span class="k">except</span> <span class="n">RateLimitError</span> <span class="k">as</span> <span class="n">rle</span><span class="p">:</span>
                    <span class="bp">self</span><span class="o">.</span><span class="n">__handle_rate_limit_exception</span><span class="p">(</span><span class="n">rle</span><span class="p">)</span>
                <span class="k">except</span> <span class="n">ZendeskError</span> <span class="k">as</span> <span class="n">ze</span><span class="p">:</span>
                    <span class="k">if</span> <span class="sa">b</span><span class="s2">&quot;Use a start_time older than 5 minutes&quot;</span> <span class="ow">in</span> <span class="n">ze</span><span class="o">.</span><span class="n">msg</span><span class="p">:</span>
                        <span class="c1"># We have pretty up to date data</span>
                        <span class="k">break</span>
                    <span class="k">else</span><span class="p">:</span>
                        <span class="k">raise</span> <span class="n">ze</span>

        <span class="k">return</span> <span class="n">results</span></div></div>
</pre></div>

           </div>
           
          </div>
          

<footer>
  

  <hr/>

  <div role="contentinfo">
    <p>

    </p>
  </div>
  Built with <a href="http://sphinx-doc.org/">Sphinx</a> using a <a href="https://github.com/rtfd/sphinx_rtd_theme">theme</a> provided by <a href="https://readthedocs.org">Read the Docs</a>.


</footer>

        </div>
      </div>

    </section>

  </div>
  


  <script type="text/javascript">
      jQuery(function () {
          SphinxRtdTheme.Navigation.enable(true);
      });
  </script>

  
  
    
   

</body>
</html>
