removed the built docs from the repository

This commit is contained in:
Walter A. Boring IV 2013-12-12 16:46:59 -08:00
parent 943f1f189d
commit 86e1c3178a
64 changed files with 0 additions and 19024 deletions

Binary file not shown.

Binary file not shown.

Binary file not shown.

Binary file not shown.

Binary file not shown.

Binary file not shown.

Binary file not shown.

View File

@ -1,4 +0,0 @@
# Sphinx build info version 1
# This file hashes the configuration used when building these files. When it is not found, a full rebuild will be done.
config: 526306b7904f34b2dc7f0e35d98b76a4
tags: fbb0d17656682115ca4d033fb2f83ba1

View File

@ -1,128 +0,0 @@
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN"
"http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
<title>hplefthandclient &mdash; HP LeftHand REST Client 1.0.0 documentation</title>
<link rel="stylesheet" href="../_static/default.css" type="text/css" />
<link rel="stylesheet" href="../_static/pygments.css" type="text/css" />
<script type="text/javascript">
var DOCUMENTATION_OPTIONS = {
URL_ROOT: '../',
VERSION: '1.0.0',
COLLAPSE_INDEX: false,
FILE_SUFFIX: '.html',
HAS_SOURCE: true
};
</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>
<link rel="top" title="HP LeftHand REST Client 1.0.0 documentation" href="../index.html" />
<link rel="up" title="Module code" href="index.html" />
</head>
<body>
<div class="related">
<h3>Navigation</h3>
<ul>
<li class="right" style="margin-right: 10px">
<a href="../genindex.html" title="General Index"
accesskey="I">index</a></li>
<li class="right" >
<a href="../py-modindex.html" title="Python Module Index"
>modules</a> |</li>
<li><a href="../index.html">HP LeftHand REST Client 1.0.0 documentation</a> &raquo;</li>
<li><a href="index.html" accesskey="U">Module code</a> &raquo;</li>
</ul>
</div>
<div class="document">
<div class="documentwrapper">
<div class="bodywrapper">
<div class="body">
<h1>Source code for hplefthandclient</h1><div class="highlight"><pre>
<span class="c"># vim: tabstop=4 shiftwidth=4 softtabstop=4</span>
<span class="c">#</span>
<span class="c"># Copyright 2013 Hewlett Packard Development Company, L.P.</span>
<span class="c"># All Rights Reserved.</span>
<span class="c">#</span>
<span class="c"># Licensed under the Apache License, Version 2.0 (the &quot;License&quot;); you may</span>
<span class="c"># not use this file except in compliance with the License. You may obtain</span>
<span class="c"># a copy of the License at</span>
<span class="c">#</span>
<span class="c"># http://www.apache.org/licenses/LICENSE-2.0</span>
<span class="c">#</span>
<span class="c"># Unless required by applicable law or agreed to in writing, software</span>
<span class="c"># distributed under the License is distributed on an &quot;AS IS&quot; BASIS, WITHOUT</span>
<span class="c"># WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the</span>
<span class="c"># License for the specific language governing permissions and limitations</span>
<span class="c"># under the License.</span>
<span class="sd">&quot;&quot;&quot;</span>
<span class="sd">HP LeftHand REST Client</span>
<span class="sd">:Author: Walter A. Boring IV</span>
<span class="sd">:Copyright: Copyright 2013, Hewlett Packard Development Company, L.P.</span>
<span class="sd">:License: Apache v2.0</span>
<span class="sd"> </span>
<span class="sd">&quot;&quot;&quot;</span>
<span class="n">version_tuple</span> <span class="o">=</span> <span class="p">(</span><span class="mi">1</span><span class="p">,</span> <span class="mi">0</span><span class="p">,</span> <span class="mi">0</span><span class="p">)</span>
<span class="k">def</span> <span class="nf">get_version_string</span><span class="p">():</span>
<span class="k">if</span> <span class="nb">isinstance</span><span class="p">(</span><span class="n">version_tuple</span><span class="p">[</span><span class="o">-</span><span class="mi">1</span><span class="p">],</span> <span class="nb">basestring</span><span class="p">):</span>
<span class="k">return</span> <span class="s">&#39;.&#39;</span><span class="o">.</span><span class="n">join</span><span class="p">(</span><span class="nb">map</span><span class="p">(</span><span class="nb">str</span><span class="p">,</span> <span class="n">version_tuple</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">version_tuple</span><span class="p">[</span><span class="o">-</span><span class="mi">1</span><span class="p">]</span>
<span class="k">return</span> <span class="s">&#39;.&#39;</span><span class="o">.</span><span class="n">join</span><span class="p">(</span><span class="nb">map</span><span class="p">(</span><span class="nb">str</span><span class="p">,</span> <span class="n">version_tuple</span><span class="p">))</span>
<span class="n">version</span> <span class="o">=</span> <span class="n">get_version_string</span><span class="p">()</span>
<span class="sd">&quot;&quot;&quot;Current version of HPLeftHandClient.&quot;&quot;&quot;</span>
</pre></div>
</div>
</div>
</div>
<div class="sphinxsidebar">
<div class="sphinxsidebarwrapper">
<div id="searchbox" style="display: none">
<h3>Quick search</h3>
<form class="search" action="../search.html" method="get">
<input type="text" name="q" />
<input type="submit" value="Go" />
<input type="hidden" name="check_keywords" value="yes" />
<input type="hidden" name="area" value="default" />
</form>
<p class="searchtip" style="font-size: 90%">
Enter search terms or a module, class or function name.
</p>
</div>
<script type="text/javascript">$('#searchbox').show(0);</script>
</div>
</div>
<div class="clearer"></div>
</div>
<div class="related">
<h3>Navigation</h3>
<ul>
<li class="right" style="margin-right: 10px">
<a href="../genindex.html" title="General Index"
>index</a></li>
<li class="right" >
<a href="../py-modindex.html" title="Python Module Index"
>modules</a> |</li>
<li><a href="../index.html">HP LeftHand REST Client 1.0.0 documentation</a> &raquo;</li>
<li><a href="index.html" >Module code</a> &raquo;</li>
</ul>
</div>
<div class="footer">
&copy; Copyright 2013 Hewlett Packard Development Company, L.P..
Created using <a href="http://sphinx.pocoo.org/">Sphinx</a> 1.1.3.
</div>
</body>
</html>

View File

@ -1,130 +0,0 @@
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN"
"http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
<title>hplefthandclient.__init__ &mdash; HP LeftHand REST Client 1.0.0 documentation</title>
<link rel="stylesheet" href="../../_static/default.css" type="text/css" />
<link rel="stylesheet" href="../../_static/pygments.css" type="text/css" />
<script type="text/javascript">
var DOCUMENTATION_OPTIONS = {
URL_ROOT: '../../',
VERSION: '1.0.0',
COLLAPSE_INDEX: false,
FILE_SUFFIX: '.html',
HAS_SOURCE: true
};
</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>
<link rel="top" title="HP LeftHand REST Client 1.0.0 documentation" href="../../index.html" />
<link rel="up" title="hplefthandclient" href="../hplefthandclient.html" />
</head>
<body>
<div class="related">
<h3>Navigation</h3>
<ul>
<li class="right" style="margin-right: 10px">
<a href="../../genindex.html" title="General Index"
accesskey="I">index</a></li>
<li class="right" >
<a href="../../py-modindex.html" title="Python Module Index"
>modules</a> |</li>
<li><a href="../../index.html">HP LeftHand REST Client 1.0.0 documentation</a> &raquo;</li>
<li><a href="../index.html" >Module code</a> &raquo;</li>
<li><a href="../hplefthandclient.html" accesskey="U">hplefthandclient</a> &raquo;</li>
</ul>
</div>
<div class="document">
<div class="documentwrapper">
<div class="bodywrapper">
<div class="body">
<h1>Source code for hplefthandclient.__init__</h1><div class="highlight"><pre>
<span class="c"># vim: tabstop=4 shiftwidth=4 softtabstop=4</span>
<span class="c">#</span>
<span class="c"># Copyright 2013 Hewlett Packard Development Company, L.P.</span>
<span class="c"># All Rights Reserved.</span>
<span class="c">#</span>
<span class="c"># Licensed under the Apache License, Version 2.0 (the &quot;License&quot;); you may</span>
<span class="c"># not use this file except in compliance with the License. You may obtain</span>
<span class="c"># a copy of the License at</span>
<span class="c">#</span>
<span class="c"># http://www.apache.org/licenses/LICENSE-2.0</span>
<span class="c">#</span>
<span class="c"># Unless required by applicable law or agreed to in writing, software</span>
<span class="c"># distributed under the License is distributed on an &quot;AS IS&quot; BASIS, WITHOUT</span>
<span class="c"># WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the</span>
<span class="c"># License for the specific language governing permissions and limitations</span>
<span class="c"># under the License.</span>
<span class="sd">&quot;&quot;&quot;</span>
<span class="sd">HP LeftHand REST Client</span>
<span class="sd">:Author: Walter A. Boring IV</span>
<span class="sd">:Copyright: Copyright 2013, Hewlett Packard Development Company, L.P.</span>
<span class="sd">:License: Apache v2.0</span>
<span class="sd"> </span>
<span class="sd">&quot;&quot;&quot;</span>
<span class="n">version_tuple</span> <span class="o">=</span> <span class="p">(</span><span class="mi">1</span><span class="p">,</span> <span class="mi">0</span><span class="p">,</span> <span class="mi">0</span><span class="p">)</span>
<div class="viewcode-block" id="get_version_string"><a class="viewcode-back" href="../../hplefthandclient.html#hplefthandclient.__init__.get_version_string">[docs]</a><span class="k">def</span> <span class="nf">get_version_string</span><span class="p">():</span>
<span class="k">if</span> <span class="nb">isinstance</span><span class="p">(</span><span class="n">version_tuple</span><span class="p">[</span><span class="o">-</span><span class="mi">1</span><span class="p">],</span> <span class="nb">basestring</span><span class="p">):</span>
<span class="k">return</span> <span class="s">&#39;.&#39;</span><span class="o">.</span><span class="n">join</span><span class="p">(</span><span class="nb">map</span><span class="p">(</span><span class="nb">str</span><span class="p">,</span> <span class="n">version_tuple</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">version_tuple</span><span class="p">[</span><span class="o">-</span><span class="mi">1</span><span class="p">]</span>
<span class="k">return</span> <span class="s">&#39;.&#39;</span><span class="o">.</span><span class="n">join</span><span class="p">(</span><span class="nb">map</span><span class="p">(</span><span class="nb">str</span><span class="p">,</span> <span class="n">version_tuple</span><span class="p">))</span>
</div>
<span class="n">version</span> <span class="o">=</span> <span class="n">get_version_string</span><span class="p">()</span>
<span class="sd">&quot;&quot;&quot;Current version of HPLeftHandClient.&quot;&quot;&quot;</span>
</pre></div>
</div>
</div>
</div>
<div class="sphinxsidebar">
<div class="sphinxsidebarwrapper">
<div id="searchbox" style="display: none">
<h3>Quick search</h3>
<form class="search" action="../../search.html" method="get">
<input type="text" name="q" />
<input type="submit" value="Go" />
<input type="hidden" name="check_keywords" value="yes" />
<input type="hidden" name="area" value="default" />
</form>
<p class="searchtip" style="font-size: 90%">
Enter search terms or a module, class or function name.
</p>
</div>
<script type="text/javascript">$('#searchbox').show(0);</script>
</div>
</div>
<div class="clearer"></div>
</div>
<div class="related">
<h3>Navigation</h3>
<ul>
<li class="right" style="margin-right: 10px">
<a href="../../genindex.html" title="General Index"
>index</a></li>
<li class="right" >
<a href="../../py-modindex.html" title="Python Module Index"
>modules</a> |</li>
<li><a href="../../index.html">HP LeftHand REST Client 1.0.0 documentation</a> &raquo;</li>
<li><a href="../index.html" >Module code</a> &raquo;</li>
<li><a href="../hplefthandclient.html" >hplefthandclient</a> &raquo;</li>
</ul>
</div>
<div class="footer">
&copy; Copyright 2013 Hewlett Packard Development Company, L.P..
Created using <a href="http://sphinx.pocoo.org/">Sphinx</a> 1.1.3.
</div>
</body>
</html>

View File

@ -1,594 +0,0 @@
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN"
"http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
<title>hplefthandclient.client &mdash; HP LeftHand REST Client 1.0.0 documentation</title>
<link rel="stylesheet" href="../../_static/default.css" type="text/css" />
<link rel="stylesheet" href="../../_static/pygments.css" type="text/css" />
<script type="text/javascript">
var DOCUMENTATION_OPTIONS = {
URL_ROOT: '../../',
VERSION: '1.0.0',
COLLAPSE_INDEX: false,
FILE_SUFFIX: '.html',
HAS_SOURCE: true
};
</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>
<link rel="top" title="HP LeftHand REST Client 1.0.0 documentation" href="../../index.html" />
<link rel="up" title="hplefthandclient" href="../hplefthandclient.html" />
</head>
<body>
<div class="related">
<h3>Navigation</h3>
<ul>
<li class="right" style="margin-right: 10px">
<a href="../../genindex.html" title="General Index"
accesskey="I">index</a></li>
<li class="right" >
<a href="../../py-modindex.html" title="Python Module Index"
>modules</a> |</li>
<li><a href="../../index.html">HP LeftHand REST Client 1.0.0 documentation</a> &raquo;</li>
<li><a href="../index.html" >Module code</a> &raquo;</li>
<li><a href="../hplefthandclient.html" accesskey="U">hplefthandclient</a> &raquo;</li>
</ul>
</div>
<div class="document">
<div class="documentwrapper">
<div class="bodywrapper">
<div class="body">
<h1>Source code for hplefthandclient.client</h1><div class="highlight"><pre>
<span class="c"># vim: tabstop=4 shiftwidth=4 softtabstop=4</span>
<span class="c">#</span>
<span class="c"># Copyright 2012 Hewlett Packard Development Company, L.P.</span>
<span class="c"># All Rights Reserved.</span>
<span class="c">#</span>
<span class="c"># Licensed under the Apache License, Version 2.0 (the &quot;License&quot;); you may</span>
<span class="c"># not use this file except in compliance with the License. You may obtain</span>
<span class="c"># a copy of the License at</span>
<span class="c">#</span>
<span class="c"># http://www.apache.org/licenses/LICENSE-2.0</span>
<span class="c">#</span>
<span class="c"># Unless required by applicable law or agreed to in writing, software</span>
<span class="c"># distributed under the License is distributed on an &quot;AS IS&quot; BASIS, WITHOUT</span>
<span class="c"># WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the</span>
<span class="c"># License for the specific language governing permissions and limitations</span>
<span class="c"># under the License.</span>
<span class="sd">&quot;&quot;&quot;</span>
<span class="sd">HPLeftHand REST Client</span>
<span class="sd">.. module: HPLeftHandClient</span>
<span class="sd">.. moduleauthor: Kurt Martin</span>
<span class="sd">.. moduleauthor: Walter A. Boring IV</span>
<span class="sd">:Author: Kurt Martin</span>
<span class="sd">:Description: This is the LeftHand/StoreVirtual Client that talks to the</span>
<span class="sd">LeftHand OS REST Service.</span>
<span class="sd">This client requires and works with version 11.5 of the LeftHand firmware</span>
<span class="sd">&quot;&quot;&quot;</span>
<span class="kn">from</span> <span class="nn">hplefthandclient</span> <span class="kn">import</span> <span class="n">http</span>
<div class="viewcode-block" id="HPLeftHandClient"><a class="viewcode-back" href="../../hplefthandclient.html#hplefthandclient.client.HPLeftHandClient">[docs]</a><span class="k">class</span> <span class="nc">HPLeftHandClient</span><span class="p">:</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">api_url</span><span class="p">):</span>
<span class="bp">self</span><span class="o">.</span><span class="n">api_url</span> <span class="o">=</span> <span class="n">api_url</span>
<span class="bp">self</span><span class="o">.</span><span class="n">http</span> <span class="o">=</span> <span class="n">http</span><span class="o">.</span><span class="n">HTTPJSONRESTClient</span><span class="p">(</span><span class="bp">self</span><span class="o">.</span><span class="n">api_url</span><span class="p">)</span>
<div class="viewcode-block" id="HPLeftHandClient.debug_rest"><a class="viewcode-back" href="../../hplefthandclient.html#hplefthandclient.client.HPLeftHandClient.debug_rest">[docs]</a> <span class="k">def</span> <span class="nf">debug_rest</span><span class="p">(</span><span class="bp">self</span><span class="p">,</span> <span class="n">flag</span><span class="p">):</span>
<span class="sd">&quot;&quot;&quot;</span>
<span class="sd"> This is useful for debugging requests to 3PAR</span>
<span class="sd"> :param flag: set to True to enable debugging</span>
<span class="sd"> :type flag: bool</span>
<span class="sd"> &quot;&quot;&quot;</span>
<span class="bp">self</span><span class="o">.</span><span class="n">http</span><span class="o">.</span><span class="n">set_debug_flag</span><span class="p">(</span><span class="n">flag</span><span class="p">)</span>
</div>
<div class="viewcode-block" id="HPLeftHandClient.login"><a class="viewcode-back" href="../../hplefthandclient.html#hplefthandclient.client.HPLeftHandClient.login">[docs]</a> <span class="k">def</span> <span class="nf">login</span><span class="p">(</span><span class="bp">self</span><span class="p">,</span> <span class="n">username</span><span class="p">,</span> <span class="n">password</span><span class="p">):</span>
<span class="sd">&quot;&quot;&quot;</span>
<span class="sd"> This authenticates against the LH OS REST server and creates a session.</span>
<span class="sd"> :param username: The username</span>
<span class="sd"> :type username: str</span>
<span class="sd"> :param password: The password</span>
<span class="sd"> :type password: str</span>
<span class="sd"> :returns: None</span>
<span class="sd"> &quot;&quot;&quot;</span>
<span class="bp">self</span><span class="o">.</span><span class="n">http</span><span class="o">.</span><span class="n">authenticate</span><span class="p">(</span><span class="n">username</span><span class="p">,</span> <span class="n">password</span><span class="p">)</span>
</div>
<div class="viewcode-block" id="HPLeftHandClient.logout"><a class="viewcode-back" href="../../hplefthandclient.html#hplefthandclient.client.HPLeftHandClient.logout">[docs]</a> <span class="k">def</span> <span class="nf">logout</span><span class="p">(</span><span class="bp">self</span><span class="p">):</span>
<span class="sd">&quot;&quot;&quot;</span>
<span class="sd"> This destroys the session and logs out from the LH OS server</span>
<span class="sd"> :returns: None</span>
<span class="sd"> &quot;&quot;&quot;</span>
<span class="bp">self</span><span class="o">.</span><span class="n">http</span><span class="o">.</span><span class="n">unauthenticate</span><span class="p">()</span>
</div>
<div class="viewcode-block" id="HPLeftHandClient.getClusters"><a class="viewcode-back" href="../../hplefthandclient.html#hplefthandclient.client.HPLeftHandClient.getClusters">[docs]</a> <span class="k">def</span> <span class="nf">getClusters</span><span class="p">(</span><span class="bp">self</span><span class="p">):</span>
<span class="sd">&quot;&quot;&quot;</span>
<span class="sd"> Get the list of Clusters</span>
<span class="sd"> :returns: list of Clusters</span>
<span class="sd"> &quot;&quot;&quot;</span>
<span class="n">response</span><span class="p">,</span> <span class="n">body</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">http</span><span class="o">.</span><span class="n">get</span><span class="p">(</span><span class="s">&#39;/clusters&#39;</span><span class="p">)</span>
<span class="k">return</span> <span class="n">body</span>
</div>
<div class="viewcode-block" id="HPLeftHandClient.getCluster"><a class="viewcode-back" href="../../hplefthandclient.html#hplefthandclient.client.HPLeftHandClient.getCluster">[docs]</a> <span class="k">def</span> <span class="nf">getCluster</span><span class="p">(</span><span class="bp">self</span><span class="p">,</span> <span class="n">cluster_id</span><span class="p">):</span>
<span class="sd">&quot;&quot;&quot;</span>
<span class="sd"> Get information about a Cluster</span>
<span class="sd"> :param cluster_id: The id of the cluster to find</span>
<span class="sd"> :type cluster_id: str</span>
<span class="sd"> :returns: cluster</span>
<span class="sd"> &quot;&quot;&quot;</span>
<span class="n">response</span><span class="p">,</span> <span class="n">body</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">http</span><span class="o">.</span><span class="n">get</span><span class="p">(</span><span class="s">&#39;/clusters/</span><span class="si">%s</span><span class="s">&#39;</span> <span class="o">%</span> <span class="n">cluster_id</span><span class="p">)</span>
<span class="k">return</span> <span class="n">body</span>
</div>
<div class="viewcode-block" id="HPLeftHandClient.getClusterByName"><a class="viewcode-back" href="../../hplefthandclient.html#hplefthandclient.client.HPLeftHandClient.getClusterByName">[docs]</a> <span class="k">def</span> <span class="nf">getClusterByName</span><span class="p">(</span><span class="bp">self</span><span class="p">,</span> <span class="n">name</span><span class="p">):</span>
<span class="sd">&quot;&quot;&quot;</span>
<span class="sd"> Get information about a cluster by name</span>
<span class="sd"> :param name: The name of the cluster to find</span>
<span class="sd"> :type name: str</span>
<span class="sd"> :returns: cluster</span>
<span class="sd"> :raises: :class:`~hplefthandclient.exceptions.HTTPNotFound` -</span>
<span class="sd"> NON_EXISTENT_CLUSTER - cluster doesn&#39;t exist</span>
<span class="sd"> &quot;&quot;&quot;</span>
<span class="n">response</span><span class="p">,</span> <span class="n">body</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">http</span><span class="o">.</span><span class="n">get</span><span class="p">(</span><span class="s">&#39;/clusters?name=</span><span class="si">%s</span><span class="s">&#39;</span> <span class="o">%</span> <span class="n">name</span><span class="p">)</span>
<span class="k">return</span> <span class="n">body</span>
</div>
<div class="viewcode-block" id="HPLeftHandClient.getServers"><a class="viewcode-back" href="../../hplefthandclient.html#hplefthandclient.client.HPLeftHandClient.getServers">[docs]</a> <span class="k">def</span> <span class="nf">getServers</span><span class="p">(</span><span class="bp">self</span><span class="p">):</span>
<span class="sd">&quot;&quot;&quot;</span>
<span class="sd"> Get the list of Servers</span>
<span class="sd"> :returns: list of Servers</span>
<span class="sd"> &quot;&quot;&quot;</span>
<span class="n">response</span><span class="p">,</span> <span class="n">body</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">http</span><span class="o">.</span><span class="n">get</span><span class="p">(</span><span class="s">&#39;/servers&#39;</span><span class="p">)</span>
<span class="k">return</span> <span class="n">body</span>
</div>
<div class="viewcode-block" id="HPLeftHandClient.getServer"><a class="viewcode-back" href="../../hplefthandclient.html#hplefthandclient.client.HPLeftHandClient.getServer">[docs]</a> <span class="k">def</span> <span class="nf">getServer</span><span class="p">(</span><span class="bp">self</span><span class="p">,</span> <span class="n">server_id</span><span class="p">):</span>
<span class="sd">&quot;&quot;&quot;</span>
<span class="sd"> Get information about a server</span>
<span class="sd"> :param server_id: The id of the server to find</span>
<span class="sd"> :type server_id: str</span>
<span class="sd"> :returns: server</span>
<span class="sd"> :raises: :class:`~hplefthandclient.exceptions.HTTPServerError`</span>
<span class="sd"> &quot;&quot;&quot;</span>
<span class="n">response</span><span class="p">,</span> <span class="n">body</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">http</span><span class="o">.</span><span class="n">get</span><span class="p">(</span><span class="s">&#39;/servers/</span><span class="si">%s</span><span class="s">&#39;</span> <span class="o">%</span> <span class="n">server_id</span><span class="p">)</span>
<span class="k">return</span> <span class="n">body</span>
</div>
<div class="viewcode-block" id="HPLeftHandClient.getServerByName"><a class="viewcode-back" href="../../hplefthandclient.html#hplefthandclient.client.HPLeftHandClient.getServerByName">[docs]</a> <span class="k">def</span> <span class="nf">getServerByName</span><span class="p">(</span><span class="bp">self</span><span class="p">,</span> <span class="n">name</span><span class="p">):</span>
<span class="sd">&quot;&quot;&quot;</span>
<span class="sd"> Get information about a server by name</span>
<span class="sd"> :param name: The name of the server to find</span>
<span class="sd"> :type name: str</span>
<span class="sd"> :returns: server</span>
<span class="sd"> :raises: :class:`~hplefthandclient.exceptions.HTTPNotFound` -</span>
<span class="sd"> NON_EXISTENT_SERVER - server doesn&#39;t exist</span>
<span class="sd"> &quot;&quot;&quot;</span>
<span class="n">response</span><span class="p">,</span> <span class="n">body</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">http</span><span class="o">.</span><span class="n">get</span><span class="p">(</span><span class="s">&#39;/servers?name=</span><span class="si">%s</span><span class="s">&#39;</span> <span class="o">%</span> <span class="n">name</span><span class="p">)</span>
<span class="k">return</span> <span class="n">body</span>
</div>
<div class="viewcode-block" id="HPLeftHandClient.createServer"><a class="viewcode-back" href="../../hplefthandclient.html#hplefthandclient.client.HPLeftHandClient.createServer">[docs]</a> <span class="k">def</span> <span class="nf">createServer</span><span class="p">(</span><span class="bp">self</span><span class="p">,</span> <span class="n">name</span><span class="p">,</span> <span class="n">iqn</span><span class="p">,</span> <span class="n">optional</span><span class="o">=</span><span class="bp">None</span><span class="p">):</span>
<span class="sd">&quot;&quot;&quot;</span>
<span class="sd"> Create a server by name</span>
<span class="sd"> :param name: The name of the server to create</span>
<span class="sd"> :type name: str</span>
<span class="sd"> :param iqn: The iSCSI qualified name</span>
<span class="sd"> :type name: str</span>
<span class="sd"> :param optional: Dictionary of optional params</span>
<span class="sd"> :type optional: dict</span>
<span class="sd"> .. code-block:: python</span>
<span class="sd"> optional = {</span>
<span class="sd"> &#39;description&#39; : &quot;some comment&quot;,</span>
<span class="sd"> &#39;iscsiEnabled&#39; : True,</span>
<span class="sd"> &#39;chapName&#39;: &quot;some chap name&quot;,</span>
<span class="sd"> &#39;chapAuthenticationRequired&#39;: False,</span>
<span class="sd"> &#39;chapInitiatorSecret&#39;: &quot;initiator secret&quot;,</span>
<span class="sd"> &#39;chapTargetSecret&#39;: &quot;target secret&quot;,</span>
<span class="sd"> &#39;iscsiLoadBalancingEnabled&#39;: True,</span>
<span class="sd"> &#39;controllingServerName&#39;: &quot;server name&quot;,</span>
<span class="sd"> &#39;fibreChannelEnabled&#39;: False,</span>
<span class="sd"> &#39;inServerCluster&quot;: True</span>
<span class="sd"> }</span>
<span class="sd"> :returns: server</span>
<span class="sd"> :raises: :class:`~hplefthandclient.exceptions.HTTPNotFound` -</span>
<span class="sd"> NON_EXISTENT_SERVER - server doesn&#39;t exist</span>
<span class="sd"> &quot;&quot;&quot;</span>
<span class="n">info</span> <span class="o">=</span> <span class="p">{</span><span class="s">&#39;name&#39;</span><span class="p">:</span> <span class="n">name</span><span class="p">,</span> <span class="s">&#39;iscsiIQN&#39;</span><span class="p">:</span> <span class="n">iqn</span><span class="p">}</span>
<span class="k">if</span> <span class="n">optional</span><span class="p">:</span>
<span class="n">info</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">_mergeDict</span><span class="p">(</span><span class="n">info</span><span class="p">,</span> <span class="n">optional</span><span class="p">)</span>
<span class="n">response</span><span class="p">,</span> <span class="n">body</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">http</span><span class="o">.</span><span class="n">post</span><span class="p">(</span><span class="s">&#39;/servers&#39;</span><span class="p">,</span> <span class="n">body</span><span class="o">=</span><span class="n">info</span><span class="p">)</span>
<span class="k">return</span> <span class="n">body</span>
</div>
<div class="viewcode-block" id="HPLeftHandClient.deleteServer"><a class="viewcode-back" href="../../hplefthandclient.html#hplefthandclient.client.HPLeftHandClient.deleteServer">[docs]</a> <span class="k">def</span> <span class="nf">deleteServer</span><span class="p">(</span><span class="bp">self</span><span class="p">,</span> <span class="n">server_id</span><span class="p">):</span>
<span class="sd">&quot;&quot;&quot;</span>
<span class="sd"> Delete a Server</span>
<span class="sd"> :param server_id: the server ID to delete</span>
<span class="sd"> :raises: :class:`~hplefthandclient.exceptions.HTTPNotFound` -</span>
<span class="sd"> NON_EXISTENT_SERVER - The server does not exist</span>
<span class="sd"> &quot;&quot;&quot;</span>
<span class="n">response</span><span class="p">,</span> <span class="n">body</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">http</span><span class="o">.</span><span class="n">delete</span><span class="p">(</span><span class="s">&#39;/servers/</span><span class="si">%s</span><span class="s">&#39;</span> <span class="o">%</span> <span class="n">server_id</span><span class="p">)</span>
<span class="k">return</span> <span class="n">body</span>
</div>
<div class="viewcode-block" id="HPLeftHandClient.getSnapshots"><a class="viewcode-back" href="../../hplefthandclient.html#hplefthandclient.client.HPLeftHandClient.getSnapshots">[docs]</a> <span class="k">def</span> <span class="nf">getSnapshots</span><span class="p">(</span><span class="bp">self</span><span class="p">):</span>
<span class="sd">&quot;&quot;&quot;</span>
<span class="sd"> Get the list of Snapshots</span>
<span class="sd"> :returns: list of Snapshots</span>
<span class="sd"> &quot;&quot;&quot;</span>
<span class="n">response</span><span class="p">,</span> <span class="n">body</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">http</span><span class="o">.</span><span class="n">get</span><span class="p">(</span><span class="s">&#39;/snapshots&#39;</span><span class="p">)</span>
<span class="k">return</span> <span class="n">body</span>
</div>
<div class="viewcode-block" id="HPLeftHandClient.getSnapshot"><a class="viewcode-back" href="../../hplefthandclient.html#hplefthandclient.client.HPLeftHandClient.getSnapshot">[docs]</a> <span class="k">def</span> <span class="nf">getSnapshot</span><span class="p">(</span><span class="bp">self</span><span class="p">,</span> <span class="n">snapshot_id</span><span class="p">):</span>
<span class="sd">&quot;&quot;&quot;</span>
<span class="sd"> Get information about a Snapshot</span>
<span class="sd"> :returns: snapshot</span>
<span class="sd"> :raises: :class:`~hplefthandclient.exceptions.HTTPServerError`</span>
<span class="sd"> &quot;&quot;&quot;</span>
<span class="n">response</span><span class="p">,</span> <span class="n">body</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">http</span><span class="o">.</span><span class="n">get</span><span class="p">(</span><span class="s">&#39;/snapshots/</span><span class="si">%s</span><span class="s">&#39;</span> <span class="o">%</span> <span class="n">snapshot_id</span><span class="p">)</span>
<span class="k">return</span> <span class="n">body</span>
</div>
<div class="viewcode-block" id="HPLeftHandClient.getSnapshotByName"><a class="viewcode-back" href="../../hplefthandclient.html#hplefthandclient.client.HPLeftHandClient.getSnapshotByName">[docs]</a> <span class="k">def</span> <span class="nf">getSnapshotByName</span><span class="p">(</span><span class="bp">self</span><span class="p">,</span> <span class="n">name</span><span class="p">):</span>
<span class="sd">&quot;&quot;&quot;</span>
<span class="sd"> Get information about a snapshot by name</span>
<span class="sd"> :param name: The name of the snapshot to find</span>
<span class="sd"> :returns: volume</span>
<span class="sd"> :raises: :class:`~hplefthandclient.exceptions.HTTPNotFound` -</span>
<span class="sd"> NON_EXISTENT_SNAP - shapshot doesn&#39;t exist</span>
<span class="sd"> &quot;&quot;&quot;</span>
<span class="n">response</span><span class="p">,</span> <span class="n">body</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">http</span><span class="o">.</span><span class="n">get</span><span class="p">(</span><span class="s">&#39;/snapshots?name=</span><span class="si">%s</span><span class="s">&#39;</span> <span class="o">%</span> <span class="n">name</span><span class="p">)</span>
<span class="k">return</span> <span class="n">body</span>
</div>
<div class="viewcode-block" id="HPLeftHandClient.createSnapshot"><a class="viewcode-back" href="../../hplefthandclient.html#hplefthandclient.client.HPLeftHandClient.createSnapshot">[docs]</a> <span class="k">def</span> <span class="nf">createSnapshot</span><span class="p">(</span><span class="bp">self</span><span class="p">,</span> <span class="n">name</span><span class="p">,</span> <span class="n">source_volume_id</span><span class="p">,</span> <span class="n">optional</span><span class="o">=</span><span class="bp">None</span><span class="p">):</span>
<span class="sd">&quot;&quot;&quot;</span>
<span class="sd"> Create a snapshot of an existing Volume</span>
<span class="sd"> :param name: Name of the Snapshot</span>
<span class="sd"> :type name: str</span>
<span class="sd"> :param source_volume_id: The volume you want to snapshot</span>
<span class="sd"> :type source_volume_id: int</span>
<span class="sd"> :param optional: Dictionary of optional params</span>
<span class="sd"> :type optional: dict</span>
<span class="sd"> .. code-block:: python</span>
<span class="sd"> optional = {</span>
<span class="sd"> &#39;description&#39; : &quot;some comment&quot;,</span>
<span class="sd"> &#39;inheritAccess&#39; : false</span>
<span class="sd"> }</span>
<span class="sd"> &quot;&quot;&quot;</span>
<span class="n">parameters</span> <span class="o">=</span> <span class="p">{</span><span class="s">&#39;name&#39;</span><span class="p">:</span> <span class="n">name</span><span class="p">}</span>
<span class="k">if</span> <span class="n">optional</span><span class="p">:</span>
<span class="n">parameters</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">_mergeDict</span><span class="p">(</span><span class="n">parameters</span><span class="p">,</span> <span class="n">optional</span><span class="p">)</span>
<span class="n">info</span> <span class="o">=</span> <span class="p">{</span><span class="s">&#39;action&#39;</span><span class="p">:</span> <span class="s">&#39;createSnapshot&#39;</span><span class="p">,</span>
<span class="s">&#39;parameters&#39;</span><span class="p">:</span> <span class="n">parameters</span><span class="p">}</span>
<span class="n">response</span><span class="p">,</span> <span class="n">body</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">http</span><span class="o">.</span><span class="n">post</span><span class="p">(</span><span class="s">&#39;/volumes/</span><span class="si">%s</span><span class="s">&#39;</span> <span class="o">%</span> <span class="n">source_volume_id</span><span class="p">,</span>
<span class="n">body</span><span class="o">=</span><span class="n">info</span><span class="p">)</span>
<span class="k">return</span> <span class="n">body</span>
</div>
<div class="viewcode-block" id="HPLeftHandClient.deleteSnapshot"><a class="viewcode-back" href="../../hplefthandclient.html#hplefthandclient.client.HPLeftHandClient.deleteSnapshot">[docs]</a> <span class="k">def</span> <span class="nf">deleteSnapshot</span><span class="p">(</span><span class="bp">self</span><span class="p">,</span> <span class="n">snapshot_id</span><span class="p">):</span>
<span class="sd">&quot;&quot;&quot;</span>
<span class="sd"> Delete a Snapshot</span>
<span class="sd"> :param snapshot_id: the snapshot ID to delete</span>
<span class="sd"> :raises: :class:`~hplefthandclient.exceptions.HTTPNotFound` -</span>
<span class="sd"> NON_EXISTENT_SNAPSHOT - The snapshot does not exist</span>
<span class="sd"> &quot;&quot;&quot;</span>
<span class="n">response</span><span class="p">,</span> <span class="n">body</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">http</span><span class="o">.</span><span class="n">delete</span><span class="p">(</span><span class="s">&#39;/snapshots/</span><span class="si">%s</span><span class="s">&#39;</span> <span class="o">%</span> <span class="n">snapshot_id</span><span class="p">)</span>
<span class="k">return</span> <span class="n">body</span>
</div>
<div class="viewcode-block" id="HPLeftHandClient.cloneSnapshot"><a class="viewcode-back" href="../../hplefthandclient.html#hplefthandclient.client.HPLeftHandClient.cloneSnapshot">[docs]</a> <span class="k">def</span> <span class="nf">cloneSnapshot</span><span class="p">(</span><span class="bp">self</span><span class="p">,</span> <span class="n">name</span><span class="p">,</span> <span class="n">source_snapshot_id</span><span class="p">,</span> <span class="n">optional</span><span class="o">=</span><span class="bp">None</span><span class="p">):</span>
<span class="sd">&quot;&quot;&quot;</span>
<span class="sd"> Create a clone of an existing Shapshot</span>
<span class="sd"> :param name: Name of the Snapshot clone</span>
<span class="sd"> :type name: str</span>
<span class="sd"> :param source_snapshot_id: The snapshot you want to clone</span>
<span class="sd"> :type source_snapshot_id: int</span>
<span class="sd"> :param optional: Dictionary of optional params</span>
<span class="sd"> :type optional: dict</span>
<span class="sd"> .. code-block:: python</span>
<span class="sd"> optional = {</span>
<span class="sd"> &#39;description&#39; : &quot;some comment&quot;</span>
<span class="sd"> }</span>
<span class="sd"> &quot;&quot;&quot;</span>
<span class="n">parameters</span> <span class="o">=</span> <span class="p">{</span><span class="s">&#39;name&#39;</span><span class="p">:</span> <span class="n">name</span><span class="p">}</span>
<span class="k">if</span> <span class="n">optional</span><span class="p">:</span>
<span class="n">parameters</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">_mergeDict</span><span class="p">(</span><span class="n">parameters</span><span class="p">,</span> <span class="n">optional</span><span class="p">)</span>
<span class="n">info</span> <span class="o">=</span> <span class="p">{</span><span class="s">&#39;action&#39;</span><span class="p">:</span> <span class="s">&#39;createSmartClone&#39;</span><span class="p">,</span>
<span class="s">&#39;parameters&#39;</span><span class="p">:</span> <span class="n">parameters</span><span class="p">}</span>
<span class="n">response</span><span class="p">,</span> <span class="n">body</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">http</span><span class="o">.</span><span class="n">post</span><span class="p">(</span><span class="s">&#39;/snapshots/</span><span class="si">%s</span><span class="s">&#39;</span> <span class="o">%</span> <span class="n">source_snapshot_id</span><span class="p">,</span>
<span class="n">body</span><span class="o">=</span><span class="n">info</span><span class="p">)</span>
<span class="k">return</span> <span class="n">body</span>
</div>
<div class="viewcode-block" id="HPLeftHandClient.getVolumes"><a class="viewcode-back" href="../../hplefthandclient.html#hplefthandclient.client.HPLeftHandClient.getVolumes">[docs]</a> <span class="k">def</span> <span class="nf">getVolumes</span><span class="p">(</span><span class="bp">self</span><span class="p">):</span>
<span class="sd">&quot;&quot;&quot;</span>
<span class="sd"> Get the list of Volumes</span>
<span class="sd"> :returns: list of Volumes</span>
<span class="sd"> &quot;&quot;&quot;</span>
<span class="n">response</span><span class="p">,</span> <span class="n">body</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">http</span><span class="o">.</span><span class="n">get</span><span class="p">(</span><span class="s">&#39;/volumes&#39;</span><span class="p">)</span>
<span class="k">return</span> <span class="n">body</span>
</div>
<div class="viewcode-block" id="HPLeftHandClient.getVolume"><a class="viewcode-back" href="../../hplefthandclient.html#hplefthandclient.client.HPLeftHandClient.getVolume">[docs]</a> <span class="k">def</span> <span class="nf">getVolume</span><span class="p">(</span><span class="bp">self</span><span class="p">,</span> <span class="n">volume_id</span><span class="p">):</span>
<span class="sd">&quot;&quot;&quot;</span>
<span class="sd"> Get information about a volume</span>
<span class="sd"> :param volume_id: The id of the volume to find</span>
<span class="sd"> :type volume_id: str</span>
<span class="sd"> :returns: volume</span>
<span class="sd"> :raises: :class:`~hplefthandclient.exceptions.HTTPNotFound` -</span>
<span class="sd"> NON_EXISTENT_VOL - volume doesn&#39;t exist</span>
<span class="sd"> &quot;&quot;&quot;</span>
<span class="n">response</span><span class="p">,</span> <span class="n">body</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">http</span><span class="o">.</span><span class="n">get</span><span class="p">(</span><span class="s">&#39;/volumes/</span><span class="si">%s</span><span class="s">&#39;</span> <span class="o">%</span> <span class="n">volume_id</span><span class="p">)</span>
<span class="k">return</span> <span class="n">body</span>
</div>
<div class="viewcode-block" id="HPLeftHandClient.getVolumeByName"><a class="viewcode-back" href="../../hplefthandclient.html#hplefthandclient.client.HPLeftHandClient.getVolumeByName">[docs]</a> <span class="k">def</span> <span class="nf">getVolumeByName</span><span class="p">(</span><span class="bp">self</span><span class="p">,</span> <span class="n">name</span><span class="p">):</span>
<span class="sd">&quot;&quot;&quot;</span>
<span class="sd"> Get information about a volume by name</span>
<span class="sd"> :param name: The name of the volume to find</span>
<span class="sd"> :type volume_id: str</span>
<span class="sd"> :returns: volume</span>
<span class="sd"> :raises: :class:`~hplefthandclient.exceptions.HTTPNotFound` -</span>
<span class="sd"> NON_EXISTENT_VOL - volume doesn&#39;t exist</span>
<span class="sd"> &quot;&quot;&quot;</span>
<span class="n">response</span><span class="p">,</span> <span class="n">body</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">http</span><span class="o">.</span><span class="n">get</span><span class="p">(</span><span class="s">&#39;/volumes?name=</span><span class="si">%s</span><span class="s">&#39;</span> <span class="o">%</span> <span class="n">name</span><span class="p">)</span>
<span class="k">return</span> <span class="n">body</span>
</div>
<div class="viewcode-block" id="HPLeftHandClient.createVolume"><a class="viewcode-back" href="../../hplefthandclient.html#hplefthandclient.client.HPLeftHandClient.createVolume">[docs]</a> <span class="k">def</span> <span class="nf">createVolume</span><span class="p">(</span><span class="bp">self</span><span class="p">,</span> <span class="n">name</span><span class="p">,</span> <span class="n">cluster_id</span><span class="p">,</span> <span class="n">size</span><span class="p">,</span> <span class="n">optional</span><span class="o">=</span><span class="bp">None</span><span class="p">):</span>
<span class="sd">&quot;&quot;&quot; Create a new volume</span>
<span class="sd"> :param name: the name of the volume</span>
<span class="sd"> :type name: str</span>
<span class="sd"> :param cluster_id: the cluster Id</span>
<span class="sd"> :type cluster_id: int</span>
<span class="sd"> :param sizeKB: size in KB for the volume</span>
<span class="sd"> :type sizeKB: int</span>
<span class="sd"> :param optional: dict of other optional items</span>
<span class="sd"> :type optional: dict</span>
<span class="sd"> .. code-block:: python</span>
<span class="sd"> optional = {</span>
<span class="sd"> &#39;description&#39;: &#39;some comment&#39;,</span>
<span class="sd"> &#39;isThinProvisioned&#39;: &#39;true&#39;,</span>
<span class="sd"> &#39;autogrowSeconds&#39;: 200,</span>
<span class="sd"> &#39;clusterName&#39;: &#39;somename&#39;,</span>
<span class="sd"> &#39;isAdaptiveOptimizationEnabled&#39;: &#39;true&#39;,</span>
<span class="sd"> &#39;dataProtectionLevel&#39;: 2,</span>
<span class="sd"> }</span>
<span class="sd"> :returns: List of Volumes</span>
<span class="sd"> :raises: :class:`~hplefthandclient.exceptions.HTTPConflict` -</span>
<span class="sd"> EXISTENT_SV - Volume Exists already</span>
<span class="sd"> &quot;&quot;&quot;</span>
<span class="n">info</span> <span class="o">=</span> <span class="p">{</span><span class="s">&#39;name&#39;</span><span class="p">:</span> <span class="n">name</span><span class="p">,</span> <span class="s">&#39;clusterID&#39;</span><span class="p">:</span> <span class="n">cluster_id</span><span class="p">,</span> <span class="s">&#39;size&#39;</span><span class="p">:</span> <span class="n">size</span><span class="p">}</span>
<span class="k">if</span> <span class="n">optional</span><span class="p">:</span>
<span class="n">info</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">_mergeDict</span><span class="p">(</span><span class="n">info</span><span class="p">,</span> <span class="n">optional</span><span class="p">)</span>
<span class="n">response</span><span class="p">,</span> <span class="n">body</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">http</span><span class="o">.</span><span class="n">post</span><span class="p">(</span><span class="s">&#39;/volumes&#39;</span><span class="p">,</span> <span class="n">body</span><span class="o">=</span><span class="n">info</span><span class="p">)</span>
<span class="k">return</span> <span class="n">body</span>
</div>
<div class="viewcode-block" id="HPLeftHandClient.deleteVolume"><a class="viewcode-back" href="../../hplefthandclient.html#hplefthandclient.client.HPLeftHandClient.deleteVolume">[docs]</a> <span class="k">def</span> <span class="nf">deleteVolume</span><span class="p">(</span><span class="bp">self</span><span class="p">,</span> <span class="n">volume_id</span><span class="p">):</span>
<span class="sd">&quot;&quot;&quot;</span>
<span class="sd"> Delete a volume</span>
<span class="sd"> :param name: the name of the volume</span>
<span class="sd"> :type name: str</span>
<span class="sd"> :raises: :class:`~hplefthandclient.exceptions.HTTPNotFound` -</span>
<span class="sd"> NON_EXISTENT_VOL - The volume does not exist</span>
<span class="sd"> &quot;&quot;&quot;</span>
<span class="n">response</span><span class="p">,</span> <span class="n">body</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">http</span><span class="o">.</span><span class="n">delete</span><span class="p">(</span><span class="s">&#39;/volumes/</span><span class="si">%s</span><span class="s">&#39;</span> <span class="o">%</span> <span class="n">volume_id</span><span class="p">)</span>
<span class="k">return</span> <span class="n">body</span>
</div>
<div class="viewcode-block" id="HPLeftHandClient.modifyVolume"><a class="viewcode-back" href="../../hplefthandclient.html#hplefthandclient.client.HPLeftHandClient.modifyVolume">[docs]</a> <span class="k">def</span> <span class="nf">modifyVolume</span><span class="p">(</span><span class="bp">self</span><span class="p">,</span> <span class="n">volume_id</span><span class="p">,</span> <span class="n">optional</span><span class="p">):</span>
<span class="sd">&quot;&quot;&quot;Modify an existing volume.</span>
<span class="sd"> :param volume_id: The id of the volume to find</span>
<span class="sd"> :type volume_id: str</span>
<span class="sd"> :returns: volume</span>
<span class="sd"> :raises: :class:`~hplefthandclient.exceptions.HTTPNotFound` -</span>
<span class="sd"> NON_EXISTENT_VOL - volume doesn&#39;t exist</span>
<span class="sd"> &quot;&quot;&quot;</span>
<span class="n">info</span> <span class="o">=</span> <span class="p">{</span><span class="s">&#39;volume_id&#39;</span><span class="p">:</span> <span class="n">volume_id</span><span class="p">}</span>
<span class="n">info</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">_mergeDict</span><span class="p">(</span><span class="n">info</span><span class="p">,</span> <span class="n">optional</span><span class="p">)</span>
<span class="n">response</span><span class="p">,</span> <span class="n">body</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">http</span><span class="o">.</span><span class="n">put</span><span class="p">(</span><span class="s">&#39;/volumes/</span><span class="si">%s</span><span class="s">&#39;</span> <span class="o">%</span> <span class="n">volume_id</span><span class="p">,</span> <span class="n">body</span><span class="o">=</span><span class="n">info</span><span class="p">)</span>
<span class="k">return</span> <span class="n">body</span>
</div>
<div class="viewcode-block" id="HPLeftHandClient.cloneVolume"><a class="viewcode-back" href="../../hplefthandclient.html#hplefthandclient.client.HPLeftHandClient.cloneVolume">[docs]</a> <span class="k">def</span> <span class="nf">cloneVolume</span><span class="p">(</span><span class="bp">self</span><span class="p">,</span> <span class="n">name</span><span class="p">,</span> <span class="n">source_volume_id</span><span class="p">,</span> <span class="n">optional</span><span class="o">=</span><span class="bp">None</span><span class="p">):</span>
<span class="sd">&quot;&quot;&quot;</span>
<span class="sd"> Create a clone of an existing Volume</span>
<span class="sd"> :param name: Name of the Volume clone</span>
<span class="sd"> :type name: str</span>
<span class="sd"> :param source_volume_id: The Volume you want to clone</span>
<span class="sd"> :type source_volume_id: int</span>
<span class="sd"> :param optional: Dictionary of optional params</span>
<span class="sd"> :type optional: dict</span>
<span class="sd"> .. code-block:: python</span>
<span class="sd"> optional = {</span>
<span class="sd"> &#39;description&#39; : &quot;some comment&quot;</span>
<span class="sd"> }</span>
<span class="sd"> &quot;&quot;&quot;</span>
<span class="n">parameters</span> <span class="o">=</span> <span class="p">{</span><span class="s">&#39;name&#39;</span><span class="p">:</span> <span class="n">name</span><span class="p">}</span>
<span class="k">if</span> <span class="n">optional</span><span class="p">:</span>
<span class="n">parameters</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">_mergeDict</span><span class="p">(</span><span class="n">parameters</span><span class="p">,</span> <span class="n">optional</span><span class="p">)</span>
<span class="n">info</span> <span class="o">=</span> <span class="p">{</span><span class="s">&#39;action&#39;</span><span class="p">:</span> <span class="s">&#39;createSmartClone&#39;</span><span class="p">,</span>
<span class="s">&#39;parameters&#39;</span><span class="p">:</span> <span class="n">parameters</span><span class="p">}</span>
<span class="n">response</span><span class="p">,</span> <span class="n">body</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">http</span><span class="o">.</span><span class="n">post</span><span class="p">(</span><span class="s">&#39;/volumes/</span><span class="si">%s</span><span class="s">&#39;</span> <span class="o">%</span> <span class="n">source_volume_id</span><span class="p">,</span>
<span class="n">body</span><span class="o">=</span><span class="n">info</span><span class="p">)</span>
<span class="k">return</span> <span class="n">body</span>
</div>
<div class="viewcode-block" id="HPLeftHandClient.addServerAccess"><a class="viewcode-back" href="../../hplefthandclient.html#hplefthandclient.client.HPLeftHandClient.addServerAccess">[docs]</a> <span class="k">def</span> <span class="nf">addServerAccess</span><span class="p">(</span><span class="bp">self</span><span class="p">,</span> <span class="n">volume_id</span><span class="p">,</span> <span class="n">server_id</span><span class="p">,</span> <span class="n">optional</span><span class="o">=</span><span class="bp">None</span><span class="p">):</span>
<span class="sd">&quot;&quot;&quot;</span>
<span class="sd"> Assign a Volume to a Server</span>
<span class="sd"> :param volume_id: Volume ID of the volume</span>
<span class="sd"> :type name: int</span>
<span class="sd"> :param server_id: Server ID of the server to add the volume to</span>
<span class="sd"> :type source_volume_id: int</span>
<span class="sd"> :param optional: Dictionary of optional params</span>
<span class="sd"> :type optional: dict</span>
<span class="sd"> .. code-block:: python</span>
<span class="sd"> optional = {</span>
<span class="sd"> &#39;Transport&#39; : 0,</span>
<span class="sd"> &#39;Lun&#39; : 1,</span>
<span class="sd"> }</span>
<span class="sd"> &quot;&quot;&quot;</span>
<span class="n">parameters</span> <span class="o">=</span> <span class="p">{</span><span class="s">&#39;serverID&#39;</span><span class="p">:</span> <span class="n">server_id</span><span class="p">,</span>
<span class="s">&#39;exclusiveAccess&#39;</span><span class="p">:</span> <span class="bp">True</span><span class="p">,</span>
<span class="s">&#39;readAccess&#39;</span><span class="p">:</span> <span class="bp">True</span><span class="p">,</span>
<span class="s">&#39;writeAccess&#39;</span><span class="p">:</span> <span class="bp">True</span><span class="p">}</span>
<span class="k">if</span> <span class="n">optional</span><span class="p">:</span>
<span class="n">parameters</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">_mergeDict</span><span class="p">(</span><span class="n">parameters</span><span class="p">,</span> <span class="n">optional</span><span class="p">)</span>
<span class="n">info</span> <span class="o">=</span> <span class="p">{</span><span class="s">&#39;action&#39;</span><span class="p">:</span> <span class="s">&#39;addServerAccess&#39;</span><span class="p">,</span>
<span class="s">&#39;parameters&#39;</span><span class="p">:</span> <span class="n">parameters</span><span class="p">}</span>
<span class="n">response</span><span class="p">,</span> <span class="n">body</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">http</span><span class="o">.</span><span class="n">post</span><span class="p">(</span><span class="s">&#39;/volumes/</span><span class="si">%s</span><span class="s">&#39;</span> <span class="o">%</span> <span class="n">volume_id</span><span class="p">,</span>
<span class="n">body</span><span class="o">=</span><span class="n">info</span><span class="p">)</span>
<span class="k">return</span> <span class="n">body</span>
</div>
<div class="viewcode-block" id="HPLeftHandClient.removeServerAccess"><a class="viewcode-back" href="../../hplefthandclient.html#hplefthandclient.client.HPLeftHandClient.removeServerAccess">[docs]</a> <span class="k">def</span> <span class="nf">removeServerAccess</span><span class="p">(</span><span class="bp">self</span><span class="p">,</span> <span class="n">volume_id</span><span class="p">,</span> <span class="n">server_id</span><span class="p">):</span>
<span class="sd">&quot;&quot;&quot;</span>
<span class="sd"> Unassign a Volume from a Server</span>
<span class="sd"> :param volume_id: Volume ID of the volume</span>
<span class="sd"> :type name: int</span>
<span class="sd"> :param server_id: Server ID of the server to remove the volume fom</span>
<span class="sd"> :type source_volume_id: int</span>
<span class="sd"> &quot;&quot;&quot;</span>
<span class="n">parameters</span> <span class="o">=</span> <span class="p">{</span><span class="s">&#39;serverID&#39;</span><span class="p">:</span> <span class="n">server_id</span><span class="p">}</span>
<span class="n">info</span> <span class="o">=</span> <span class="p">{</span><span class="s">&#39;action&#39;</span><span class="p">:</span> <span class="s">&#39;removeServerAccess&#39;</span><span class="p">,</span>
<span class="s">&#39;parameters&#39;</span><span class="p">:</span> <span class="n">parameters</span><span class="p">}</span>
<span class="n">response</span><span class="p">,</span> <span class="n">body</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">http</span><span class="o">.</span><span class="n">post</span><span class="p">(</span><span class="s">&#39;/volumes/</span><span class="si">%s</span><span class="s">&#39;</span> <span class="o">%</span> <span class="n">volume_id</span><span class="p">,</span>
<span class="n">body</span><span class="o">=</span><span class="n">info</span><span class="p">)</span>
<span class="k">return</span> <span class="n">body</span>
</div>
<span class="k">def</span> <span class="nf">_mergeDict</span><span class="p">(</span><span class="bp">self</span><span class="p">,</span> <span class="n">dict1</span><span class="p">,</span> <span class="n">dict2</span><span class="p">):</span>
<span class="sd">&quot;&quot;&quot;</span>
<span class="sd"> Safely merge 2 dictionaries together</span>
<span class="sd"> :param dict1: The first dictionary</span>
<span class="sd"> :type dict1: dict</span>
<span class="sd"> :param dict2: The second dictionary</span>
<span class="sd"> :type dict2: dict</span>
<span class="sd"> :returns: dict</span>
<span class="sd"> :raises Exception: dict1, dict2 is not a dictionary</span>
<span class="sd"> &quot;&quot;&quot;</span>
<span class="k">if</span> <span class="nb">type</span><span class="p">(</span><span class="n">dict1</span><span class="p">)</span> <span class="ow">is</span> <span class="ow">not</span> <span class="nb">dict</span><span class="p">:</span>
<span class="k">raise</span> <span class="ne">Exception</span><span class="p">(</span><span class="s">&quot;dict1 is not a dictionary&quot;</span><span class="p">)</span>
<span class="k">if</span> <span class="nb">type</span><span class="p">(</span><span class="n">dict2</span><span class="p">)</span> <span class="ow">is</span> <span class="ow">not</span> <span class="nb">dict</span><span class="p">:</span>
<span class="k">raise</span> <span class="ne">Exception</span><span class="p">(</span><span class="s">&quot;dict2 is not a dictionary&quot;</span><span class="p">)</span>
<span class="n">dict3</span> <span class="o">=</span> <span class="n">dict1</span><span class="o">.</span><span class="n">copy</span><span class="p">()</span>
<span class="n">dict3</span><span class="o">.</span><span class="n">update</span><span class="p">(</span><span class="n">dict2</span><span class="p">)</span>
<span class="k">return</span> <span class="n">dict3</span></div>
</pre></div>
</div>
</div>
</div>
<div class="sphinxsidebar">
<div class="sphinxsidebarwrapper">
<div id="searchbox" style="display: none">
<h3>Quick search</h3>
<form class="search" action="../../search.html" method="get">
<input type="text" name="q" />
<input type="submit" value="Go" />
<input type="hidden" name="check_keywords" value="yes" />
<input type="hidden" name="area" value="default" />
</form>
<p class="searchtip" style="font-size: 90%">
Enter search terms or a module, class or function name.
</p>
</div>
<script type="text/javascript">$('#searchbox').show(0);</script>
</div>
</div>
<div class="clearer"></div>
</div>
<div class="related">
<h3>Navigation</h3>
<ul>
<li class="right" style="margin-right: 10px">
<a href="../../genindex.html" title="General Index"
>index</a></li>
<li class="right" >
<a href="../../py-modindex.html" title="Python Module Index"
>modules</a> |</li>
<li><a href="../../index.html">HP LeftHand REST Client 1.0.0 documentation</a> &raquo;</li>
<li><a href="../index.html" >Module code</a> &raquo;</li>
<li><a href="../hplefthandclient.html" >hplefthandclient</a> &raquo;</li>
</ul>
</div>
<div class="footer">
&copy; Copyright 2013 Hewlett Packard Development Company, L.P..
Created using <a href="http://sphinx.pocoo.org/">Sphinx</a> 1.1.3.
</div>
</body>
</html>

View File

@ -1,404 +0,0 @@
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN"
"http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
<title>hplefthandclient.exceptions &mdash; HP LeftHand REST Client 1.0.0 documentation</title>
<link rel="stylesheet" href="../../_static/default.css" type="text/css" />
<link rel="stylesheet" href="../../_static/pygments.css" type="text/css" />
<script type="text/javascript">
var DOCUMENTATION_OPTIONS = {
URL_ROOT: '../../',
VERSION: '1.0.0',
COLLAPSE_INDEX: false,
FILE_SUFFIX: '.html',
HAS_SOURCE: true
};
</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>
<link rel="top" title="HP LeftHand REST Client 1.0.0 documentation" href="../../index.html" />
<link rel="up" title="hplefthandclient" href="../hplefthandclient.html" />
</head>
<body>
<div class="related">
<h3>Navigation</h3>
<ul>
<li class="right" style="margin-right: 10px">
<a href="../../genindex.html" title="General Index"
accesskey="I">index</a></li>
<li class="right" >
<a href="../../py-modindex.html" title="Python Module Index"
>modules</a> |</li>
<li><a href="../../index.html">HP LeftHand REST Client 1.0.0 documentation</a> &raquo;</li>
<li><a href="../index.html" >Module code</a> &raquo;</li>
<li><a href="../hplefthandclient.html" accesskey="U">hplefthandclient</a> &raquo;</li>
</ul>
</div>
<div class="document">
<div class="documentwrapper">
<div class="bodywrapper">
<div class="body">
<h1>Source code for hplefthandclient.exceptions</h1><div class="highlight"><pre>
<span class="c"># vim: tabstop=4 shiftwidth=4 softtabstop=4</span>
<span class="c">#</span>
<span class="c"># Copyright 2012 Hewlett Packard Development Company, L.P.</span>
<span class="c"># All Rights Reserved.</span>
<span class="c">#</span>
<span class="c"># Licensed under the Apache License, Version 2.0 (the &quot;License&quot;); you may</span>
<span class="c"># not use this file except in compliance with the License. You may obtain</span>
<span class="c"># a copy of the License at</span>
<span class="c">#</span>
<span class="c"># http://www.apache.org/licenses/LICENSE-2.0</span>
<span class="c">#</span>
<span class="c"># Unless required by applicable law or agreed to in writing, software</span>
<span class="c"># distributed under the License is distributed on an &quot;AS IS&quot; BASIS, WITHOUT</span>
<span class="c"># WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the</span>
<span class="c"># License for the specific language governing permissions and limitations</span>
<span class="c"># under the License.</span>
<span class="sd">&quot;&quot;&quot; </span>
<span class="sd">Exceptions for the client</span>
<span class="sd">.. module: Exceptions</span>
<span class="sd">:Author: Walter A. Boring IV</span>
<span class="sd">:Description: This contains the HTTP exceptions that can come back from the REST calls</span>
<span class="sd">&quot;&quot;&quot;</span>
<div class="viewcode-block" id="UnsupportedVersion"><a class="viewcode-back" href="../../hplefthandclient.html#hplefthandclient.exceptions.UnsupportedVersion">[docs]</a><span class="k">class</span> <span class="nc">UnsupportedVersion</span><span class="p">(</span><span class="ne">Exception</span><span class="p">):</span>
<span class="sd">&quot;&quot;&quot;</span>
<span class="sd"> Indicates that the user is trying to use an unsupported version of the API</span>
<span class="sd"> &quot;&quot;&quot;</span>
<span class="k">pass</span>
</div>
<div class="viewcode-block" id="CommandError"><a class="viewcode-back" href="../../hplefthandclient.html#hplefthandclient.exceptions.CommandError">[docs]</a><span class="k">class</span> <span class="nc">CommandError</span><span class="p">(</span><span class="ne">Exception</span><span class="p">):</span>
<span class="k">pass</span>
</div>
<div class="viewcode-block" id="AuthorizationFailure"><a class="viewcode-back" href="../../hplefthandclient.html#hplefthandclient.exceptions.AuthorizationFailure">[docs]</a><span class="k">class</span> <span class="nc">AuthorizationFailure</span><span class="p">(</span><span class="ne">Exception</span><span class="p">):</span>
<span class="k">pass</span>
</div>
<div class="viewcode-block" id="NoUniqueMatch"><a class="viewcode-back" href="../../hplefthandclient.html#hplefthandclient.exceptions.NoUniqueMatch">[docs]</a><span class="k">class</span> <span class="nc">NoUniqueMatch</span><span class="p">(</span><span class="ne">Exception</span><span class="p">):</span>
<span class="k">pass</span>
</div>
<div class="viewcode-block" id="ClientException"><a class="viewcode-back" href="../../hplefthandclient.html#hplefthandclient.exceptions.ClientException">[docs]</a><span class="k">class</span> <span class="nc">ClientException</span><span class="p">(</span><span class="ne">Exception</span><span class="p">):</span>
<span class="sd">&quot;&quot;&quot;</span>
<span class="sd"> The base exception class for all exceptions this library raises.</span>
<span class="sd"> :param error: The error array </span>
<span class="sd"> :type error: array</span>
<span class="sd"> &quot;&quot;&quot;</span>
<span class="n">_error_code</span> <span class="o">=</span> <span class="bp">None</span>
<span class="n">_error_desc</span> <span class="o">=</span> <span class="bp">None</span>
<span class="n">_debug1</span> <span class="o">=</span> <span class="bp">None</span>
<span class="n">_debug2</span> <span class="o">=</span> <span class="bp">None</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">error</span><span class="o">=</span><span class="bp">None</span><span class="p">):</span>
<span class="k">if</span> <span class="n">error</span><span class="p">:</span>
<span class="k">if</span> <span class="s">&#39;messageID&#39;</span> <span class="ow">in</span> <span class="n">error</span><span class="p">:</span>
<span class="bp">self</span><span class="o">.</span><span class="n">_error_code</span> <span class="o">=</span> <span class="n">error</span><span class="p">[</span><span class="s">&#39;messageID&#39;</span><span class="p">]</span>
<span class="k">if</span> <span class="s">&#39;message&#39;</span> <span class="ow">in</span> <span class="n">error</span><span class="p">:</span>
<span class="bp">self</span><span class="o">.</span><span class="n">_error_desc</span> <span class="o">=</span> <span class="n">error</span><span class="p">[</span><span class="s">&#39;message&#39;</span><span class="p">]</span>
<span class="k">if</span> <span class="s">&#39;debug1&#39;</span> <span class="ow">in</span> <span class="n">error</span><span class="p">:</span>
<span class="bp">self</span><span class="o">.</span><span class="n">_debug1</span> <span class="o">=</span> <span class="n">error</span><span class="p">[</span><span class="s">&#39;debug1&#39;</span><span class="p">]</span>
<span class="k">if</span> <span class="s">&#39;debug2&#39;</span> <span class="ow">in</span> <span class="n">error</span><span class="p">:</span>
<span class="bp">self</span><span class="o">.</span><span class="n">_debug2</span> <span class="o">=</span> <span class="n">error</span><span class="p">[</span><span class="s">&#39;debug2&#39;</span><span class="p">]</span>
<div class="viewcode-block" id="ClientException.get_code"><a class="viewcode-back" href="../../hplefthandclient.html#hplefthandclient.exceptions.ClientException.get_code">[docs]</a> <span class="k">def</span> <span class="nf">get_code</span><span class="p">(</span><span class="bp">self</span><span class="p">):</span>
<span class="k">return</span> <span class="bp">self</span><span class="o">.</span><span class="n">_error_code</span>
</div>
<div class="viewcode-block" id="ClientException.get_description"><a class="viewcode-back" href="../../hplefthandclient.html#hplefthandclient.exceptions.ClientException.get_description">[docs]</a> <span class="k">def</span> <span class="nf">get_description</span><span class="p">(</span><span class="bp">self</span><span class="p">):</span>
<span class="k">return</span> <span class="bp">self</span><span class="o">.</span><span class="n">_error_desc</span>
</div>
<span class="k">def</span> <span class="nf">__str__</span><span class="p">(</span><span class="bp">self</span><span class="p">):</span>
<span class="n">formatted_string</span> <span class="o">=</span> <span class="s">&quot;</span><span class="si">%s</span><span class="s"> (HTTP </span><span class="si">%s</span><span class="s">)&quot;</span> <span class="o">%</span> <span class="p">(</span><span class="bp">self</span><span class="o">.</span><span class="n">message</span><span class="p">,</span> <span class="bp">self</span><span class="o">.</span><span class="n">http_status</span><span class="p">)</span>
<span class="k">if</span> <span class="bp">self</span><span class="o">.</span><span class="n">_error_code</span><span class="p">:</span>
<span class="n">formatted_string</span> <span class="o">+=</span> <span class="s">&quot; </span><span class="si">%s</span><span class="s">&quot;</span> <span class="o">%</span> <span class="bp">self</span><span class="o">.</span><span class="n">_error_code</span>
<span class="k">if</span> <span class="bp">self</span><span class="o">.</span><span class="n">_error_desc</span><span class="p">:</span>
<span class="n">formatted_string</span> <span class="o">+=</span> <span class="s">&quot; - </span><span class="si">%s</span><span class="s">&quot;</span> <span class="o">%</span> <span class="bp">self</span><span class="o">.</span><span class="n">_error_desc</span>
<span class="k">if</span> <span class="bp">self</span><span class="o">.</span><span class="n">_debug1</span><span class="p">:</span>
<span class="n">formatted_string</span> <span class="o">+=</span> <span class="s">&quot; (1: &#39;</span><span class="si">%s</span><span class="s">&#39;)&quot;</span> <span class="o">%</span> <span class="bp">self</span><span class="o">.</span><span class="n">_debug1</span>
<span class="k">if</span> <span class="bp">self</span><span class="o">.</span><span class="n">_debug2</span><span class="p">:</span>
<span class="n">formatted_string</span> <span class="o">+=</span> <span class="s">&quot; (2: &#39;</span><span class="si">%s</span><span class="s">&#39;)&quot;</span> <span class="o">%</span> <span class="bp">self</span><span class="o">.</span><span class="n">_debug2</span>
<span class="k">return</span> <span class="n">formatted_string</span>
<span class="c">##</span>
<span class="c">## 400 Errors</span>
<span class="c">##</span>
</div>
<div class="viewcode-block" id="HTTPBadRequest"><a class="viewcode-back" href="../../hplefthandclient.html#hplefthandclient.exceptions.HTTPBadRequest">[docs]</a><span class="k">class</span> <span class="nc">HTTPBadRequest</span><span class="p">(</span><span class="n">ClientException</span><span class="p">):</span>
<span class="sd">&quot;&quot;&quot;</span>
<span class="sd"> HTTP 400 - Bad request: you sent some malformed data.</span>
<span class="sd"> &quot;&quot;&quot;</span>
<span class="n">http_status</span> <span class="o">=</span> <span class="mi">400</span>
<span class="n">message</span> <span class="o">=</span> <span class="s">&quot;Bad request&quot;</span>
</div>
<div class="viewcode-block" id="HTTPUnauthorized"><a class="viewcode-back" href="../../hplefthandclient.html#hplefthandclient.exceptions.HTTPUnauthorized">[docs]</a><span class="k">class</span> <span class="nc">HTTPUnauthorized</span><span class="p">(</span><span class="n">ClientException</span><span class="p">):</span>
<span class="sd">&quot;&quot;&quot;</span>
<span class="sd"> HTTP 401 - Unauthorized: bad credentials.</span>
<span class="sd"> &quot;&quot;&quot;</span>
<span class="n">http_status</span> <span class="o">=</span> <span class="mi">401</span>
<span class="n">message</span> <span class="o">=</span> <span class="s">&quot;Unauthorized&quot;</span>
</div>
<div class="viewcode-block" id="HTTPForbidden"><a class="viewcode-back" href="../../hplefthandclient.html#hplefthandclient.exceptions.HTTPForbidden">[docs]</a><span class="k">class</span> <span class="nc">HTTPForbidden</span><span class="p">(</span><span class="n">ClientException</span><span class="p">):</span>
<span class="sd">&quot;&quot;&quot;</span>
<span class="sd"> HTTP 403 - Forbidden: your credentials don&#39;t give you access to this</span>
<span class="sd"> resource.</span>
<span class="sd"> &quot;&quot;&quot;</span>
<span class="n">http_status</span> <span class="o">=</span> <span class="mi">403</span>
<span class="n">message</span> <span class="o">=</span> <span class="s">&quot;Forbidden&quot;</span>
</div>
<div class="viewcode-block" id="HTTPNotFound"><a class="viewcode-back" href="../../hplefthandclient.html#hplefthandclient.exceptions.HTTPNotFound">[docs]</a><span class="k">class</span> <span class="nc">HTTPNotFound</span><span class="p">(</span><span class="n">ClientException</span><span class="p">):</span>
<span class="sd">&quot;&quot;&quot;</span>
<span class="sd"> HTTP 404 - Not found</span>
<span class="sd"> &quot;&quot;&quot;</span>
<span class="n">http_status</span> <span class="o">=</span> <span class="mi">404</span>
<span class="n">message</span> <span class="o">=</span> <span class="s">&quot;Not found&quot;</span>
</div>
<div class="viewcode-block" id="HTTPMethodNotAllowed"><a class="viewcode-back" href="../../hplefthandclient.html#hplefthandclient.exceptions.HTTPMethodNotAllowed">[docs]</a><span class="k">class</span> <span class="nc">HTTPMethodNotAllowed</span><span class="p">(</span><span class="n">ClientException</span><span class="p">):</span>
<span class="sd">&quot;&quot;&quot;</span>
<span class="sd"> HTTP 405 - Method not Allowed </span>
<span class="sd"> &quot;&quot;&quot;</span>
<span class="n">http_status</span> <span class="o">=</span> <span class="mi">405</span>
<span class="n">message</span> <span class="o">=</span> <span class="s">&quot;Method Not Allowed&quot;</span>
</div>
<div class="viewcode-block" id="HTTPNotAcceptable"><a class="viewcode-back" href="../../hplefthandclient.html#hplefthandclient.exceptions.HTTPNotAcceptable">[docs]</a><span class="k">class</span> <span class="nc">HTTPNotAcceptable</span><span class="p">(</span><span class="n">ClientException</span><span class="p">):</span>
<span class="sd">&quot;&quot;&quot;</span>
<span class="sd"> HTTP 406 - Method not Acceptable</span>
<span class="sd"> &quot;&quot;&quot;</span>
<span class="n">http_status</span> <span class="o">=</span> <span class="mi">406</span>
<span class="n">message</span> <span class="o">=</span> <span class="s">&quot;Method Not Acceptable&quot;</span>
</div>
<div class="viewcode-block" id="HTTPProxyAuthRequired"><a class="viewcode-back" href="../../hplefthandclient.html#hplefthandclient.exceptions.HTTPProxyAuthRequired">[docs]</a><span class="k">class</span> <span class="nc">HTTPProxyAuthRequired</span><span class="p">(</span><span class="n">ClientException</span><span class="p">):</span>
<span class="sd">&quot;&quot;&quot;</span>
<span class="sd"> HTTP 407 - The client must first authenticate itself with the proxy.</span>
<span class="sd"> &quot;&quot;&quot;</span>
<span class="n">http_status</span> <span class="o">=</span> <span class="mi">407</span>
<span class="n">message</span> <span class="o">=</span> <span class="s">&quot;Proxy Authentication Required&quot;</span>
</div>
<div class="viewcode-block" id="HTTPRequestTimeout"><a class="viewcode-back" href="../../hplefthandclient.html#hplefthandclient.exceptions.HTTPRequestTimeout">[docs]</a><span class="k">class</span> <span class="nc">HTTPRequestTimeout</span><span class="p">(</span><span class="n">ClientException</span><span class="p">):</span>
<span class="sd">&quot;&quot;&quot;</span>
<span class="sd"> HTTP 408 - The server timed out waiting for the request.</span>
<span class="sd"> &quot;&quot;&quot;</span>
<span class="n">http_status</span> <span class="o">=</span> <span class="mi">408</span>
<span class="n">message</span> <span class="o">=</span> <span class="s">&quot;Request Timeout&quot;</span>
</div>
<div class="viewcode-block" id="HTTPConflict"><a class="viewcode-back" href="../../hplefthandclient.html#hplefthandclient.exceptions.HTTPConflict">[docs]</a><span class="k">class</span> <span class="nc">HTTPConflict</span><span class="p">(</span><span class="n">ClientException</span><span class="p">):</span>
<span class="sd">&quot;&quot;&quot;</span>
<span class="sd"> HTTP 409 - Conflict: A Conflict happened on the server</span>
<span class="sd"> &quot;&quot;&quot;</span>
<span class="n">http_status</span> <span class="o">=</span> <span class="mi">409</span>
<span class="n">message</span> <span class="o">=</span> <span class="s">&quot;Conflict&quot;</span>
</div>
<div class="viewcode-block" id="HTTPGone"><a class="viewcode-back" href="../../hplefthandclient.html#hplefthandclient.exceptions.HTTPGone">[docs]</a><span class="k">class</span> <span class="nc">HTTPGone</span><span class="p">(</span><span class="n">ClientException</span><span class="p">):</span>
<span class="sd">&quot;&quot;&quot;</span>
<span class="sd"> HTTP 410 - Indicates that the resource requested is no longer available and will not be available again.</span>
<span class="sd"> &quot;&quot;&quot;</span>
<span class="n">http_status</span> <span class="o">=</span> <span class="mi">410</span>
<span class="n">message</span> <span class="o">=</span> <span class="s">&quot;Gone&quot;</span>
</div>
<div class="viewcode-block" id="HTTPLengthRequired"><a class="viewcode-back" href="../../hplefthandclient.html#hplefthandclient.exceptions.HTTPLengthRequired">[docs]</a><span class="k">class</span> <span class="nc">HTTPLengthRequired</span><span class="p">(</span><span class="n">ClientException</span><span class="p">):</span>
<span class="sd">&quot;&quot;&quot;</span>
<span class="sd"> HTTP 411 - The request did not specify the length of its content, which is required by the requested resource.</span>
<span class="sd"> &quot;&quot;&quot;</span>
<span class="n">http_status</span> <span class="o">=</span> <span class="mi">411</span>
<span class="n">message</span> <span class="o">=</span> <span class="s">&quot;Length Required&quot;</span>
</div>
<div class="viewcode-block" id="HTTPPreconditionFailed"><a class="viewcode-back" href="../../hplefthandclient.html#hplefthandclient.exceptions.HTTPPreconditionFailed">[docs]</a><span class="k">class</span> <span class="nc">HTTPPreconditionFailed</span><span class="p">(</span><span class="n">ClientException</span><span class="p">):</span>
<span class="sd">&quot;&quot;&quot;</span>
<span class="sd"> HTTP 412 - The server does not meet one of the preconditions that the requester put on the request.</span>
<span class="sd"> &quot;&quot;&quot;</span>
<span class="n">http_status</span> <span class="o">=</span> <span class="mi">412</span>
<span class="n">message</span> <span class="o">=</span> <span class="s">&quot;Over limit&quot;</span>
</div>
<div class="viewcode-block" id="HTTPRequestEntityTooLarge"><a class="viewcode-back" href="../../hplefthandclient.html#hplefthandclient.exceptions.HTTPRequestEntityTooLarge">[docs]</a><span class="k">class</span> <span class="nc">HTTPRequestEntityTooLarge</span><span class="p">(</span><span class="n">ClientException</span><span class="p">):</span>
<span class="sd">&quot;&quot;&quot;</span>
<span class="sd"> HTTP 413 - The request is larger than the server is willing or able to process</span>
<span class="sd"> &quot;&quot;&quot;</span>
<span class="n">http_status</span> <span class="o">=</span> <span class="mi">413</span>
<span class="n">message</span> <span class="o">=</span> <span class="s">&quot;Request Entity Too Large&quot;</span>
</div>
<div class="viewcode-block" id="HTTPRequestURITooLong"><a class="viewcode-back" href="../../hplefthandclient.html#hplefthandclient.exceptions.HTTPRequestURITooLong">[docs]</a><span class="k">class</span> <span class="nc">HTTPRequestURITooLong</span><span class="p">(</span><span class="n">ClientException</span><span class="p">):</span>
<span class="sd">&quot;&quot;&quot;</span>
<span class="sd"> HTTP 414 - The URI provided was too long for the server to process.</span>
<span class="sd"> &quot;&quot;&quot;</span>
<span class="n">http_status</span> <span class="o">=</span> <span class="mi">414</span>
<span class="n">message</span> <span class="o">=</span> <span class="s">&quot;Request URI Too Large&quot;</span>
</div>
<div class="viewcode-block" id="HTTPUnsupportedMediaType"><a class="viewcode-back" href="../../hplefthandclient.html#hplefthandclient.exceptions.HTTPUnsupportedMediaType">[docs]</a><span class="k">class</span> <span class="nc">HTTPUnsupportedMediaType</span><span class="p">(</span><span class="n">ClientException</span><span class="p">):</span>
<span class="sd">&quot;&quot;&quot;</span>
<span class="sd"> HTTP 415 - The request entity has a media type which the server or resource does not support.</span>
<span class="sd"> &quot;&quot;&quot;</span>
<span class="n">http_status</span> <span class="o">=</span> <span class="mi">415</span>
<span class="n">message</span> <span class="o">=</span> <span class="s">&quot;Unsupported Media Type&quot;</span>
</div>
<div class="viewcode-block" id="HTTPRequestedRangeNotSatisfiable"><a class="viewcode-back" href="../../hplefthandclient.html#hplefthandclient.exceptions.HTTPRequestedRangeNotSatisfiable">[docs]</a><span class="k">class</span> <span class="nc">HTTPRequestedRangeNotSatisfiable</span><span class="p">(</span><span class="n">ClientException</span><span class="p">):</span>
<span class="sd">&quot;&quot;&quot;</span>
<span class="sd"> HTTP 416 - The client has asked for a portion of the file, but the server cannot supply that portion.</span>
<span class="sd"> &quot;&quot;&quot;</span>
<span class="n">http_status</span> <span class="o">=</span> <span class="mi">416</span>
<span class="n">message</span> <span class="o">=</span> <span class="s">&quot;Requested Range Not Satisfiable&quot;</span>
</div>
<div class="viewcode-block" id="HTTPExpectationFailed"><a class="viewcode-back" href="../../hplefthandclient.html#hplefthandclient.exceptions.HTTPExpectationFailed">[docs]</a><span class="k">class</span> <span class="nc">HTTPExpectationFailed</span><span class="p">(</span><span class="n">ClientException</span><span class="p">):</span>
<span class="sd">&quot;&quot;&quot;</span>
<span class="sd"> HTTP 417 - The server cannot meet the requirements of the Expect request-header field.</span>
<span class="sd"> &quot;&quot;&quot;</span>
<span class="n">http_status</span> <span class="o">=</span> <span class="mi">417</span>
<span class="n">message</span> <span class="o">=</span> <span class="s">&quot;Expectation Failed&quot;</span>
</div>
<div class="viewcode-block" id="HTTPTeaPot"><a class="viewcode-back" href="../../hplefthandclient.html#hplefthandclient.exceptions.HTTPTeaPot">[docs]</a><span class="k">class</span> <span class="nc">HTTPTeaPot</span><span class="p">(</span><span class="n">ClientException</span><span class="p">):</span>
<span class="sd">&quot;&quot;&quot;</span>
<span class="sd"> HTTP 418 - I&#39;m a Tea Pot</span>
<span class="sd"> &quot;&quot;&quot;</span>
<span class="n">http_status</span> <span class="o">=</span> <span class="mi">418</span>
<span class="n">message</span> <span class="o">=</span> <span class="s">&quot;I&#39;m A Teapot. (RFC 2324)&quot;</span>
<span class="c">##</span>
<span class="c">## 500 Errors</span>
<span class="c">##</span>
</div>
<div class="viewcode-block" id="HTTPServerError"><a class="viewcode-back" href="../../hplefthandclient.html#hplefthandclient.exceptions.HTTPServerError">[docs]</a><span class="k">class</span> <span class="nc">HTTPServerError</span><span class="p">(</span><span class="n">ClientException</span><span class="p">):</span>
<span class="sd">&quot;&quot;&quot;</span>
<span class="sd"> HTTP 500 - </span>
<span class="sd"> &quot;&quot;&quot;</span>
<span class="n">http_status</span> <span class="o">=</span> <span class="mi">500</span>
<span class="n">message</span> <span class="o">=</span> <span class="s">&quot;Error&quot;</span>
<span class="c"># NotImplemented is a python keyword.</span></div>
<div class="viewcode-block" id="HTTPNotImplemented"><a class="viewcode-back" href="../../hplefthandclient.html#hplefthandclient.exceptions.HTTPNotImplemented">[docs]</a><span class="k">class</span> <span class="nc">HTTPNotImplemented</span><span class="p">(</span><span class="n">ClientException</span><span class="p">):</span>
<span class="sd">&quot;&quot;&quot;</span>
<span class="sd"> HTTP 501 - Not Implemented: the server does not support this operation.</span>
<span class="sd"> &quot;&quot;&quot;</span>
<span class="n">http_status</span> <span class="o">=</span> <span class="mi">501</span>
<span class="n">message</span> <span class="o">=</span> <span class="s">&quot;Not Implemented&quot;</span>
</div>
<div class="viewcode-block" id="HTTPBadGateway"><a class="viewcode-back" href="../../hplefthandclient.html#hplefthandclient.exceptions.HTTPBadGateway">[docs]</a><span class="k">class</span> <span class="nc">HTTPBadGateway</span><span class="p">(</span><span class="n">ClientException</span><span class="p">):</span>
<span class="sd">&quot;&quot;&quot;</span>
<span class="sd"> HTTP 502 - The server was acting as a gateway or proxy and received an invalid response from the upstream server. </span>
<span class="sd"> &quot;&quot;&quot;</span>
<span class="n">http_status</span> <span class="o">=</span> <span class="mi">502</span>
<span class="n">message</span> <span class="o">=</span> <span class="s">&quot;Bad Gateway&quot;</span>
</div>
<div class="viewcode-block" id="HTTPServiceUnavailable"><a class="viewcode-back" href="../../hplefthandclient.html#hplefthandclient.exceptions.HTTPServiceUnavailable">[docs]</a><span class="k">class</span> <span class="nc">HTTPServiceUnavailable</span><span class="p">(</span><span class="n">ClientException</span><span class="p">):</span>
<span class="sd">&quot;&quot;&quot;</span>
<span class="sd"> HTTP 503 - The server is currently unavailable</span>
<span class="sd"> &quot;&quot;&quot;</span>
<span class="n">http_status</span> <span class="o">=</span> <span class="mi">503</span>
<span class="n">message</span> <span class="o">=</span> <span class="s">&quot;Service Unavailable&quot;</span>
</div>
<div class="viewcode-block" id="HTTPGatewayTimeout"><a class="viewcode-back" href="../../hplefthandclient.html#hplefthandclient.exceptions.HTTPGatewayTimeout">[docs]</a><span class="k">class</span> <span class="nc">HTTPGatewayTimeout</span><span class="p">(</span><span class="n">ClientException</span><span class="p">):</span>
<span class="sd">&quot;&quot;&quot;</span>
<span class="sd"> HTTP 504 - The server was acting as a gateway or proxy and did not receive a timely response from the upstream server.</span>
<span class="sd"> &quot;&quot;&quot;</span>
<span class="n">http_status</span> <span class="o">=</span> <span class="mi">504</span>
<span class="n">message</span> <span class="o">=</span> <span class="s">&quot;Gateway Timeout&quot;</span>
</div>
<div class="viewcode-block" id="HTTPVersionNotSupported"><a class="viewcode-back" href="../../hplefthandclient.html#hplefthandclient.exceptions.HTTPVersionNotSupported">[docs]</a><span class="k">class</span> <span class="nc">HTTPVersionNotSupported</span><span class="p">(</span><span class="n">ClientException</span><span class="p">):</span>
<span class="sd">&quot;&quot;&quot;</span>
<span class="sd"> HTTP 505 - The server does not support the HTTP protocol version used in the request.</span>
<span class="sd"> &quot;&quot;&quot;</span>
<span class="n">http_status</span> <span class="o">=</span> <span class="mi">505</span>
<span class="n">message</span> <span class="o">=</span> <span class="s">&quot;Version Not Supported&quot;</span>
<span class="c"># In Python 2.4 Exception is old-style and thus doesn&#39;t have a __subclasses__()</span>
<span class="c"># so we can do this:</span>
<span class="c"># _code_map = dict((c.http_status, c)</span>
<span class="c"># for c in ClientException.__subclasses__())</span>
<span class="c">#</span>
<span class="c"># Instead, we have to hardcode it:</span></div>
<span class="n">_code_map</span> <span class="o">=</span> <span class="nb">dict</span><span class="p">((</span><span class="n">c</span><span class="o">.</span><span class="n">http_status</span><span class="p">,</span> <span class="n">c</span><span class="p">)</span> <span class="k">for</span> <span class="n">c</span> <span class="ow">in</span> <span class="p">[</span><span class="n">HTTPBadRequest</span><span class="p">,</span> <span class="n">HTTPUnauthorized</span><span class="p">,</span>
<span class="n">HTTPForbidden</span><span class="p">,</span> <span class="n">HTTPNotFound</span><span class="p">,</span> <span class="n">HTTPMethodNotAllowed</span><span class="p">,</span>
<span class="n">HTTPNotAcceptable</span><span class="p">,</span> <span class="n">HTTPProxyAuthRequired</span><span class="p">,</span> <span class="n">HTTPRequestTimeout</span><span class="p">,</span>
<span class="n">HTTPConflict</span><span class="p">,</span> <span class="n">HTTPGone</span><span class="p">,</span> <span class="n">HTTPLengthRequired</span><span class="p">,</span>
<span class="n">HTTPPreconditionFailed</span><span class="p">,</span> <span class="n">HTTPRequestEntityTooLarge</span><span class="p">,</span>
<span class="n">HTTPRequestURITooLong</span><span class="p">,</span> <span class="n">HTTPUnsupportedMediaType</span><span class="p">,</span>
<span class="n">HTTPRequestedRangeNotSatisfiable</span><span class="p">,</span> <span class="n">HTTPExpectationFailed</span><span class="p">,</span>
<span class="n">HTTPTeaPot</span><span class="p">,</span> <span class="n">HTTPServerError</span><span class="p">,</span>
<span class="n">HTTPNotImplemented</span><span class="p">,</span> <span class="n">HTTPBadGateway</span><span class="p">,</span>
<span class="n">HTTPServiceUnavailable</span><span class="p">,</span> <span class="n">HTTPGatewayTimeout</span><span class="p">,</span>
<span class="n">HTTPVersionNotSupported</span><span class="p">])</span>
<div class="viewcode-block" id="from_response"><a class="viewcode-back" href="../../hplefthandclient.html#hplefthandclient.exceptions.from_response">[docs]</a><span class="k">def</span> <span class="nf">from_response</span><span class="p">(</span><span class="n">response</span><span class="p">,</span> <span class="n">body</span><span class="p">):</span>
<span class="sd">&quot;&quot;&quot;</span>
<span class="sd"> Return an instance of an ClientException or subclass</span>
<span class="sd"> based on an httplib2 response.</span>
<span class="sd"> Usage:: </span>
<span class="sd"> resp, body = http.request(...)</span>
<span class="sd"> if resp.status != 200:</span>
<span class="sd"> raise exception_from_response(resp, body)</span>
<span class="sd"> &quot;&quot;&quot;</span>
<span class="n">cls</span> <span class="o">=</span> <span class="n">_code_map</span><span class="o">.</span><span class="n">get</span><span class="p">(</span><span class="n">response</span><span class="o">.</span><span class="n">status</span><span class="p">,</span> <span class="n">ClientException</span><span class="p">)</span>
<span class="k">return</span> <span class="n">cls</span><span class="p">(</span><span class="n">body</span><span class="p">)</span></div>
</pre></div>
</div>
</div>
</div>
<div class="sphinxsidebar">
<div class="sphinxsidebarwrapper">
<div id="searchbox" style="display: none">
<h3>Quick search</h3>
<form class="search" action="../../search.html" method="get">
<input type="text" name="q" />
<input type="submit" value="Go" />
<input type="hidden" name="check_keywords" value="yes" />
<input type="hidden" name="area" value="default" />
</form>
<p class="searchtip" style="font-size: 90%">
Enter search terms or a module, class or function name.
</p>
</div>
<script type="text/javascript">$('#searchbox').show(0);</script>
</div>
</div>
<div class="clearer"></div>
</div>
<div class="related">
<h3>Navigation</h3>
<ul>
<li class="right" style="margin-right: 10px">
<a href="../../genindex.html" title="General Index"
>index</a></li>
<li class="right" >
<a href="../../py-modindex.html" title="Python Module Index"
>modules</a> |</li>
<li><a href="../../index.html">HP LeftHand REST Client 1.0.0 documentation</a> &raquo;</li>
<li><a href="../index.html" >Module code</a> &raquo;</li>
<li><a href="../hplefthandclient.html" >hplefthandclient</a> &raquo;</li>
</ul>
</div>
<div class="footer">
&copy; Copyright 2013 Hewlett Packard Development Company, L.P..
Created using <a href="http://sphinx.pocoo.org/">Sphinx</a> 1.1.3.
</div>
</body>
</html>

View File

@ -1,427 +0,0 @@
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN"
"http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
<title>hplefthandclient.http &mdash; HP LeftHand REST Client 1.0.0 documentation</title>
<link rel="stylesheet" href="../../_static/default.css" type="text/css" />
<link rel="stylesheet" href="../../_static/pygments.css" type="text/css" />
<script type="text/javascript">
var DOCUMENTATION_OPTIONS = {
URL_ROOT: '../../',
VERSION: '1.0.0',
COLLAPSE_INDEX: false,
FILE_SUFFIX: '.html',
HAS_SOURCE: true
};
</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>
<link rel="top" title="HP LeftHand REST Client 1.0.0 documentation" href="../../index.html" />
<link rel="up" title="hplefthandclient" href="../hplefthandclient.html" />
</head>
<body>
<div class="related">
<h3>Navigation</h3>
<ul>
<li class="right" style="margin-right: 10px">
<a href="../../genindex.html" title="General Index"
accesskey="I">index</a></li>
<li class="right" >
<a href="../../py-modindex.html" title="Python Module Index"
>modules</a> |</li>
<li><a href="../../index.html">HP LeftHand REST Client 1.0.0 documentation</a> &raquo;</li>
<li><a href="../index.html" >Module code</a> &raquo;</li>
<li><a href="../hplefthandclient.html" accesskey="U">hplefthandclient</a> &raquo;</li>
</ul>
</div>
<div class="document">
<div class="documentwrapper">
<div class="bodywrapper">
<div class="body">
<h1>Source code for hplefthandclient.http</h1><div class="highlight"><pre>
<span class="c"># vim: tabstop=4 shiftwidth=4 softtabstop=4</span>
<span class="c">#</span>
<span class="c"># Copyright 2013 Hewlett Packard Development Company, L.P.</span>
<span class="c"># All Rights Reserved.</span>
<span class="c">#</span>
<span class="c"># Licensed under the Apache License, Version 2.0 (the &quot;License&quot;); you may</span>
<span class="c"># not use this file except in compliance with the License. You may obtain</span>
<span class="c"># a copy of the License at</span>
<span class="c">#</span>
<span class="c"># http://www.apache.org/licenses/LICENSE-2.0</span>
<span class="c">#</span>
<span class="c"># Unless required by applicable law or agreed to in writing, software</span>
<span class="c"># distributed under the License is distributed on an &quot;AS IS&quot; BASIS, WITHOUT</span>
<span class="c"># WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the</span>
<span class="c"># License for the specific language governing permissions and limitations</span>
<span class="c"># under the License.</span>
<span class="sd">&quot;&quot;&quot;</span>
<span class="sd">HPLeftHand HTTP Client</span>
<span class="sd">:Author: Walter A. Boring IV</span>
<span class="sd">:Description: This is the HTTP Client that is used to make the actual calls.</span>
<span class="sd"> It includes the authentication that knows the cookie name for LH.</span>
<span class="sd">&quot;&quot;&quot;</span>
<span class="kn">import</span> <span class="nn">logging</span>
<span class="kn">import</span> <span class="nn">httplib2</span>
<span class="kn">import</span> <span class="nn">time</span>
<span class="kn">import</span> <span class="nn">pprint</span>
<span class="k">try</span><span class="p">:</span>
<span class="kn">import</span> <span class="nn">json</span>
<span class="k">except</span> <span class="ne">ImportError</span><span class="p">:</span>
<span class="kn">import</span> <span class="nn">simplejson</span> <span class="kn">as</span> <span class="nn">json</span>
<span class="kn">from</span> <span class="nn">hplefthandclient</span> <span class="kn">import</span> <span class="n">exceptions</span>
<div class="viewcode-block" id="HTTPJSONRESTClient"><a class="viewcode-back" href="../../hplefthandclient.html#hplefthandclient.http.HTTPJSONRESTClient">[docs]</a><span class="k">class</span> <span class="nc">HTTPJSONRESTClient</span><span class="p">(</span><span class="n">httplib2</span><span class="o">.</span><span class="n">Http</span><span class="p">):</span>
<span class="sd">&quot;&quot;&quot;</span>
<span class="sd"> An HTTP REST Client that sends and recieves JSON data as the body of the</span>
<span class="sd"> HTTP request.</span>
<span class="sd"> :param api_url: The url to the LH OS REST service</span>
<span class="sd"> ie. https://&lt;hostname or IP&gt;:&lt;port&gt;/lhos</span>
<span class="sd"> :type api_url: str</span>
<span class="sd"> :param insecure: Use https? requires a local certificate</span>
<span class="sd"> :type insecure: bool</span>
<span class="sd"> &quot;&quot;&quot;</span>
<span class="n">USER_AGENT</span> <span class="o">=</span> <span class="s">&#39;python-hplefthandclient&#39;</span>
<span class="n">SESSION_COOKIE_NAME</span> <span class="o">=</span> <span class="s">&#39;Authorization&#39;</span>
<span class="c">#API_VERSION = &#39;X-API-Version&#39;</span>
<span class="c">#CHRP_VERSION = &#39;X_HP-CHRP-Client-Version&#39;</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">api_url</span><span class="p">,</span> <span class="n">insecure</span><span class="o">=</span><span class="bp">False</span><span class="p">,</span> <span class="n">http_log_debug</span><span class="o">=</span><span class="bp">False</span><span class="p">):</span>
<span class="nb">super</span><span class="p">(</span><span class="n">HTTPJSONRESTClient</span><span class="p">,</span>
<span class="bp">self</span><span class="p">)</span><span class="o">.</span><span class="n">__init__</span><span class="p">(</span><span class="n">disable_ssl_certificate_validation</span><span class="o">=</span><span class="bp">True</span><span class="p">)</span>
<span class="bp">self</span><span class="o">.</span><span class="n">session_key</span> <span class="o">=</span> <span class="bp">None</span>
<span class="c">#should be http://&lt;Server:Port&gt;/lhos</span>
<span class="bp">self</span><span class="o">.</span><span class="n">set_url</span><span class="p">(</span><span class="n">api_url</span><span class="p">)</span>
<span class="bp">self</span><span class="o">.</span><span class="n">set_debug_flag</span><span class="p">(</span><span class="n">http_log_debug</span><span class="p">)</span>
<span class="bp">self</span><span class="o">.</span><span class="n">times</span> <span class="o">=</span> <span class="p">[]</span> <span class="c"># [(&quot;item&quot;, starttime, endtime), ...]</span>
<span class="c"># httplib2 overrides</span>
<span class="bp">self</span><span class="o">.</span><span class="n">force_exception_to_status_code</span> <span class="o">=</span> <span class="bp">True</span>
<span class="c">#self.disable_ssl_certificate_validation = insecure</span>
<span class="bp">self</span><span class="o">.</span><span class="n">_logger</span> <span class="o">=</span> <span class="n">logging</span><span class="o">.</span><span class="n">getLogger</span><span class="p">(</span><span class="n">__name__</span><span class="p">)</span>
<div class="viewcode-block" id="HTTPJSONRESTClient.set_url"><a class="viewcode-back" href="../../hplefthandclient.html#hplefthandclient.http.HTTPJSONRESTClient.set_url">[docs]</a> <span class="k">def</span> <span class="nf">set_url</span><span class="p">(</span><span class="bp">self</span><span class="p">,</span> <span class="n">api_url</span><span class="p">):</span>
<span class="c">#should be http://&lt;Server:Port&gt;/lhos</span>
<span class="bp">self</span><span class="o">.</span><span class="n">api_url</span> <span class="o">=</span> <span class="n">api_url</span><span class="o">.</span><span class="n">rstrip</span><span class="p">(</span><span class="s">&#39;/&#39;</span><span class="p">)</span>
<span class="bp">self</span><span class="o">.</span><span class="n">api_url</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">api_url</span>
</div>
<div class="viewcode-block" id="HTTPJSONRESTClient.set_debug_flag"><a class="viewcode-back" href="../../hplefthandclient.html#hplefthandclient.http.HTTPJSONRESTClient.set_debug_flag">[docs]</a> <span class="k">def</span> <span class="nf">set_debug_flag</span><span class="p">(</span><span class="bp">self</span><span class="p">,</span> <span class="n">flag</span><span class="p">):</span>
<span class="sd">&quot;&quot;&quot;</span>
<span class="sd"> This turns on/off http request/response debugging output to console</span>
<span class="sd"> :param flag: Set to True to enable debugging output</span>
<span class="sd"> :type flag: bool</span>
<span class="sd"> &quot;&quot;&quot;</span>
<span class="bp">self</span><span class="o">.</span><span class="n">http_log_debug</span> <span class="o">=</span> <span class="n">flag</span>
<span class="k">if</span> <span class="bp">self</span><span class="o">.</span><span class="n">http_log_debug</span><span class="p">:</span>
<span class="n">ch</span> <span class="o">=</span> <span class="n">logging</span><span class="o">.</span><span class="n">StreamHandler</span><span class="p">()</span>
<span class="bp">self</span><span class="o">.</span><span class="n">_logger</span><span class="o">.</span><span class="n">setLevel</span><span class="p">(</span><span class="n">logging</span><span class="o">.</span><span class="n">DEBUG</span><span class="p">)</span>
<span class="bp">self</span><span class="o">.</span><span class="n">_logger</span><span class="o">.</span><span class="n">addHandler</span><span class="p">(</span><span class="n">ch</span><span class="p">)</span>
</div>
<div class="viewcode-block" id="HTTPJSONRESTClient.authenticate"><a class="viewcode-back" href="../../hplefthandclient.html#hplefthandclient.http.HTTPJSONRESTClient.authenticate">[docs]</a> <span class="k">def</span> <span class="nf">authenticate</span><span class="p">(</span><span class="bp">self</span><span class="p">,</span> <span class="n">user</span><span class="p">,</span> <span class="n">password</span><span class="p">,</span> <span class="n">optional</span><span class="o">=</span><span class="bp">None</span><span class="p">):</span>
<span class="sd">&quot;&quot;&quot;</span>
<span class="sd"> This tries to create an authenticated session with the LH OS server</span>
<span class="sd"> :param user: The username</span>
<span class="sd"> :type user: str</span>
<span class="sd"> :param password: The password</span>
<span class="sd"> :type password: str</span>
<span class="sd"> &quot;&quot;&quot;</span>
<span class="c">#this prevens re-auth attempt if auth fails</span>
<span class="bp">self</span><span class="o">.</span><span class="n">auth_try</span> <span class="o">=</span> <span class="mi">1</span>
<span class="bp">self</span><span class="o">.</span><span class="n">session_key</span> <span class="o">=</span> <span class="bp">None</span>
<span class="n">info</span> <span class="o">=</span> <span class="p">{</span><span class="s">&#39;user&#39;</span><span class="p">:</span> <span class="n">user</span><span class="p">,</span> <span class="s">&#39;password&#39;</span><span class="p">:</span> <span class="n">password</span><span class="p">}</span>
<span class="bp">self</span><span class="o">.</span><span class="n">_auth_optional</span> <span class="o">=</span> <span class="bp">None</span>
<span class="k">if</span> <span class="n">optional</span><span class="p">:</span>
<span class="bp">self</span><span class="o">.</span><span class="n">_auth_optional</span> <span class="o">=</span> <span class="n">optional</span>
<span class="n">info</span><span class="o">.</span><span class="n">update</span><span class="p">(</span><span class="n">optional</span><span class="p">)</span>
<span class="n">resp</span><span class="p">,</span> <span class="n">body</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">post</span><span class="p">(</span><span class="s">&#39;/credentials&#39;</span><span class="p">,</span> <span class="n">body</span><span class="o">=</span><span class="n">info</span><span class="p">)</span>
<span class="k">if</span> <span class="n">body</span> <span class="ow">and</span> <span class="s">&#39;authToken&#39;</span> <span class="ow">in</span> <span class="n">body</span><span class="p">:</span>
<span class="bp">self</span><span class="o">.</span><span class="n">session_key</span> <span class="o">=</span> <span class="n">body</span><span class="p">[</span><span class="s">&#39;authToken&#39;</span><span class="p">]</span>
<span class="bp">self</span><span class="o">.</span><span class="n">auth_try</span> <span class="o">=</span> <span class="mi">0</span>
<span class="bp">self</span><span class="o">.</span><span class="n">user</span> <span class="o">=</span> <span class="n">user</span>
<span class="bp">self</span><span class="o">.</span><span class="n">password</span> <span class="o">=</span> <span class="n">password</span>
</div>
<span class="k">def</span> <span class="nf">_reauth</span><span class="p">(</span><span class="bp">self</span><span class="p">):</span>
<span class="bp">self</span><span class="o">.</span><span class="n">authenticate</span><span class="p">(</span><span class="bp">self</span><span class="o">.</span><span class="n">user</span><span class="p">,</span> <span class="bp">self</span><span class="o">.</span><span class="n">password</span><span class="p">,</span> <span class="bp">self</span><span class="o">.</span><span class="n">_auth_optional</span><span class="p">)</span>
<div class="viewcode-block" id="HTTPJSONRESTClient.unauthenticate"><a class="viewcode-back" href="../../hplefthandclient.html#hplefthandclient.http.HTTPJSONRESTClient.unauthenticate">[docs]</a> <span class="k">def</span> <span class="nf">unauthenticate</span><span class="p">(</span><span class="bp">self</span><span class="p">):</span>
<span class="sd">&quot;&quot;&quot;</span>
<span class="sd"> This clears the authenticated session with the LH server. It logs out.</span>
<span class="sd"> &quot;&quot;&quot;</span>
<span class="c">#delete the session on the LH</span>
<span class="bp">self</span><span class="o">.</span><span class="n">delete</span><span class="p">(</span><span class="s">&#39;/credentials/</span><span class="si">%s</span><span class="s">&#39;</span> <span class="o">%</span> <span class="bp">self</span><span class="o">.</span><span class="n">session_key</span><span class="p">)</span>
<span class="bp">self</span><span class="o">.</span><span class="n">session_key</span> <span class="o">=</span> <span class="bp">None</span>
</div>
<div class="viewcode-block" id="HTTPJSONRESTClient.get_timings"><a class="viewcode-back" href="../../hplefthandclient.html#hplefthandclient.http.HTTPJSONRESTClient.get_timings">[docs]</a> <span class="k">def</span> <span class="nf">get_timings</span><span class="p">(</span><span class="bp">self</span><span class="p">):</span>
<span class="sd">&quot;&quot;&quot;</span>
<span class="sd"> Ths gives an array of the request timings since last reset_timings call</span>
<span class="sd"> &quot;&quot;&quot;</span>
<span class="k">return</span> <span class="bp">self</span><span class="o">.</span><span class="n">times</span>
</div>
<div class="viewcode-block" id="HTTPJSONRESTClient.reset_timings"><a class="viewcode-back" href="../../hplefthandclient.html#hplefthandclient.http.HTTPJSONRESTClient.reset_timings">[docs]</a> <span class="k">def</span> <span class="nf">reset_timings</span><span class="p">(</span><span class="bp">self</span><span class="p">):</span>
<span class="sd">&quot;&quot;&quot;</span>
<span class="sd"> This resets the request/response timings array</span>
<span class="sd"> &quot;&quot;&quot;</span>
<span class="bp">self</span><span class="o">.</span><span class="n">times</span> <span class="o">=</span> <span class="p">[]</span>
</div>
<span class="k">def</span> <span class="nf">_http_log_req</span><span class="p">(</span><span class="bp">self</span><span class="p">,</span> <span class="n">args</span><span class="p">,</span> <span class="n">kwargs</span><span class="p">):</span>
<span class="k">if</span> <span class="ow">not</span> <span class="bp">self</span><span class="o">.</span><span class="n">http_log_debug</span><span class="p">:</span>
<span class="k">return</span>
<span class="n">string_parts</span> <span class="o">=</span> <span class="p">[</span><span class="s">&#39;curl -i&#39;</span><span class="p">]</span>
<span class="k">for</span> <span class="n">element</span> <span class="ow">in</span> <span class="n">args</span><span class="p">:</span>
<span class="k">if</span> <span class="n">element</span> <span class="ow">in</span> <span class="p">(</span><span class="s">&#39;GET&#39;</span><span class="p">,</span> <span class="s">&#39;POST&#39;</span><span class="p">):</span>
<span class="n">string_parts</span><span class="o">.</span><span class="n">append</span><span class="p">(</span><span class="s">&#39; -X </span><span class="si">%s</span><span class="s">&#39;</span> <span class="o">%</span> <span class="n">element</span><span class="p">)</span>
<span class="k">else</span><span class="p">:</span>
<span class="n">string_parts</span><span class="o">.</span><span class="n">append</span><span class="p">(</span><span class="s">&#39; </span><span class="si">%s</span><span class="s">&#39;</span> <span class="o">%</span> <span class="n">element</span><span class="p">)</span>
<span class="k">for</span> <span class="n">element</span> <span class="ow">in</span> <span class="n">kwargs</span><span class="p">[</span><span class="s">&#39;headers&#39;</span><span class="p">]:</span>
<span class="n">header</span> <span class="o">=</span> <span class="s">&#39; -H &quot;</span><span class="si">%s</span><span class="s">: </span><span class="si">%s</span><span class="s">&quot;&#39;</span> <span class="o">%</span> <span class="p">(</span><span class="n">element</span><span class="p">,</span> <span class="n">kwargs</span><span class="p">[</span><span class="s">&#39;headers&#39;</span><span class="p">][</span><span class="n">element</span><span class="p">])</span>
<span class="n">string_parts</span><span class="o">.</span><span class="n">append</span><span class="p">(</span><span class="n">header</span><span class="p">)</span>
<span class="bp">self</span><span class="o">.</span><span class="n">_logger</span><span class="o">.</span><span class="n">debug</span><span class="p">(</span><span class="s">&quot;</span><span class="se">\n</span><span class="s">REQ: </span><span class="si">%s</span><span class="se">\n</span><span class="s">&quot;</span> <span class="o">%</span> <span class="s">&quot;&quot;</span><span class="o">.</span><span class="n">join</span><span class="p">(</span><span class="n">string_parts</span><span class="p">))</span>
<span class="k">if</span> <span class="s">&#39;body&#39;</span> <span class="ow">in</span> <span class="n">kwargs</span><span class="p">:</span>
<span class="bp">self</span><span class="o">.</span><span class="n">_logger</span><span class="o">.</span><span class="n">debug</span><span class="p">(</span><span class="s">&quot;REQ BODY: </span><span class="si">%s</span><span class="se">\n</span><span class="s">&quot;</span> <span class="o">%</span> <span class="p">(</span><span class="n">kwargs</span><span class="p">[</span><span class="s">&#39;body&#39;</span><span class="p">]))</span>
<span class="k">def</span> <span class="nf">_http_log_resp</span><span class="p">(</span><span class="bp">self</span><span class="p">,</span> <span class="n">resp</span><span class="p">,</span> <span class="n">body</span><span class="p">):</span>
<span class="k">if</span> <span class="ow">not</span> <span class="bp">self</span><span class="o">.</span><span class="n">http_log_debug</span><span class="p">:</span>
<span class="k">return</span>
<span class="bp">self</span><span class="o">.</span><span class="n">_logger</span><span class="o">.</span><span class="n">debug</span><span class="p">(</span><span class="s">&quot;RESP:</span><span class="si">%s</span><span class="se">\n</span><span class="s">&quot;</span><span class="p">,</span> <span class="n">pprint</span><span class="o">.</span><span class="n">pformat</span><span class="p">(</span><span class="n">resp</span><span class="p">))</span>
<span class="bp">self</span><span class="o">.</span><span class="n">_logger</span><span class="o">.</span><span class="n">debug</span><span class="p">(</span><span class="s">&quot;RESP BODY:</span><span class="si">%s</span><span class="se">\n</span><span class="s">&quot;</span><span class="p">,</span> <span class="n">body</span><span class="p">)</span>
<div class="viewcode-block" id="HTTPJSONRESTClient.request"><a class="viewcode-back" href="../../hplefthandclient.html#hplefthandclient.http.HTTPJSONRESTClient.request">[docs]</a> <span class="k">def</span> <span class="nf">request</span><span class="p">(</span><span class="bp">self</span><span class="p">,</span> <span class="o">*</span><span class="n">args</span><span class="p">,</span> <span class="o">**</span><span class="n">kwargs</span><span class="p">):</span>
<span class="sd">&quot;&quot;&quot;</span>
<span class="sd"> This makes an HTTP Request to the LH server. You should use get, post,</span>
<span class="sd"> delete instead.</span>
<span class="sd"> &quot;&quot;&quot;</span>
<span class="k">if</span> <span class="bp">self</span><span class="o">.</span><span class="n">session_key</span> <span class="ow">and</span> <span class="bp">self</span><span class="o">.</span><span class="n">auth_try</span> <span class="o">!=</span> <span class="mi">1</span><span class="p">:</span>
<span class="n">kwargs</span><span class="o">.</span><span class="n">setdefault</span><span class="p">(</span><span class="s">&#39;headers&#39;</span><span class="p">,</span>
<span class="p">{})[</span><span class="bp">self</span><span class="o">.</span><span class="n">SESSION_COOKIE_NAME</span><span class="p">]</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">session_key</span>
<span class="n">kwargs</span><span class="o">.</span><span class="n">setdefault</span><span class="p">(</span><span class="s">&#39;headers&#39;</span><span class="p">,</span> <span class="n">kwargs</span><span class="o">.</span><span class="n">get</span><span class="p">(</span><span class="s">&#39;headers&#39;</span><span class="p">,</span> <span class="p">{}))</span>
<span class="n">kwargs</span><span class="p">[</span><span class="s">&#39;headers&#39;</span><span class="p">][</span><span class="s">&#39;User-Agent&#39;</span><span class="p">]</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">USER_AGENT</span>
<span class="n">kwargs</span><span class="p">[</span><span class="s">&#39;headers&#39;</span><span class="p">][</span><span class="s">&#39;Accept&#39;</span><span class="p">]</span> <span class="o">=</span> <span class="s">&#39;application/json&#39;</span>
<span class="k">if</span> <span class="s">&#39;body&#39;</span> <span class="ow">in</span> <span class="n">kwargs</span><span class="p">:</span>
<span class="n">kwargs</span><span class="p">[</span><span class="s">&#39;headers&#39;</span><span class="p">][</span><span class="s">&#39;Content-Type&#39;</span><span class="p">]</span> <span class="o">=</span> <span class="s">&#39;application/json&#39;</span>
<span class="n">kwargs</span><span class="p">[</span><span class="s">&#39;body&#39;</span><span class="p">]</span> <span class="o">=</span> <span class="n">json</span><span class="o">.</span><span class="n">dumps</span><span class="p">(</span><span class="n">kwargs</span><span class="p">[</span><span class="s">&#39;body&#39;</span><span class="p">])</span>
<span class="bp">self</span><span class="o">.</span><span class="n">_http_log_req</span><span class="p">(</span><span class="n">args</span><span class="p">,</span> <span class="n">kwargs</span><span class="p">)</span>
<span class="n">resp</span><span class="p">,</span> <span class="n">body</span> <span class="o">=</span> <span class="nb">super</span><span class="p">(</span><span class="n">HTTPJSONRESTClient</span><span class="p">,</span> <span class="bp">self</span><span class="p">)</span><span class="o">.</span><span class="n">request</span><span class="p">(</span><span class="o">*</span><span class="n">args</span><span class="p">,</span> <span class="o">**</span><span class="n">kwargs</span><span class="p">)</span>
<span class="bp">self</span><span class="o">.</span><span class="n">_http_log_resp</span><span class="p">(</span><span class="n">resp</span><span class="p">,</span> <span class="n">body</span><span class="p">)</span>
<span class="c"># Try and conver the body response to an object</span>
<span class="c"># This assumes the body of the reply is JSON</span>
<span class="k">if</span> <span class="n">body</span><span class="p">:</span>
<span class="k">try</span><span class="p">:</span>
<span class="n">body</span> <span class="o">=</span> <span class="n">json</span><span class="o">.</span><span class="n">loads</span><span class="p">(</span><span class="n">body</span><span class="p">)</span>
<span class="k">except</span> <span class="ne">ValueError</span><span class="p">:</span>
<span class="c">#pprint.pprint(&quot;failed to decode json\n&quot;)</span>
<span class="k">pass</span>
<span class="k">else</span><span class="p">:</span>
<span class="n">body</span> <span class="o">=</span> <span class="bp">None</span>
<span class="k">if</span> <span class="n">resp</span><span class="o">.</span><span class="n">status</span> <span class="o">&gt;=</span> <span class="mi">400</span><span class="p">:</span>
<span class="k">raise</span> <span class="n">exceptions</span><span class="o">.</span><span class="n">from_response</span><span class="p">(</span><span class="n">resp</span><span class="p">,</span> <span class="n">body</span><span class="p">)</span>
<span class="k">return</span> <span class="n">resp</span><span class="p">,</span> <span class="n">body</span>
</div>
<span class="k">def</span> <span class="nf">_time_request</span><span class="p">(</span><span class="bp">self</span><span class="p">,</span> <span class="n">url</span><span class="p">,</span> <span class="n">method</span><span class="p">,</span> <span class="o">**</span><span class="n">kwargs</span><span class="p">):</span>
<span class="n">start_time</span> <span class="o">=</span> <span class="n">time</span><span class="o">.</span><span class="n">time</span><span class="p">()</span>
<span class="n">resp</span><span class="p">,</span> <span class="n">body</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">request</span><span class="p">(</span><span class="n">url</span><span class="p">,</span> <span class="n">method</span><span class="p">,</span> <span class="o">**</span><span class="n">kwargs</span><span class="p">)</span>
<span class="bp">self</span><span class="o">.</span><span class="n">times</span><span class="o">.</span><span class="n">append</span><span class="p">((</span><span class="s">&quot;</span><span class="si">%s</span><span class="s"> </span><span class="si">%s</span><span class="s">&quot;</span> <span class="o">%</span> <span class="p">(</span><span class="n">method</span><span class="p">,</span> <span class="n">url</span><span class="p">),</span>
<span class="n">start_time</span><span class="p">,</span> <span class="n">time</span><span class="o">.</span><span class="n">time</span><span class="p">()))</span>
<span class="k">return</span> <span class="n">resp</span><span class="p">,</span> <span class="n">body</span>
<span class="k">def</span> <span class="nf">_do_reauth</span><span class="p">(</span><span class="bp">self</span><span class="p">,</span> <span class="n">url</span><span class="p">,</span> <span class="n">method</span><span class="p">,</span> <span class="n">ex</span><span class="p">,</span> <span class="o">**</span><span class="n">kwargs</span><span class="p">):</span>
<span class="k">print</span> <span class="s">&quot;_do_reauth called&quot;</span>
<span class="k">try</span><span class="p">:</span>
<span class="k">if</span> <span class="bp">self</span><span class="o">.</span><span class="n">auth_try</span> <span class="o">!=</span> <span class="mi">1</span><span class="p">:</span>
<span class="bp">self</span><span class="o">.</span><span class="n">_reauth</span><span class="p">()</span>
<span class="n">resp</span><span class="p">,</span> <span class="n">body</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">_time_request</span><span class="p">(</span><span class="bp">self</span><span class="o">.</span><span class="n">api_url</span> <span class="o">+</span> <span class="n">url</span><span class="p">,</span>
<span class="n">method</span><span class="p">,</span> <span class="o">**</span><span class="n">kwargs</span><span class="p">)</span>
<span class="k">return</span> <span class="n">resp</span><span class="p">,</span> <span class="n">body</span>
<span class="k">else</span><span class="p">:</span>
<span class="k">raise</span> <span class="n">ex</span>
<span class="k">except</span> <span class="n">exceptions</span><span class="o">.</span><span class="n">HTTPUnauthorized</span><span class="p">:</span>
<span class="k">raise</span> <span class="n">ex</span>
<span class="k">def</span> <span class="nf">_cs_request</span><span class="p">(</span><span class="bp">self</span><span class="p">,</span> <span class="n">url</span><span class="p">,</span> <span class="n">method</span><span class="p">,</span> <span class="o">**</span><span class="n">kwargs</span><span class="p">):</span>
<span class="c"># Perform the request once. If we get a 401 back then it</span>
<span class="c"># might be because the auth token expired, so try to</span>
<span class="c"># re-authenticate and try again. If it still fails, bail.</span>
<span class="k">try</span><span class="p">:</span>
<span class="n">resp</span><span class="p">,</span> <span class="n">body</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">_time_request</span><span class="p">(</span><span class="bp">self</span><span class="o">.</span><span class="n">api_url</span> <span class="o">+</span> <span class="n">url</span><span class="p">,</span> <span class="n">method</span><span class="p">,</span>
<span class="o">**</span><span class="n">kwargs</span><span class="p">)</span>
<span class="k">return</span> <span class="n">resp</span><span class="p">,</span> <span class="n">body</span>
<span class="k">except</span> <span class="n">exceptions</span><span class="o">.</span><span class="n">HTTPUnauthorized</span><span class="p">,</span> <span class="n">ex</span><span class="p">:</span>
<span class="k">print</span> <span class="s">&quot;_CS_REQUEST HTTPUnauthorized&quot;</span>
<span class="n">resp</span><span class="p">,</span> <span class="n">body</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">_do_reauth</span><span class="p">(</span><span class="n">url</span><span class="p">,</span> <span class="n">method</span><span class="p">,</span> <span class="n">ex</span><span class="p">,</span> <span class="o">**</span><span class="n">kwargs</span><span class="p">)</span>
<span class="k">return</span> <span class="n">resp</span><span class="p">,</span> <span class="n">body</span>
<span class="k">except</span> <span class="n">exceptions</span><span class="o">.</span><span class="n">HTTPForbidden</span><span class="p">,</span> <span class="n">ex</span><span class="p">:</span>
<span class="k">print</span> <span class="s">&quot;_CS_REQUEST HTTPForbidden&quot;</span>
<span class="n">resp</span><span class="p">,</span> <span class="n">body</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">_do_reauth</span><span class="p">(</span><span class="n">url</span><span class="p">,</span> <span class="n">method</span><span class="p">,</span> <span class="n">ex</span><span class="p">,</span> <span class="o">**</span><span class="n">kwargs</span><span class="p">)</span>
<span class="k">return</span> <span class="n">resp</span><span class="p">,</span> <span class="n">body</span>
<div class="viewcode-block" id="HTTPJSONRESTClient.get"><a class="viewcode-back" href="../../hplefthandclient.html#hplefthandclient.http.HTTPJSONRESTClient.get">[docs]</a> <span class="k">def</span> <span class="nf">get</span><span class="p">(</span><span class="bp">self</span><span class="p">,</span> <span class="n">url</span><span class="p">,</span> <span class="o">**</span><span class="n">kwargs</span><span class="p">):</span>
<span class="sd">&quot;&quot;&quot;</span>
<span class="sd"> Make an HTTP GET request to the server.</span>
<span class="sd"> .. code-block:: python</span>
<span class="sd"> #example call</span>
<span class="sd"> try {</span>
<span class="sd"> headers, body = http.get(&#39;/volumes&#39;)</span>
<span class="sd"> } except exceptions.HTTPUnauthorized as ex:</span>
<span class="sd"> print &quot;Not logged in&quot;</span>
<span class="sd"> }</span>
<span class="sd"> :param url: The relative url from the LH api_url</span>
<span class="sd"> :type url: str</span>
<span class="sd"> :returns: headers - dict of HTTP Response headers</span>
<span class="sd"> :returns: body - the body of the response. If the body was JSON,</span>
<span class="sd"> it will be an object</span>
<span class="sd"> &quot;&quot;&quot;</span>
<span class="k">return</span> <span class="bp">self</span><span class="o">.</span><span class="n">_cs_request</span><span class="p">(</span><span class="n">url</span><span class="p">,</span> <span class="s">&#39;GET&#39;</span><span class="p">,</span> <span class="o">**</span><span class="n">kwargs</span><span class="p">)</span>
</div>
<div class="viewcode-block" id="HTTPJSONRESTClient.post"><a class="viewcode-back" href="../../hplefthandclient.html#hplefthandclient.http.HTTPJSONRESTClient.post">[docs]</a> <span class="k">def</span> <span class="nf">post</span><span class="p">(</span><span class="bp">self</span><span class="p">,</span> <span class="n">url</span><span class="p">,</span> <span class="o">**</span><span class="n">kwargs</span><span class="p">):</span>
<span class="sd">&quot;&quot;&quot;</span>
<span class="sd"> Make an HTTP POST request to the server.</span>
<span class="sd"> .. code-block:: python</span>
<span class="sd"> #example call</span>
<span class="sd"> try {</span>
<span class="sd"> info = {&#39;name&#39;: &#39;new volume name&#39;, &#39;sizeMiB&#39;: 300}</span>
<span class="sd"> headers, body = http.post(&#39;/volumes&#39;, body=info)</span>
<span class="sd"> } except exceptions.HTTPUnauthorized as ex:</span>
<span class="sd"> print &quot;Not logged in&quot;</span>
<span class="sd"> }</span>
<span class="sd"> :param url: The relative url from the LH api_url</span>
<span class="sd"> :type url: str</span>
<span class="sd"> :returns: headers - dict of HTTP Response headers</span>
<span class="sd"> :returns: body - the body of the response. If the body was JSON,</span>
<span class="sd"> it will be an object</span>
<span class="sd"> &quot;&quot;&quot;</span>
<span class="k">return</span> <span class="bp">self</span><span class="o">.</span><span class="n">_cs_request</span><span class="p">(</span><span class="n">url</span><span class="p">,</span> <span class="s">&#39;POST&#39;</span><span class="p">,</span> <span class="o">**</span><span class="n">kwargs</span><span class="p">)</span>
</div>
<div class="viewcode-block" id="HTTPJSONRESTClient.put"><a class="viewcode-back" href="../../hplefthandclient.html#hplefthandclient.http.HTTPJSONRESTClient.put">[docs]</a> <span class="k">def</span> <span class="nf">put</span><span class="p">(</span><span class="bp">self</span><span class="p">,</span> <span class="n">url</span><span class="p">,</span> <span class="o">**</span><span class="n">kwargs</span><span class="p">):</span>
<span class="sd">&quot;&quot;&quot;</span>
<span class="sd"> Make an HTTP PUT request to the server.</span>
<span class="sd"> .. code-block:: python</span>
<span class="sd"> #example call</span>
<span class="sd"> try {</span>
<span class="sd"> info = {&#39;name&#39;: &#39;something&#39;}</span>
<span class="sd"> headers, body = http.put(&#39;/volumes&#39;, body=info)</span>
<span class="sd"> } except exceptions.HTTPUnauthorized as ex:</span>
<span class="sd"> print &quot;Not logged in&quot;</span>
<span class="sd"> }</span>
<span class="sd"> :param url: The relative url from the LH api_url</span>
<span class="sd"> :type url: str</span>
<span class="sd"> :returns: headers - dict of HTTP Response headers</span>
<span class="sd"> :returns: body - the body of the response. If the body was JSON,</span>
<span class="sd"> it will be an object</span>
<span class="sd"> &quot;&quot;&quot;</span>
<span class="k">return</span> <span class="bp">self</span><span class="o">.</span><span class="n">_cs_request</span><span class="p">(</span><span class="n">url</span><span class="p">,</span> <span class="s">&#39;PUT&#39;</span><span class="p">,</span> <span class="o">**</span><span class="n">kwargs</span><span class="p">)</span>
</div>
<div class="viewcode-block" id="HTTPJSONRESTClient.delete"><a class="viewcode-back" href="../../hplefthandclient.html#hplefthandclient.http.HTTPJSONRESTClient.delete">[docs]</a> <span class="k">def</span> <span class="nf">delete</span><span class="p">(</span><span class="bp">self</span><span class="p">,</span> <span class="n">url</span><span class="p">,</span> <span class="o">**</span><span class="n">kwargs</span><span class="p">):</span>
<span class="sd">&quot;&quot;&quot;</span>
<span class="sd"> Make an HTTP DELETE request to the server.</span>
<span class="sd"> .. code-block:: python</span>
<span class="sd"> #example call</span>
<span class="sd"> try {</span>
<span class="sd"> headers, body = http.delete(&#39;/volumes/%s&#39; % name)</span>
<span class="sd"> } except exceptions.HTTPUnauthorized as ex:</span>
<span class="sd"> print &quot;Not logged in&quot;</span>
<span class="sd"> }</span>
<span class="sd"> :param url: The relative url from the LH api_url</span>
<span class="sd"> :type url: str</span>
<span class="sd"> :returns: headers - dict of HTTP Response headers</span>
<span class="sd"> :returns: body - the body of the response. If the body was JSON,</span>
<span class="sd"> it will be an object</span>
<span class="sd"> &quot;&quot;&quot;</span>
<span class="k">return</span> <span class="bp">self</span><span class="o">.</span><span class="n">_cs_request</span><span class="p">(</span><span class="n">url</span><span class="p">,</span> <span class="s">&#39;DELETE&#39;</span><span class="p">,</span> <span class="o">**</span><span class="n">kwargs</span><span class="p">)</span></div></div>
</pre></div>
</div>
</div>
</div>
<div class="sphinxsidebar">
<div class="sphinxsidebarwrapper">
<div id="searchbox" style="display: none">
<h3>Quick search</h3>
<form class="search" action="../../search.html" method="get">
<input type="text" name="q" />
<input type="submit" value="Go" />
<input type="hidden" name="check_keywords" value="yes" />
<input type="hidden" name="area" value="default" />
</form>
<p class="searchtip" style="font-size: 90%">
Enter search terms or a module, class or function name.
</p>
</div>
<script type="text/javascript">$('#searchbox').show(0);</script>
</div>
</div>
<div class="clearer"></div>
</div>
<div class="related">
<h3>Navigation</h3>
<ul>
<li class="right" style="margin-right: 10px">
<a href="../../genindex.html" title="General Index"
>index</a></li>
<li class="right" >
<a href="../../py-modindex.html" title="Python Module Index"
>modules</a> |</li>
<li><a href="../../index.html">HP LeftHand REST Client 1.0.0 documentation</a> &raquo;</li>
<li><a href="../index.html" >Module code</a> &raquo;</li>
<li><a href="../hplefthandclient.html" >hplefthandclient</a> &raquo;</li>
</ul>
</div>
<div class="footer">
&copy; Copyright 2013 Hewlett Packard Development Company, L.P..
Created using <a href="http://sphinx.pocoo.org/">Sphinx</a> 1.1.3.
</div>
</body>
</html>

View File

@ -1,96 +0,0 @@
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN"
"http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
<title>Overview: module code &mdash; HP LeftHand REST Client 1.0.0 documentation</title>
<link rel="stylesheet" href="../_static/default.css" type="text/css" />
<link rel="stylesheet" href="../_static/pygments.css" type="text/css" />
<script type="text/javascript">
var DOCUMENTATION_OPTIONS = {
URL_ROOT: '../',
VERSION: '1.0.0',
COLLAPSE_INDEX: false,
FILE_SUFFIX: '.html',
HAS_SOURCE: true
};
</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>
<link rel="top" title="HP LeftHand REST Client 1.0.0 documentation" href="../index.html" />
</head>
<body>
<div class="related">
<h3>Navigation</h3>
<ul>
<li class="right" style="margin-right: 10px">
<a href="../genindex.html" title="General Index"
accesskey="I">index</a></li>
<li class="right" >
<a href="../py-modindex.html" title="Python Module Index"
>modules</a> |</li>
<li><a href="../index.html">HP LeftHand REST Client 1.0.0 documentation</a> &raquo;</li>
</ul>
</div>
<div class="document">
<div class="documentwrapper">
<div class="bodywrapper">
<div class="body">
<h1>All modules for which code is available</h1>
<ul><li><a href="hplefthandclient.html">hplefthandclient</a></li>
<ul><li><a href="hplefthandclient/__init__.html">hplefthandclient.__init__</a></li>
<li><a href="hplefthandclient/client.html">hplefthandclient.client</a></li>
<li><a href="hplefthandclient/exceptions.html">hplefthandclient.exceptions</a></li>
<li><a href="hplefthandclient/http.html">hplefthandclient.http</a></li>
</ul></ul>
</div>
</div>
</div>
<div class="sphinxsidebar">
<div class="sphinxsidebarwrapper">
<div id="searchbox" style="display: none">
<h3>Quick search</h3>
<form class="search" action="../search.html" method="get">
<input type="text" name="q" />
<input type="submit" value="Go" />
<input type="hidden" name="check_keywords" value="yes" />
<input type="hidden" name="area" value="default" />
</form>
<p class="searchtip" style="font-size: 90%">
Enter search terms or a module, class or function name.
</p>
</div>
<script type="text/javascript">$('#searchbox').show(0);</script>
</div>
</div>
<div class="clearer"></div>
</div>
<div class="related">
<h3>Navigation</h3>
<ul>
<li class="right" style="margin-right: 10px">
<a href="../genindex.html" title="General Index"
>index</a></li>
<li class="right" >
<a href="../py-modindex.html" title="Python Module Index"
>modules</a> |</li>
<li><a href="../index.html">HP LeftHand REST Client 1.0.0 documentation</a> &raquo;</li>
</ul>
</div>
<div class="footer">
&copy; Copyright 2013 Hewlett Packard Development Company, L.P..
Created using <a href="http://sphinx.pocoo.org/">Sphinx</a> 1.1.3.
</div>
</body>
</html>

View File

@ -1,34 +0,0 @@
:mod:`client` -- HPLeftHandClient
=================================
.. automodule:: hplefthandclient.client
:synopsis: HP LeftHand REST Web client
.. autoclass:: hplefthandclient.client.HPLeftHandClient(api_url)
.. automethod:: debug_rest
.. automethod:: login
.. automethod:: logout
.. automethod:: getClusters
.. automethod:: getCluster
.. automethod:: getClusterByName
.. automethod:: getServers
.. automethod:: getServer
.. automethod:: getServerByName
.. automethod:: createServer
.. automethod:: deleteServer
.. automethod:: getSnapshots
.. automethod:: getSnapshot
.. automethod:: getSnapshotByName
.. automethod:: createSnapshot
.. automethod:: deleteSnapshot
.. automethod:: cloneSnapshot
.. automethod:: getVolumes
.. automethod:: getVolume
.. automethod:: getVolumeByName
.. automethod:: createVolume
.. automethod:: deleteVolume
.. automethod:: modifyVolume
.. automethod:: cloneVolume
.. automethod:: addServerAccess
.. automethod:: removeServerAccess

View File

@ -1,8 +0,0 @@
:mod:`exceptions` -- HTTP Exceptions
====================================================
.. automodule:: hplefthandclient.exceptions
:synopsis: HTTP Exceptions
.. autoclass:: hplefthandclient.exceptions.HTTPNotFound
.. autoclass:: hplefthandclient.exceptions.HTTPBadRequest

View File

@ -1,24 +0,0 @@
:mod:`http` -- HTTP REST Base Class
====================================================
.. automodule:: hplefthandclient.http
:synopsis: HTTP REST Base Class
.. autoclass::hplefthandclient.http(api_url, [insecure=False[,http_log_debug=False]])
.. automethod:: authenticate
.. automethod:: unauthenticate
.. describe:: c[db_name] || c.db_name
Get the `db_name` :class:`~pymongo.database.Database` on :class:`Connection` `c`.
Raises :class:`~pymongo.errors.InvalidName` if an invalid database name is used.
.. autoattribute:: api_url
.. autoattribute:: http_log_debug
.. automethod:: request
.. automethod:: get
.. automethod:: post
.. automethod:: put
.. automethod:: delete

View File

@ -1,18 +0,0 @@
:mod:`client` -- HPLeftHandClient
=================================
.. automodule:: hplefthandclient
:synopsis: HP LeftHand REST Web client
.. autodata:: version
Sub-modules:
.. toctree::
:maxdepth: 2
client
exceptions
http

View File

@ -1,11 +0,0 @@
API Documentation
=================
The HP LeftHand Client package contains a :mod:`hplefthandclient` class which extends a more
generic :mod:`http` class for doing REST calls
.. toctree::
:maxdepth: 2
hplefthandclient/index

View File

@ -1,9 +0,0 @@
Changelog
=========
Changes in Version 1.0.0
------------------------
- First implementation of the REST API Client

View File

@ -1,37 +0,0 @@
hplefthandclient Package
========================
:mod:`hplefthandclient` Package
-------------------------------
.. automodule:: hplefthandclient.__init__
:members:
:undoc-members:
:show-inheritance:
:mod:`client` Module
--------------------
.. automodule:: hplefthandclient.client
:members:
:undoc-members:
:show-inheritance:
:mod:`exceptions` Module
------------------------
.. automodule:: hplefthandclient.exceptions
:members:
:undoc-members:
:show-inheritance:
:mod:`http` Module
------------------
.. automodule:: hplefthandclient.http
:members:
:undoc-members:
:show-inheritance:

View File

@ -1,65 +0,0 @@
HPLeftHandClient |release| Documentation
========================================
Overview
--------
**HPLeftHandClient** is a Python package containing a class that uses
HTTP REST calls to talk with an HP LeftHand/StoreVirtual drive array.
distribution containing tools for working with
`LeftHand/StoreVirtual Storage Arrays <http://www.hp.com/go/storevirtual>`_.
. This documentation attempts to explain
everything you need to know to use **HPLeftHandClient**.
:doc:`installation`
Instructions on how to get the distribution.
:doc:`tutorial`
Start here for a quick overview.
:doc:`api/index`
The complete API documentation, organized by module.
Issues
------
.. todo:: create the open source website
.. todo:: create the bug tracker
All issues should be reported (and can be tracked / voted for /
commented on) at the main `github issues
<https://github.com/WaltHP/python-hplefthandclient/issues>`_, in the "LeftHand Python Driver"
project.
Changes
-------
See the :doc:`changelog` for a full list of changes to HPLeftHandClient.
About This Documentation
------------------------
This documentation is generated using the `Sphinx
<http://sphinx.pocoo.org/>`_ documentation generator. The source files
for the documentation are located in the *doc/* directory of the
**HPLeftHandClient** distribution. To generate the docs locally run the
following command from the root directory of the **HPLeftHandClient**
.. code-block:: bash
$ python setup.py doc
.. toctree::
:hidden:
installation
tutorial
changelog
api/index
Indices and tables
==================
* :ref:`genindex`
* :ref:`modindex`
* :ref:`search`

View File

@ -1,43 +0,0 @@
Installing / Upgrading
======================
.. highlight:: bash
**HPLeftHandClient** is in the `Python Package Index
<http://pypi.python.org/pypi/hplefthandclient/>`_.
Installing with pip
-------------------
We prefer `pip <http://pypi.python.org/pypi/pip>`_
to install hplefthandclient on platforms other than Windows::
$ pip install hplefthandclient
To upgrade using pip::
$ pip install --upgrade hplefthandclient
Installing with easy_install
----------------------------
If you must install hplefthandclient using
`setuptools <http://pypi.python.org/pypi/setuptools>`_ do::
$ easy_install hplefthandclient
To upgrade do::
$ easy_install -U hplefthandclient
Installing from source
----------------------
If you'd rather install directly from the source (i.e. to stay on the
bleeding edge), install the C extension dependencies then check out the
latest source from github and install the driver from the resulting tree::
$ git clone git://github.com/WaltHP/python-3parclient.git
$ cd pyton-hplefthandclient/
$ python setup.py install

View File

@ -1,68 +0,0 @@
Tutorial
========
This tutorial is intended as an introduction to working with
**HPLeftHandClient**.
Prerequisites
-------------
Before we start, make sure that you have the **HPLeftHandClient** distribution
:doc:`installed <installation>`. In the Python shell, the following
should run without raising an exception:
.. code-block:: bash
>>> import hplefthandclient
This tutorial also assumes that a LeftHand array is up and running and the
LeftHand OS is running.
Create the Client and login
---------------------------
The first step when working with **HPLeftHandClient** is to create a
:class:`~hplefthandclient.client.HPLeftHandClient` to the LeftHand drive array
and logging in to create the session. You must :meth:`~hplefthandclient.client.HPLeftHandClient.login` prior to calling the other APIs to do work on the LeftHand.
Doing so is easy:
.. code-block:: python
from hplefthandclient import client, exceptions
#this creates the client object and sets the url to the
#LeftHand server with IP 10.10.10.10 on port 8008.
cl = client.HPLeftHandClient("https://10.10.10.10:8008/api/v1")
try:
cl.login(username, password)
print "Login worked!"
except exceptions.HTTPUnauthorized as ex:
print "Login failed."
When you are done with the the client, it's a good idea to logout from
the LeftHand so there isn't a stale session sitting around.
.. code-block:: python
cl.logout()
print "logout worked"
Getting a list of Volumes
-------------------------
After you have logged in, you can start making calls to the LeftHand APIs.
A simple example is getting a list of existing volumes on the array with
a call to :meth:`~hplefthandclient.client.HPLeftHandClient.getVolumes`.
.. code-block:: python
import pprint
try:
volumes = cl.getVolumes()
pprint.pprint(volumes)
except exceptions.HTTPUnauthorized as ex:
print "You must login first"
except Exception as ex:
#something unexpected happened
print ex
.. note:: volumes is an array of volumes in the above call

Binary file not shown.

Before

Width:  |  Height:  |  Size: 673 B

View File

@ -1,540 +0,0 @@
/*
* basic.css
* ~~~~~~~~~
*
* Sphinx stylesheet -- basic theme.
*
* :copyright: Copyright 2007-2011 by the Sphinx team, see AUTHORS.
* :license: BSD, see LICENSE for details.
*
*/
/* -- main layout ----------------------------------------------------------- */
div.clearer {
clear: both;
}
/* -- relbar ---------------------------------------------------------------- */
div.related {
width: 100%;
font-size: 90%;
}
div.related h3 {
display: none;
}
div.related ul {
margin: 0;
padding: 0 0 0 10px;
list-style: none;
}
div.related li {
display: inline;
}
div.related li.right {
float: right;
margin-right: 5px;
}
/* -- sidebar --------------------------------------------------------------- */
div.sphinxsidebarwrapper {
padding: 10px 5px 0 10px;
}
div.sphinxsidebar {
float: left;
width: 230px;
margin-left: -100%;
font-size: 90%;
}
div.sphinxsidebar ul {
list-style: none;
}
div.sphinxsidebar ul ul,
div.sphinxsidebar ul.want-points {
margin-left: 20px;
list-style: square;
}
div.sphinxsidebar ul ul {
margin-top: 0;
margin-bottom: 0;
}
div.sphinxsidebar form {
margin-top: 10px;
}
div.sphinxsidebar input {
border: 1px solid #98dbcc;
font-family: sans-serif;
font-size: 1em;
}
div.sphinxsidebar #searchbox input[type="text"] {
width: 170px;
}
div.sphinxsidebar #searchbox input[type="submit"] {
width: 30px;
}
img {
border: 0;
}
/* -- search page ----------------------------------------------------------- */
ul.search {
margin: 10px 0 0 20px;
padding: 0;
}
ul.search li {
padding: 5px 0 5px 20px;
background-image: url(file.png);
background-repeat: no-repeat;
background-position: 0 7px;
}
ul.search li a {
font-weight: bold;
}
ul.search li div.context {
color: #888;
margin: 2px 0 0 30px;
text-align: left;
}
ul.keywordmatches li.goodmatch a {
font-weight: bold;
}
/* -- index page ------------------------------------------------------------ */
table.contentstable {
width: 90%;
}
table.contentstable p.biglink {
line-height: 150%;
}
a.biglink {
font-size: 1.3em;
}
span.linkdescr {
font-style: italic;
padding-top: 5px;
font-size: 90%;
}
/* -- general index --------------------------------------------------------- */
table.indextable {
width: 100%;
}
table.indextable td {
text-align: left;
vertical-align: top;
}
table.indextable dl, table.indextable dd {
margin-top: 0;
margin-bottom: 0;
}
table.indextable tr.pcap {
height: 10px;
}
table.indextable tr.cap {
margin-top: 10px;
background-color: #f2f2f2;
}
img.toggler {
margin-right: 3px;
margin-top: 3px;
cursor: pointer;
}
div.modindex-jumpbox {
border-top: 1px solid #ddd;
border-bottom: 1px solid #ddd;
margin: 1em 0 1em 0;
padding: 0.4em;
}
div.genindex-jumpbox {
border-top: 1px solid #ddd;
border-bottom: 1px solid #ddd;
margin: 1em 0 1em 0;
padding: 0.4em;
}
/* -- general body styles --------------------------------------------------- */
a.headerlink {
visibility: hidden;
}
h1:hover > a.headerlink,
h2:hover > a.headerlink,
h3:hover > a.headerlink,
h4:hover > a.headerlink,
h5:hover > a.headerlink,
h6:hover > a.headerlink,
dt:hover > a.headerlink {
visibility: visible;
}
div.body p.caption {
text-align: inherit;
}
div.body td {
text-align: left;
}
.field-list ul {
padding-left: 1em;
}
.first {
margin-top: 0 !important;
}
p.rubric {
margin-top: 30px;
font-weight: bold;
}
img.align-left, .figure.align-left, object.align-left {
clear: left;
float: left;
margin-right: 1em;
}
img.align-right, .figure.align-right, object.align-right {
clear: right;
float: right;
margin-left: 1em;
}
img.align-center, .figure.align-center, object.align-center {
display: block;
margin-left: auto;
margin-right: auto;
}
.align-left {
text-align: left;
}
.align-center {
text-align: center;
}
.align-right {
text-align: right;
}
/* -- sidebars -------------------------------------------------------------- */
div.sidebar {
margin: 0 0 0.5em 1em;
border: 1px solid #ddb;
padding: 7px 7px 0 7px;
background-color: #ffe;
width: 40%;
float: right;
}
p.sidebar-title {
font-weight: bold;
}
/* -- topics ---------------------------------------------------------------- */
div.topic {
border: 1px solid #ccc;
padding: 7px 7px 0 7px;
margin: 10px 0 10px 0;
}
p.topic-title {
font-size: 1.1em;
font-weight: bold;
margin-top: 10px;
}
/* -- admonitions ----------------------------------------------------------- */
div.admonition {
margin-top: 10px;
margin-bottom: 10px;
padding: 7px;
}
div.admonition dt {
font-weight: bold;
}
div.admonition dl {
margin-bottom: 0;
}
p.admonition-title {
margin: 0px 10px 5px 0px;
font-weight: bold;
}
div.body p.centered {
text-align: center;
margin-top: 25px;
}
/* -- tables ---------------------------------------------------------------- */
table.docutils {
border: 0;
border-collapse: collapse;
}
table.docutils td, table.docutils th {
padding: 1px 8px 1px 5px;
border-top: 0;
border-left: 0;
border-right: 0;
border-bottom: 1px solid #aaa;
}
table.field-list td, table.field-list th {
border: 0 !important;
}
table.footnote td, table.footnote th {
border: 0 !important;
}
th {
text-align: left;
padding-right: 5px;
}
table.citation {
border-left: solid 1px gray;
margin-left: 1px;
}
table.citation td {
border-bottom: none;
}
/* -- other body styles ----------------------------------------------------- */
ol.arabic {
list-style: decimal;
}
ol.loweralpha {
list-style: lower-alpha;
}
ol.upperalpha {
list-style: upper-alpha;
}
ol.lowerroman {
list-style: lower-roman;
}
ol.upperroman {
list-style: upper-roman;
}
dl {
margin-bottom: 15px;
}
dd p {
margin-top: 0px;
}
dd ul, dd table {
margin-bottom: 10px;
}
dd {
margin-top: 3px;
margin-bottom: 10px;
margin-left: 30px;
}
dt:target, .highlighted {
background-color: #fbe54e;
}
dl.glossary dt {
font-weight: bold;
font-size: 1.1em;
}
.field-list ul {
margin: 0;
padding-left: 1em;
}
.field-list p {
margin: 0;
}
.refcount {
color: #060;
}
.optional {
font-size: 1.3em;
}
.versionmodified {
font-style: italic;
}
.system-message {
background-color: #fda;
padding: 5px;
border: 3px solid red;
}
.footnote:target {
background-color: #ffa;
}
.line-block {
display: block;
margin-top: 1em;
margin-bottom: 1em;
}
.line-block .line-block {
margin-top: 0;
margin-bottom: 0;
margin-left: 1.5em;
}
.guilabel, .menuselection {
font-family: sans-serif;
}
.accelerator {
text-decoration: underline;
}
.classifier {
font-style: oblique;
}
abbr, acronym {
border-bottom: dotted 1px;
cursor: help;
}
/* -- code displays --------------------------------------------------------- */
pre {
overflow: auto;
overflow-y: hidden; /* fixes display issues on Chrome browsers */
}
td.linenos pre {
padding: 5px 0px;
border: 0;
background-color: transparent;
color: #aaa;
}
table.highlighttable {
margin-left: 0.5em;
}
table.highlighttable td {
padding: 0 0.5em 0 0.5em;
}
tt.descname {
background-color: transparent;
font-weight: bold;
font-size: 1.2em;
}
tt.descclassname {
background-color: transparent;
}
tt.xref, a tt {
background-color: transparent;
font-weight: bold;
}
h1 tt, h2 tt, h3 tt, h4 tt, h5 tt, h6 tt {
background-color: transparent;
}
.viewcode-link {
float: right;
}
.viewcode-back {
float: right;
font-family: sans-serif;
}
div.viewcode-block:target {
margin: -1px -10px;
padding: 0 10px;
}
/* -- math display ---------------------------------------------------------- */
img.math {
vertical-align: middle;
}
div.body div.math p {
text-align: center;
}
span.eqno {
float: right;
}
/* -- printout stylesheet --------------------------------------------------- */
@media print {
div.document,
div.documentwrapper,
div.bodywrapper {
margin: 0 !important;
width: 100%;
}
div.sphinxsidebar,
div.related,
div.footer,
#top-link {
display: none;
}
}

Binary file not shown.

Before

Width:  |  Height:  |  Size: 3.4 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 3.5 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 3.4 KiB

View File

@ -1,256 +0,0 @@
/*
* default.css_t
* ~~~~~~~~~~~~~
*
* Sphinx stylesheet -- default theme.
*
* :copyright: Copyright 2007-2011 by the Sphinx team, see AUTHORS.
* :license: BSD, see LICENSE for details.
*
*/
@import url("basic.css");
/* -- page layout ----------------------------------------------------------- */
body {
font-family: sans-serif;
font-size: 100%;
background-color: #11303d;
color: #000;
margin: 0;
padding: 0;
}
div.document {
background-color: #1c4e63;
}
div.documentwrapper {
float: left;
width: 100%;
}
div.bodywrapper {
margin: 0 0 0 230px;
}
div.body {
background-color: #ffffff;
color: #000000;
padding: 0 20px 30px 20px;
}
div.footer {
color: #ffffff;
width: 100%;
padding: 9px 0 9px 0;
text-align: center;
font-size: 75%;
}
div.footer a {
color: #ffffff;
text-decoration: underline;
}
div.related {
background-color: #133f52;
line-height: 30px;
color: #ffffff;
}
div.related a {
color: #ffffff;
}
div.sphinxsidebar {
}
div.sphinxsidebar h3 {
font-family: 'Trebuchet MS', sans-serif;
color: #ffffff;
font-size: 1.4em;
font-weight: normal;
margin: 0;
padding: 0;
}
div.sphinxsidebar h3 a {
color: #ffffff;
}
div.sphinxsidebar h4 {
font-family: 'Trebuchet MS', sans-serif;
color: #ffffff;
font-size: 1.3em;
font-weight: normal;
margin: 5px 0 0 0;
padding: 0;
}
div.sphinxsidebar p {
color: #ffffff;
}
div.sphinxsidebar p.topless {
margin: 5px 10px 10px 10px;
}
div.sphinxsidebar ul {
margin: 10px;
padding: 0;
color: #ffffff;
}
div.sphinxsidebar a {
color: #98dbcc;
}
div.sphinxsidebar input {
border: 1px solid #98dbcc;
font-family: sans-serif;
font-size: 1em;
}
/* -- hyperlink styles ------------------------------------------------------ */
a {
color: #355f7c;
text-decoration: none;
}
a:visited {
color: #355f7c;
text-decoration: none;
}
a:hover {
text-decoration: underline;
}
/* -- body styles ----------------------------------------------------------- */
div.body h1,
div.body h2,
div.body h3,
div.body h4,
div.body h5,
div.body h6 {
font-family: 'Trebuchet MS', sans-serif;
background-color: #f2f2f2;
font-weight: normal;
color: #20435c;
border-bottom: 1px solid #ccc;
margin: 20px -20px 10px -20px;
padding: 3px 0 3px 10px;
}
div.body h1 { margin-top: 0; font-size: 200%; }
div.body h2 { font-size: 160%; }
div.body h3 { font-size: 140%; }
div.body h4 { font-size: 120%; }
div.body h5 { font-size: 110%; }
div.body h6 { font-size: 100%; }
a.headerlink {
color: #c60f0f;
font-size: 0.8em;
padding: 0 4px 0 4px;
text-decoration: none;
}
a.headerlink:hover {
background-color: #c60f0f;
color: white;
}
div.body p, div.body dd, div.body li {
text-align: justify;
line-height: 130%;
}
div.admonition p.admonition-title + p {
display: inline;
}
div.admonition p {
margin-bottom: 5px;
}
div.admonition pre {
margin-bottom: 5px;
}
div.admonition ul, div.admonition ol {
margin-bottom: 5px;
}
div.note {
background-color: #eee;
border: 1px solid #ccc;
}
div.seealso {
background-color: #ffc;
border: 1px solid #ff6;
}
div.topic {
background-color: #eee;
}
div.warning {
background-color: #ffe4e4;
border: 1px solid #f66;
}
p.admonition-title {
display: inline;
}
p.admonition-title:after {
content: ":";
}
pre {
padding: 5px;
background-color: #eeffcc;
color: #333333;
line-height: 120%;
border: 1px solid #ac9;
border-left: none;
border-right: none;
}
tt {
background-color: #ecf0f3;
padding: 0 1px 0 1px;
font-size: 0.95em;
}
th {
background-color: #ede;
}
.warning tt {
background: #efc2c2;
}
.note tt {
background: #d6d6d6;
}
.viewcode-back {
font-family: sans-serif;
}
div.viewcode-block:target {
background-color: #f4debf;
border-top: 1px solid #ac9;
border-bottom: 1px solid #ac9;
}

View File

@ -1,247 +0,0 @@
/*
* doctools.js
* ~~~~~~~~~~~
*
* Sphinx JavaScript utilities for all documentation.
*
* :copyright: Copyright 2007-2011 by the Sphinx team, see AUTHORS.
* :license: BSD, see LICENSE for details.
*
*/
/**
* select a different prefix for underscore
*/
$u = _.noConflict();
/**
* make the code below compatible with browsers without
* an installed firebug like debugger
if (!window.console || !console.firebug) {
var names = ["log", "debug", "info", "warn", "error", "assert", "dir",
"dirxml", "group", "groupEnd", "time", "timeEnd", "count", "trace",
"profile", "profileEnd"];
window.console = {};
for (var i = 0; i < names.length; ++i)
window.console[names[i]] = function() {};
}
*/
/**
* small helper function to urldecode strings
*/
jQuery.urldecode = function(x) {
return decodeURIComponent(x).replace(/\+/g, ' ');
}
/**
* small helper function to urlencode strings
*/
jQuery.urlencode = encodeURIComponent;
/**
* This function returns the parsed url parameters of the
* current request. Multiple values per key are supported,
* it will always return arrays of strings for the value parts.
*/
jQuery.getQueryParameters = function(s) {
if (typeof s == 'undefined')
s = document.location.search;
var parts = s.substr(s.indexOf('?') + 1).split('&');
var result = {};
for (var i = 0; i < parts.length; i++) {
var tmp = parts[i].split('=', 2);
var key = jQuery.urldecode(tmp[0]);
var value = jQuery.urldecode(tmp[1]);
if (key in result)
result[key].push(value);
else
result[key] = [value];
}
return result;
};
/**
* small function to check if an array contains
* a given item.
*/
jQuery.contains = function(arr, item) {
for (var i = 0; i < arr.length; i++) {
if (arr[i] == item)
return true;
}
return false;
};
/**
* highlight a given string on a jquery object by wrapping it in
* span elements with the given class name.
*/
jQuery.fn.highlightText = function(text, className) {
function highlight(node) {
if (node.nodeType == 3) {
var val = node.nodeValue;
var pos = val.toLowerCase().indexOf(text);
if (pos >= 0 && !jQuery(node.parentNode).hasClass(className)) {
var span = document.createElement("span");
span.className = className;
span.appendChild(document.createTextNode(val.substr(pos, text.length)));
node.parentNode.insertBefore(span, node.parentNode.insertBefore(
document.createTextNode(val.substr(pos + text.length)),
node.nextSibling));
node.nodeValue = val.substr(0, pos);
}
}
else if (!jQuery(node).is("button, select, textarea")) {
jQuery.each(node.childNodes, function() {
highlight(this);
});
}
}
return this.each(function() {
highlight(this);
});
};
/**
* Small JavaScript module for the documentation.
*/
var Documentation = {
init : function() {
this.fixFirefoxAnchorBug();
this.highlightSearchWords();
this.initIndexTable();
},
/**
* i18n support
*/
TRANSLATIONS : {},
PLURAL_EXPR : function(n) { return n == 1 ? 0 : 1; },
LOCALE : 'unknown',
// gettext and ngettext don't access this so that the functions
// can safely bound to a different name (_ = Documentation.gettext)
gettext : function(string) {
var translated = Documentation.TRANSLATIONS[string];
if (typeof translated == 'undefined')
return string;
return (typeof translated == 'string') ? translated : translated[0];
},
ngettext : function(singular, plural, n) {
var translated = Documentation.TRANSLATIONS[singular];
if (typeof translated == 'undefined')
return (n == 1) ? singular : plural;
return translated[Documentation.PLURALEXPR(n)];
},
addTranslations : function(catalog) {
for (var key in catalog.messages)
this.TRANSLATIONS[key] = catalog.messages[key];
this.PLURAL_EXPR = new Function('n', 'return +(' + catalog.plural_expr + ')');
this.LOCALE = catalog.locale;
},
/**
* add context elements like header anchor links
*/
addContextElements : function() {
$('div[id] > :header:first').each(function() {
$('<a class="headerlink">\u00B6</a>').
attr('href', '#' + this.id).
attr('title', _('Permalink to this headline')).
appendTo(this);
});
$('dt[id]').each(function() {
$('<a class="headerlink">\u00B6</a>').
attr('href', '#' + this.id).
attr('title', _('Permalink to this definition')).
appendTo(this);
});
},
/**
* workaround a firefox stupidity
*/
fixFirefoxAnchorBug : function() {
if (document.location.hash && $.browser.mozilla)
window.setTimeout(function() {
document.location.href += '';
}, 10);
},
/**
* highlight the search words provided in the url in the text
*/
highlightSearchWords : function() {
var params = $.getQueryParameters();
var terms = (params.highlight) ? params.highlight[0].split(/\s+/) : [];
if (terms.length) {
var body = $('div.body');
window.setTimeout(function() {
$.each(terms, function() {
body.highlightText(this.toLowerCase(), 'highlighted');
});
}, 10);
$('<p class="highlight-link"><a href="javascript:Documentation.' +
'hideSearchWords()">' + _('Hide Search Matches') + '</a></p>')
.appendTo($('#searchbox'));
}
},
/**
* init the domain index toggle buttons
*/
initIndexTable : function() {
var togglers = $('img.toggler').click(function() {
var src = $(this).attr('src');
var idnum = $(this).attr('id').substr(7);
$('tr.cg-' + idnum).toggle();
if (src.substr(-9) == 'minus.png')
$(this).attr('src', src.substr(0, src.length-9) + 'plus.png');
else
$(this).attr('src', src.substr(0, src.length-8) + 'minus.png');
}).css('display', '');
if (DOCUMENTATION_OPTIONS.COLLAPSE_INDEX) {
togglers.click();
}
},
/**
* helper function to hide the search marks again
*/
hideSearchWords : function() {
$('#searchbox .highlight-link').fadeOut(300);
$('span.highlighted').removeClass('highlighted');
},
/**
* make the url absolute
*/
makeURL : function(relativeURL) {
return DOCUMENTATION_OPTIONS.URL_ROOT + '/' + relativeURL;
},
/**
* get the current relative url
*/
getCurrentURL : function() {
var path = document.location.pathname;
var parts = path.split(/\//);
$.each(DOCUMENTATION_OPTIONS.URL_ROOT.split(/\//), function() {
if (this == '..')
parts.pop();
});
var url = parts.join('/');
return path.substring(url.lastIndexOf('/') + 1, path.length - 1);
}
};
// quick alias for translations
_ = Documentation.gettext;
$(document).ready(function() {
Documentation.init();
});

Binary file not shown.

Before

Width:  |  Height:  |  Size: 368 B

Binary file not shown.

Before

Width:  |  Height:  |  Size: 363 B

View File

Binary file not shown.

Before

Width:  |  Height:  |  Size: 392 B

File diff suppressed because it is too large Load Diff

Binary file not shown.

Before

Width:  |  Height:  |  Size: 199 B

Binary file not shown.

Before

Width:  |  Height:  |  Size: 199 B

View File

@ -1,62 +0,0 @@
.highlight .hll { background-color: #ffffcc }
.highlight { background: #eeffcc; }
.highlight .c { color: #408090; font-style: italic } /* Comment */
.highlight .err { border: 1px solid #FF0000 } /* Error */
.highlight .k { color: #007020; font-weight: bold } /* Keyword */
.highlight .o { color: #666666 } /* Operator */
.highlight .cm { color: #408090; font-style: italic } /* Comment.Multiline */
.highlight .cp { color: #007020 } /* Comment.Preproc */
.highlight .c1 { color: #408090; font-style: italic } /* Comment.Single */
.highlight .cs { color: #408090; background-color: #fff0f0 } /* Comment.Special */
.highlight .gd { color: #A00000 } /* Generic.Deleted */
.highlight .ge { font-style: italic } /* Generic.Emph */
.highlight .gr { color: #FF0000 } /* Generic.Error */
.highlight .gh { color: #000080; font-weight: bold } /* Generic.Heading */
.highlight .gi { color: #00A000 } /* Generic.Inserted */
.highlight .go { color: #303030 } /* Generic.Output */
.highlight .gp { color: #c65d09; font-weight: bold } /* Generic.Prompt */
.highlight .gs { font-weight: bold } /* Generic.Strong */
.highlight .gu { color: #800080; font-weight: bold } /* Generic.Subheading */
.highlight .gt { color: #0040D0 } /* Generic.Traceback */
.highlight .kc { color: #007020; font-weight: bold } /* Keyword.Constant */
.highlight .kd { color: #007020; font-weight: bold } /* Keyword.Declaration */
.highlight .kn { color: #007020; font-weight: bold } /* Keyword.Namespace */
.highlight .kp { color: #007020 } /* Keyword.Pseudo */
.highlight .kr { color: #007020; font-weight: bold } /* Keyword.Reserved */
.highlight .kt { color: #902000 } /* Keyword.Type */
.highlight .m { color: #208050 } /* Literal.Number */
.highlight .s { color: #4070a0 } /* Literal.String */
.highlight .na { color: #4070a0 } /* Name.Attribute */
.highlight .nb { color: #007020 } /* Name.Builtin */
.highlight .nc { color: #0e84b5; font-weight: bold } /* Name.Class */
.highlight .no { color: #60add5 } /* Name.Constant */
.highlight .nd { color: #555555; font-weight: bold } /* Name.Decorator */
.highlight .ni { color: #d55537; font-weight: bold } /* Name.Entity */
.highlight .ne { color: #007020 } /* Name.Exception */
.highlight .nf { color: #06287e } /* Name.Function */
.highlight .nl { color: #002070; font-weight: bold } /* Name.Label */
.highlight .nn { color: #0e84b5; font-weight: bold } /* Name.Namespace */
.highlight .nt { color: #062873; font-weight: bold } /* Name.Tag */
.highlight .nv { color: #bb60d5 } /* Name.Variable */
.highlight .ow { color: #007020; font-weight: bold } /* Operator.Word */
.highlight .w { color: #bbbbbb } /* Text.Whitespace */
.highlight .mf { color: #208050 } /* Literal.Number.Float */
.highlight .mh { color: #208050 } /* Literal.Number.Hex */
.highlight .mi { color: #208050 } /* Literal.Number.Integer */
.highlight .mo { color: #208050 } /* Literal.Number.Oct */
.highlight .sb { color: #4070a0 } /* Literal.String.Backtick */
.highlight .sc { color: #4070a0 } /* Literal.String.Char */
.highlight .sd { color: #4070a0; font-style: italic } /* Literal.String.Doc */
.highlight .s2 { color: #4070a0 } /* Literal.String.Double */
.highlight .se { color: #4070a0; font-weight: bold } /* Literal.String.Escape */
.highlight .sh { color: #4070a0 } /* Literal.String.Heredoc */
.highlight .si { color: #70a0d0; font-style: italic } /* Literal.String.Interpol */
.highlight .sx { color: #c65d09 } /* Literal.String.Other */
.highlight .sr { color: #235388 } /* Literal.String.Regex */
.highlight .s1 { color: #4070a0 } /* Literal.String.Single */
.highlight .ss { color: #517918 } /* Literal.String.Symbol */
.highlight .bp { color: #007020 } /* Name.Builtin.Pseudo */
.highlight .vc { color: #bb60d5 } /* Name.Variable.Class */
.highlight .vg { color: #bb60d5 } /* Name.Variable.Global */
.highlight .vi { color: #bb60d5 } /* Name.Variable.Instance */
.highlight .il { color: #208050 } /* Literal.Number.Integer.Long */

View File

@ -1,560 +0,0 @@
/*
* searchtools.js_t
* ~~~~~~~~~~~~~~~~
*
* Sphinx JavaScript utilties for the full-text search.
*
* :copyright: Copyright 2007-2011 by the Sphinx team, see AUTHORS.
* :license: BSD, see LICENSE for details.
*
*/
/**
* helper function to return a node containing the
* search summary for a given text. keywords is a list
* of stemmed words, hlwords is the list of normal, unstemmed
* words. the first one is used to find the occurance, the
* latter for highlighting it.
*/
jQuery.makeSearchSummary = function(text, keywords, hlwords) {
var textLower = text.toLowerCase();
var start = 0;
$.each(keywords, function() {
var i = textLower.indexOf(this.toLowerCase());
if (i > -1)
start = i;
});
start = Math.max(start - 120, 0);
var excerpt = ((start > 0) ? '...' : '') +
$.trim(text.substr(start, 240)) +
((start + 240 - text.length) ? '...' : '');
var rv = $('<div class="context"></div>').text(excerpt);
$.each(hlwords, function() {
rv = rv.highlightText(this, 'highlighted');
});
return rv;
}
/**
* Porter Stemmer
*/
var Stemmer = function() {
var step2list = {
ational: 'ate',
tional: 'tion',
enci: 'ence',
anci: 'ance',
izer: 'ize',
bli: 'ble',
alli: 'al',
entli: 'ent',
eli: 'e',
ousli: 'ous',
ization: 'ize',
ation: 'ate',
ator: 'ate',
alism: 'al',
iveness: 'ive',
fulness: 'ful',
ousness: 'ous',
aliti: 'al',
iviti: 'ive',
biliti: 'ble',
logi: 'log'
};
var step3list = {
icate: 'ic',
ative: '',
alize: 'al',
iciti: 'ic',
ical: 'ic',
ful: '',
ness: ''
};
var c = "[^aeiou]"; // consonant
var v = "[aeiouy]"; // vowel
var C = c + "[^aeiouy]*"; // consonant sequence
var V = v + "[aeiou]*"; // vowel sequence
var mgr0 = "^(" + C + ")?" + V + C; // [C]VC... is m>0
var meq1 = "^(" + C + ")?" + V + C + "(" + V + ")?$"; // [C]VC[V] is m=1
var mgr1 = "^(" + C + ")?" + V + C + V + C; // [C]VCVC... is m>1
var s_v = "^(" + C + ")?" + v; // vowel in stem
this.stemWord = function (w) {
var stem;
var suffix;
var firstch;
var origword = w;
if (w.length < 3)
return w;
var re;
var re2;
var re3;
var re4;
firstch = w.substr(0,1);
if (firstch == "y")
w = firstch.toUpperCase() + w.substr(1);
// Step 1a
re = /^(.+?)(ss|i)es$/;
re2 = /^(.+?)([^s])s$/;
if (re.test(w))
w = w.replace(re,"$1$2");
else if (re2.test(w))
w = w.replace(re2,"$1$2");
// Step 1b
re = /^(.+?)eed$/;
re2 = /^(.+?)(ed|ing)$/;
if (re.test(w)) {
var fp = re.exec(w);
re = new RegExp(mgr0);
if (re.test(fp[1])) {
re = /.$/;
w = w.replace(re,"");
}
}
else if (re2.test(w)) {
var fp = re2.exec(w);
stem = fp[1];
re2 = new RegExp(s_v);
if (re2.test(stem)) {
w = stem;
re2 = /(at|bl|iz)$/;
re3 = new RegExp("([^aeiouylsz])\\1$");
re4 = new RegExp("^" + C + v + "[^aeiouwxy]$");
if (re2.test(w))
w = w + "e";
else if (re3.test(w)) {
re = /.$/;
w = w.replace(re,"");
}
else if (re4.test(w))
w = w + "e";
}
}
// Step 1c
re = /^(.+?)y$/;
if (re.test(w)) {
var fp = re.exec(w);
stem = fp[1];
re = new RegExp(s_v);
if (re.test(stem))
w = stem + "i";
}
// Step 2
re = /^(.+?)(ational|tional|enci|anci|izer|bli|alli|entli|eli|ousli|ization|ation|ator|alism|iveness|fulness|ousness|aliti|iviti|biliti|logi)$/;
if (re.test(w)) {
var fp = re.exec(w);
stem = fp[1];
suffix = fp[2];
re = new RegExp(mgr0);
if (re.test(stem))
w = stem + step2list[suffix];
}
// Step 3
re = /^(.+?)(icate|ative|alize|iciti|ical|ful|ness)$/;
if (re.test(w)) {
var fp = re.exec(w);
stem = fp[1];
suffix = fp[2];
re = new RegExp(mgr0);
if (re.test(stem))
w = stem + step3list[suffix];
}
// Step 4
re = /^(.+?)(al|ance|ence|er|ic|able|ible|ant|ement|ment|ent|ou|ism|ate|iti|ous|ive|ize)$/;
re2 = /^(.+?)(s|t)(ion)$/;
if (re.test(w)) {
var fp = re.exec(w);
stem = fp[1];
re = new RegExp(mgr1);
if (re.test(stem))
w = stem;
}
else if (re2.test(w)) {
var fp = re2.exec(w);
stem = fp[1] + fp[2];
re2 = new RegExp(mgr1);
if (re2.test(stem))
w = stem;
}
// Step 5
re = /^(.+?)e$/;
if (re.test(w)) {
var fp = re.exec(w);
stem = fp[1];
re = new RegExp(mgr1);
re2 = new RegExp(meq1);
re3 = new RegExp("^" + C + v + "[^aeiouwxy]$");
if (re.test(stem) || (re2.test(stem) && !(re3.test(stem))))
w = stem;
}
re = /ll$/;
re2 = new RegExp(mgr1);
if (re.test(w) && re2.test(w)) {
re = /.$/;
w = w.replace(re,"");
}
// and turn initial Y back to y
if (firstch == "y")
w = firstch.toLowerCase() + w.substr(1);
return w;
}
}
/**
* Search Module
*/
var Search = {
_index : null,
_queued_query : null,
_pulse_status : -1,
init : function() {
var params = $.getQueryParameters();
if (params.q) {
var query = params.q[0];
$('input[name="q"]')[0].value = query;
this.performSearch(query);
}
},
loadIndex : function(url) {
$.ajax({type: "GET", url: url, data: null, success: null,
dataType: "script", cache: true});
},
setIndex : function(index) {
var q;
this._index = index;
if ((q = this._queued_query) !== null) {
this._queued_query = null;
Search.query(q);
}
},
hasIndex : function() {
return this._index !== null;
},
deferQuery : function(query) {
this._queued_query = query;
},
stopPulse : function() {
this._pulse_status = 0;
},
startPulse : function() {
if (this._pulse_status >= 0)
return;
function pulse() {
Search._pulse_status = (Search._pulse_status + 1) % 4;
var dotString = '';
for (var i = 0; i < Search._pulse_status; i++)
dotString += '.';
Search.dots.text(dotString);
if (Search._pulse_status > -1)
window.setTimeout(pulse, 500);
};
pulse();
},
/**
* perform a search for something
*/
performSearch : function(query) {
// create the required interface elements
this.out = $('#search-results');
this.title = $('<h2>' + _('Searching') + '</h2>').appendTo(this.out);
this.dots = $('<span></span>').appendTo(this.title);
this.status = $('<p style="display: none"></p>').appendTo(this.out);
this.output = $('<ul class="search"/>').appendTo(this.out);
$('#search-progress').text(_('Preparing search...'));
this.startPulse();
// index already loaded, the browser was quick!
if (this.hasIndex())
this.query(query);
else
this.deferQuery(query);
},
query : function(query) {
var stopwords = ["and","then","into","it","as","are","in","if","for","no","there","their","was","is","be","to","that","but","they","not","such","with","by","a","on","these","of","will","this","near","the","or","at"];
// Stem the searchterms and add them to the correct list
var stemmer = new Stemmer();
var searchterms = [];
var excluded = [];
var hlterms = [];
var tmp = query.split(/\s+/);
var objectterms = [];
for (var i = 0; i < tmp.length; i++) {
if (tmp[i] != "") {
objectterms.push(tmp[i].toLowerCase());
}
if ($u.indexOf(stopwords, tmp[i]) != -1 || tmp[i].match(/^\d+$/) ||
tmp[i] == "") {
// skip this "word"
continue;
}
// stem the word
var word = stemmer.stemWord(tmp[i]).toLowerCase();
// select the correct list
if (word[0] == '-') {
var toAppend = excluded;
word = word.substr(1);
}
else {
var toAppend = searchterms;
hlterms.push(tmp[i].toLowerCase());
}
// only add if not already in the list
if (!$.contains(toAppend, word))
toAppend.push(word);
};
var highlightstring = '?highlight=' + $.urlencode(hlterms.join(" "));
// console.debug('SEARCH: searching for:');
// console.info('required: ', searchterms);
// console.info('excluded: ', excluded);
// prepare search
var filenames = this._index.filenames;
var titles = this._index.titles;
var terms = this._index.terms;
var fileMap = {};
var files = null;
// different result priorities
var importantResults = [];
var objectResults = [];
var regularResults = [];
var unimportantResults = [];
$('#search-progress').empty();
// lookup as object
for (var i = 0; i < objectterms.length; i++) {
var others = [].concat(objectterms.slice(0,i),
objectterms.slice(i+1, objectterms.length))
var results = this.performObjectSearch(objectterms[i], others);
// Assume first word is most likely to be the object,
// other words more likely to be in description.
// Therefore put matches for earlier words first.
// (Results are eventually used in reverse order).
objectResults = results[0].concat(objectResults);
importantResults = results[1].concat(importantResults);
unimportantResults = results[2].concat(unimportantResults);
}
// perform the search on the required terms
for (var i = 0; i < searchterms.length; i++) {
var word = searchterms[i];
// no match but word was a required one
if ((files = terms[word]) == null)
break;
if (files.length == undefined) {
files = [files];
}
// create the mapping
for (var j = 0; j < files.length; j++) {
var file = files[j];
if (file in fileMap)
fileMap[file].push(word);
else
fileMap[file] = [word];
}
}
// now check if the files don't contain excluded terms
for (var file in fileMap) {
var valid = true;
// check if all requirements are matched
if (fileMap[file].length != searchterms.length)
continue;
// ensure that none of the excluded terms is in the
// search result.
for (var i = 0; i < excluded.length; i++) {
if (terms[excluded[i]] == file ||
$.contains(terms[excluded[i]] || [], file)) {
valid = false;
break;
}
}
// if we have still a valid result we can add it
// to the result list
if (valid)
regularResults.push([filenames[file], titles[file], '', null]);
}
// delete unused variables in order to not waste
// memory until list is retrieved completely
delete filenames, titles, terms;
// now sort the regular results descending by title
regularResults.sort(function(a, b) {
var left = a[1].toLowerCase();
var right = b[1].toLowerCase();
return (left > right) ? -1 : ((left < right) ? 1 : 0);
});
// combine all results
var results = unimportantResults.concat(regularResults)
.concat(objectResults).concat(importantResults);
// print the results
var resultCount = results.length;
function displayNextItem() {
// results left, load the summary and display it
if (results.length) {
var item = results.pop();
var listItem = $('<li style="display:none"></li>');
if (DOCUMENTATION_OPTIONS.FILE_SUFFIX == '') {
// dirhtml builder
var dirname = item[0] + '/';
if (dirname.match(/\/index\/$/)) {
dirname = dirname.substring(0, dirname.length-6);
} else if (dirname == 'index/') {
dirname = '';
}
listItem.append($('<a/>').attr('href',
DOCUMENTATION_OPTIONS.URL_ROOT + dirname +
highlightstring + item[2]).html(item[1]));
} else {
// normal html builders
listItem.append($('<a/>').attr('href',
item[0] + DOCUMENTATION_OPTIONS.FILE_SUFFIX +
highlightstring + item[2]).html(item[1]));
}
if (item[3]) {
listItem.append($('<span> (' + item[3] + ')</span>'));
Search.output.append(listItem);
listItem.slideDown(5, function() {
displayNextItem();
});
} else if (DOCUMENTATION_OPTIONS.HAS_SOURCE) {
$.get(DOCUMENTATION_OPTIONS.URL_ROOT + '_sources/' +
item[0] + '.txt', function(data) {
if (data != '') {
listItem.append($.makeSearchSummary(data, searchterms, hlterms));
Search.output.append(listItem);
}
listItem.slideDown(5, function() {
displayNextItem();
});
}, "text");
} else {
// no source available, just display title
Search.output.append(listItem);
listItem.slideDown(5, function() {
displayNextItem();
});
}
}
// search finished, update title and status message
else {
Search.stopPulse();
Search.title.text(_('Search Results'));
if (!resultCount)
Search.status.text(_('Your search did not match any documents. Please make sure that all words are spelled correctly and that you\'ve selected enough categories.'));
else
Search.status.text(_('Search finished, found %s page(s) matching the search query.').replace('%s', resultCount));
Search.status.fadeIn(500);
}
}
displayNextItem();
},
performObjectSearch : function(object, otherterms) {
var filenames = this._index.filenames;
var objects = this._index.objects;
var objnames = this._index.objnames;
var titles = this._index.titles;
var importantResults = [];
var objectResults = [];
var unimportantResults = [];
for (var prefix in objects) {
for (var name in objects[prefix]) {
var fullname = (prefix ? prefix + '.' : '') + name;
if (fullname.toLowerCase().indexOf(object) > -1) {
var match = objects[prefix][name];
var objname = objnames[match[1]][2];
var title = titles[match[0]];
// If more than one term searched for, we require other words to be
// found in the name/title/description
if (otherterms.length > 0) {
var haystack = (prefix + ' ' + name + ' ' +
objname + ' ' + title).toLowerCase();
var allfound = true;
for (var i = 0; i < otherterms.length; i++) {
if (haystack.indexOf(otherterms[i]) == -1) {
allfound = false;
break;
}
}
if (!allfound) {
continue;
}
}
var descr = objname + _(', in ') + title;
anchor = match[3];
if (anchor == '')
anchor = fullname;
else if (anchor == '-')
anchor = objnames[match[1]][1] + '-' + fullname;
result = [filenames[match[0]], fullname, '#'+anchor, descr];
switch (match[2]) {
case 1: objectResults.push(result); break;
case 0: importantResults.push(result); break;
case 2: unimportantResults.push(result); break;
}
}
}
}
// sort results descending
objectResults.sort(function(a, b) {
return (a[1] > b[1]) ? -1 : ((a[1] < b[1]) ? 1 : 0);
});
importantResults.sort(function(a, b) {
return (a[1] > b[1]) ? -1 : ((a[1] < b[1]) ? 1 : 0);
});
unimportantResults.sort(function(a, b) {
return (a[1] > b[1]) ? -1 : ((a[1] < b[1]) ? 1 : 0);
});
return [importantResults, objectResults, unimportantResults]
}
}
$(document).ready(function() {
Search.init();
});

View File

@ -1,151 +0,0 @@
/*
* sidebar.js
* ~~~~~~~~~~
*
* This script makes the Sphinx sidebar collapsible.
*
* .sphinxsidebar contains .sphinxsidebarwrapper. This script adds
* in .sphixsidebar, after .sphinxsidebarwrapper, the #sidebarbutton
* used to collapse and expand the sidebar.
*
* When the sidebar is collapsed the .sphinxsidebarwrapper is hidden
* and the width of the sidebar and the margin-left of the document
* are decreased. When the sidebar is expanded the opposite happens.
* This script saves a per-browser/per-session cookie used to
* remember the position of the sidebar among the pages.
* Once the browser is closed the cookie is deleted and the position
* reset to the default (expanded).
*
* :copyright: Copyright 2007-2011 by the Sphinx team, see AUTHORS.
* :license: BSD, see LICENSE for details.
*
*/
$(function() {
// global elements used by the functions.
// the 'sidebarbutton' element is defined as global after its
// creation, in the add_sidebar_button function
var bodywrapper = $('.bodywrapper');
var sidebar = $('.sphinxsidebar');
var sidebarwrapper = $('.sphinxsidebarwrapper');
// for some reason, the document has no sidebar; do not run into errors
if (!sidebar.length) return;
// original margin-left of the bodywrapper and width of the sidebar
// with the sidebar expanded
var bw_margin_expanded = bodywrapper.css('margin-left');
var ssb_width_expanded = sidebar.width();
// margin-left of the bodywrapper and width of the sidebar
// with the sidebar collapsed
var bw_margin_collapsed = '.8em';
var ssb_width_collapsed = '.8em';
// colors used by the current theme
var dark_color = $('.related').css('background-color');
var light_color = $('.document').css('background-color');
function sidebar_is_collapsed() {
return sidebarwrapper.is(':not(:visible)');
}
function toggle_sidebar() {
if (sidebar_is_collapsed())
expand_sidebar();
else
collapse_sidebar();
}
function collapse_sidebar() {
sidebarwrapper.hide();
sidebar.css('width', ssb_width_collapsed);
bodywrapper.css('margin-left', bw_margin_collapsed);
sidebarbutton.css({
'margin-left': '0',
'height': bodywrapper.height()
});
sidebarbutton.find('span').text('»');
sidebarbutton.attr('title', _('Expand sidebar'));
document.cookie = 'sidebar=collapsed';
}
function expand_sidebar() {
bodywrapper.css('margin-left', bw_margin_expanded);
sidebar.css('width', ssb_width_expanded);
sidebarwrapper.show();
sidebarbutton.css({
'margin-left': ssb_width_expanded-12,
'height': bodywrapper.height()
});
sidebarbutton.find('span').text('«');
sidebarbutton.attr('title', _('Collapse sidebar'));
document.cookie = 'sidebar=expanded';
}
function add_sidebar_button() {
sidebarwrapper.css({
'float': 'left',
'margin-right': '0',
'width': ssb_width_expanded - 28
});
// create the button
sidebar.append(
'<div id="sidebarbutton"><span>&laquo;</span></div>'
);
var sidebarbutton = $('#sidebarbutton');
light_color = sidebarbutton.css('background-color');
// find the height of the viewport to center the '<<' in the page
var viewport_height;
if (window.innerHeight)
viewport_height = window.innerHeight;
else
viewport_height = $(window).height();
sidebarbutton.find('span').css({
'display': 'block',
'margin-top': (viewport_height - sidebar.position().top - 20) / 2
});
sidebarbutton.click(toggle_sidebar);
sidebarbutton.attr('title', _('Collapse sidebar'));
sidebarbutton.css({
'color': '#FFFFFF',
'border-left': '1px solid ' + dark_color,
'font-size': '1.2em',
'cursor': 'pointer',
'height': bodywrapper.height(),
'padding-top': '1px',
'margin-left': ssb_width_expanded - 12
});
sidebarbutton.hover(
function () {
$(this).css('background-color', dark_color);
},
function () {
$(this).css('background-color', light_color);
}
);
}
function set_position_from_cookie() {
if (!document.cookie)
return;
var items = document.cookie.split(';');
for(var k=0; k<items.length; k++) {
var key_val = items[k].split('=');
var key = key_val[0];
if (key == 'sidebar') {
var value = key_val[1];
if ((value == 'collapsed') && (!sidebar_is_collapsed()))
collapse_sidebar();
else if ((value == 'expanded') && (sidebar_is_collapsed()))
expand_sidebar();
}
}
}
add_sidebar_button();
var sidebarbutton = $('#sidebarbutton');
set_position_from_cookie();
});

View File

@ -1,807 +0,0 @@
// Underscore.js 1.1.6
// (c) 2011 Jeremy Ashkenas, DocumentCloud Inc.
// Underscore is freely distributable under the MIT license.
// Portions of Underscore are inspired or borrowed from Prototype,
// Oliver Steele's Functional, and John Resig's Micro-Templating.
// For all details and documentation:
// http://documentcloud.github.com/underscore
(function() {
// Baseline setup
// --------------
// Establish the root object, `window` in the browser, or `global` on the server.
var root = this;
// Save the previous value of the `_` variable.
var previousUnderscore = root._;
// Establish the object that gets returned to break out of a loop iteration.
var breaker = {};
// Save bytes in the minified (but not gzipped) version:
var ArrayProto = Array.prototype, ObjProto = Object.prototype, FuncProto = Function.prototype;
// Create quick reference variables for speed access to core prototypes.
var slice = ArrayProto.slice,
unshift = ArrayProto.unshift,
toString = ObjProto.toString,
hasOwnProperty = ObjProto.hasOwnProperty;
// All **ECMAScript 5** native function implementations that we hope to use
// are declared here.
var
nativeForEach = ArrayProto.forEach,
nativeMap = ArrayProto.map,
nativeReduce = ArrayProto.reduce,
nativeReduceRight = ArrayProto.reduceRight,
nativeFilter = ArrayProto.filter,
nativeEvery = ArrayProto.every,
nativeSome = ArrayProto.some,
nativeIndexOf = ArrayProto.indexOf,
nativeLastIndexOf = ArrayProto.lastIndexOf,
nativeIsArray = Array.isArray,
nativeKeys = Object.keys,
nativeBind = FuncProto.bind;
// Create a safe reference to the Underscore object for use below.
var _ = function(obj) { return new wrapper(obj); };
// Export the Underscore object for **CommonJS**, with backwards-compatibility
// for the old `require()` API. If we're not in CommonJS, add `_` to the
// global object.
if (typeof module !== 'undefined' && module.exports) {
module.exports = _;
_._ = _;
} else {
root._ = _;
}
// Current version.
_.VERSION = '1.1.6';
// Collection Functions
// --------------------
// The cornerstone, an `each` implementation, aka `forEach`.
// Handles objects implementing `forEach`, arrays, and raw objects.
// Delegates to **ECMAScript 5**'s native `forEach` if available.
var each = _.each = _.forEach = function(obj, iterator, context) {
if (obj == null) return;
if (nativeForEach && obj.forEach === nativeForEach) {
obj.forEach(iterator, context);
} else if (_.isNumber(obj.length)) {
for (var i = 0, l = obj.length; i < l; i++) {
if (iterator.call(context, obj[i], i, obj) === breaker) return;
}
} else {
for (var key in obj) {
if (hasOwnProperty.call(obj, key)) {
if (iterator.call(context, obj[key], key, obj) === breaker) return;
}
}
}
};
// Return the results of applying the iterator to each element.
// Delegates to **ECMAScript 5**'s native `map` if available.
_.map = function(obj, iterator, context) {
var results = [];
if (obj == null) return results;
if (nativeMap && obj.map === nativeMap) return obj.map(iterator, context);
each(obj, function(value, index, list) {
results[results.length] = iterator.call(context, value, index, list);
});
return results;
};
// **Reduce** builds up a single result from a list of values, aka `inject`,
// or `foldl`. Delegates to **ECMAScript 5**'s native `reduce` if available.
_.reduce = _.foldl = _.inject = function(obj, iterator, memo, context) {
var initial = memo !== void 0;
if (obj == null) obj = [];
if (nativeReduce && obj.reduce === nativeReduce) {
if (context) iterator = _.bind(iterator, context);
return initial ? obj.reduce(iterator, memo) : obj.reduce(iterator);
}
each(obj, function(value, index, list) {
if (!initial && index === 0) {
memo = value;
initial = true;
} else {
memo = iterator.call(context, memo, value, index, list);
}
});
if (!initial) throw new TypeError("Reduce of empty array with no initial value");
return memo;
};
// The right-associative version of reduce, also known as `foldr`.
// Delegates to **ECMAScript 5**'s native `reduceRight` if available.
_.reduceRight = _.foldr = function(obj, iterator, memo, context) {
if (obj == null) obj = [];
if (nativeReduceRight && obj.reduceRight === nativeReduceRight) {
if (context) iterator = _.bind(iterator, context);
return memo !== void 0 ? obj.reduceRight(iterator, memo) : obj.reduceRight(iterator);
}
var reversed = (_.isArray(obj) ? obj.slice() : _.toArray(obj)).reverse();
return _.reduce(reversed, iterator, memo, context);
};
// Return the first value which passes a truth test. Aliased as `detect`.
_.find = _.detect = function(obj, iterator, context) {
var result;
any(obj, function(value, index, list) {
if (iterator.call(context, value, index, list)) {
result = value;
return true;
}
});
return result;
};
// Return all the elements that pass a truth test.
// Delegates to **ECMAScript 5**'s native `filter` if available.
// Aliased as `select`.
_.filter = _.select = function(obj, iterator, context) {
var results = [];
if (obj == null) return results;
if (nativeFilter && obj.filter === nativeFilter) return obj.filter(iterator, context);
each(obj, function(value, index, list) {
if (iterator.call(context, value, index, list)) results[results.length] = value;
});
return results;
};
// Return all the elements for which a truth test fails.
_.reject = function(obj, iterator, context) {
var results = [];
if (obj == null) return results;
each(obj, function(value, index, list) {
if (!iterator.call(context, value, index, list)) results[results.length] = value;
});
return results;
};
// Determine whether all of the elements match a truth test.
// Delegates to **ECMAScript 5**'s native `every` if available.
// Aliased as `all`.
_.every = _.all = function(obj, iterator, context) {
var result = true;
if (obj == null) return result;
if (nativeEvery && obj.every === nativeEvery) return obj.every(iterator, context);
each(obj, function(value, index, list) {
if (!(result = result && iterator.call(context, value, index, list))) return breaker;
});
return result;
};
// Determine if at least one element in the object matches a truth test.
// Delegates to **ECMAScript 5**'s native `some` if available.
// Aliased as `any`.
var any = _.some = _.any = function(obj, iterator, context) {
iterator || (iterator = _.identity);
var result = false;
if (obj == null) return result;
if (nativeSome && obj.some === nativeSome) return obj.some(iterator, context);
each(obj, function(value, index, list) {
if (result = iterator.call(context, value, index, list)) return breaker;
});
return result;
};
// Determine if a given value is included in the array or object using `===`.
// Aliased as `contains`.
_.include = _.contains = function(obj, target) {
var found = false;
if (obj == null) return found;
if (nativeIndexOf && obj.indexOf === nativeIndexOf) return obj.indexOf(target) != -1;
any(obj, function(value) {
if (found = value === target) return true;
});
return found;
};
// Invoke a method (with arguments) on every item in a collection.
_.invoke = function(obj, method) {
var args = slice.call(arguments, 2);
return _.map(obj, function(value) {
return (method.call ? method || value : value[method]).apply(value, args);
});
};
// Convenience version of a common use case of `map`: fetching a property.
_.pluck = function(obj, key) {
return _.map(obj, function(value){ return value[key]; });
};
// Return the maximum element or (element-based computation).
_.max = function(obj, iterator, context) {
if (!iterator && _.isArray(obj)) return Math.max.apply(Math, obj);
var result = {computed : -Infinity};
each(obj, function(value, index, list) {
var computed = iterator ? iterator.call(context, value, index, list) : value;
computed >= result.computed && (result = {value : value, computed : computed});
});
return result.value;
};
// Return the minimum element (or element-based computation).
_.min = function(obj, iterator, context) {
if (!iterator && _.isArray(obj)) return Math.min.apply(Math, obj);
var result = {computed : Infinity};
each(obj, function(value, index, list) {
var computed = iterator ? iterator.call(context, value, index, list) : value;
computed < result.computed && (result = {value : value, computed : computed});
});
return result.value;
};
// Sort the object's values by a criterion produced by an iterator.
_.sortBy = function(obj, iterator, context) {
return _.pluck(_.map(obj, function(value, index, list) {
return {
value : value,
criteria : iterator.call(context, value, index, list)
};
}).sort(function(left, right) {
var a = left.criteria, b = right.criteria;
return a < b ? -1 : a > b ? 1 : 0;
}), 'value');
};
// Use a comparator function to figure out at what index an object should
// be inserted so as to maintain order. Uses binary search.
_.sortedIndex = function(array, obj, iterator) {
iterator || (iterator = _.identity);
var low = 0, high = array.length;
while (low < high) {
var mid = (low + high) >> 1;
iterator(array[mid]) < iterator(obj) ? low = mid + 1 : high = mid;
}
return low;
};
// Safely convert anything iterable into a real, live array.
_.toArray = function(iterable) {
if (!iterable) return [];
if (iterable.toArray) return iterable.toArray();
if (_.isArray(iterable)) return iterable;
if (_.isArguments(iterable)) return slice.call(iterable);
return _.values(iterable);
};
// Return the number of elements in an object.
_.size = function(obj) {
return _.toArray(obj).length;
};
// Array Functions
// ---------------
// Get the first element of an array. Passing **n** will return the first N
// values in the array. Aliased as `head`. The **guard** check allows it to work
// with `_.map`.
_.first = _.head = function(array, n, guard) {
return (n != null) && !guard ? slice.call(array, 0, n) : array[0];
};
// Returns everything but the first entry of the array. Aliased as `tail`.
// Especially useful on the arguments object. Passing an **index** will return
// the rest of the values in the array from that index onward. The **guard**
// check allows it to work with `_.map`.
_.rest = _.tail = function(array, index, guard) {
return slice.call(array, (index == null) || guard ? 1 : index);
};
// Get the last element of an array.
_.last = function(array) {
return array[array.length - 1];
};
// Trim out all falsy values from an array.
_.compact = function(array) {
return _.filter(array, function(value){ return !!value; });
};
// Return a completely flattened version of an array.
_.flatten = function(array) {
return _.reduce(array, function(memo, value) {
if (_.isArray(value)) return memo.concat(_.flatten(value));
memo[memo.length] = value;
return memo;
}, []);
};
// Return a version of the array that does not contain the specified value(s).
_.without = function(array) {
var values = slice.call(arguments, 1);
return _.filter(array, function(value){ return !_.include(values, value); });
};
// Produce a duplicate-free version of the array. If the array has already
// been sorted, you have the option of using a faster algorithm.
// Aliased as `unique`.
_.uniq = _.unique = function(array, isSorted) {
return _.reduce(array, function(memo, el, i) {
if (0 == i || (isSorted === true ? _.last(memo) != el : !_.include(memo, el))) memo[memo.length] = el;
return memo;
}, []);
};
// Produce an array that contains every item shared between all the
// passed-in arrays.
_.intersect = function(array) {
var rest = slice.call(arguments, 1);
return _.filter(_.uniq(array), function(item) {
return _.every(rest, function(other) {
return _.indexOf(other, item) >= 0;
});
});
};
// Zip together multiple lists into a single array -- elements that share
// an index go together.
_.zip = function() {
var args = slice.call(arguments);
var length = _.max(_.pluck(args, 'length'));
var results = new Array(length);
for (var i = 0; i < length; i++) results[i] = _.pluck(args, "" + i);
return results;
};
// If the browser doesn't supply us with indexOf (I'm looking at you, **MSIE**),
// we need this function. Return the position of the first occurrence of an
// item in an array, or -1 if the item is not included in the array.
// Delegates to **ECMAScript 5**'s native `indexOf` if available.
// If the array is large and already in sort order, pass `true`
// for **isSorted** to use binary search.
_.indexOf = function(array, item, isSorted) {
if (array == null) return -1;
var i, l;
if (isSorted) {
i = _.sortedIndex(array, item);
return array[i] === item ? i : -1;
}
if (nativeIndexOf && array.indexOf === nativeIndexOf) return array.indexOf(item);
for (i = 0, l = array.length; i < l; i++) if (array[i] === item) return i;
return -1;
};
// Delegates to **ECMAScript 5**'s native `lastIndexOf` if available.
_.lastIndexOf = function(array, item) {
if (array == null) return -1;
if (nativeLastIndexOf && array.lastIndexOf === nativeLastIndexOf) return array.lastIndexOf(item);
var i = array.length;
while (i--) if (array[i] === item) return i;
return -1;
};
// Generate an integer Array containing an arithmetic progression. A port of
// the native Python `range()` function. See
// [the Python documentation](http://docs.python.org/library/functions.html#range).
_.range = function(start, stop, step) {
if (arguments.length <= 1) {
stop = start || 0;
start = 0;
}
step = arguments[2] || 1;
var len = Math.max(Math.ceil((stop - start) / step), 0);
var idx = 0;
var range = new Array(len);
while(idx < len) {
range[idx++] = start;
start += step;
}
return range;
};
// Function (ahem) Functions
// ------------------
// Create a function bound to a given object (assigning `this`, and arguments,
// optionally). Binding with arguments is also known as `curry`.
// Delegates to **ECMAScript 5**'s native `Function.bind` if available.
// We check for `func.bind` first, to fail fast when `func` is undefined.
_.bind = function(func, obj) {
if (func.bind === nativeBind && nativeBind) return nativeBind.apply(func, slice.call(arguments, 1));
var args = slice.call(arguments, 2);
return function() {
return func.apply(obj, args.concat(slice.call(arguments)));
};
};
// Bind all of an object's methods to that object. Useful for ensuring that
// all callbacks defined on an object belong to it.
_.bindAll = function(obj) {
var funcs = slice.call(arguments, 1);
if (funcs.length == 0) funcs = _.functions(obj);
each(funcs, function(f) { obj[f] = _.bind(obj[f], obj); });
return obj;
};
// Memoize an expensive function by storing its results.
_.memoize = function(func, hasher) {
var memo = {};
hasher || (hasher = _.identity);
return function() {
var key = hasher.apply(this, arguments);
return hasOwnProperty.call(memo, key) ? memo[key] : (memo[key] = func.apply(this, arguments));
};
};
// Delays a function for the given number of milliseconds, and then calls
// it with the arguments supplied.
_.delay = function(func, wait) {
var args = slice.call(arguments, 2);
return setTimeout(function(){ return func.apply(func, args); }, wait);
};
// Defers a function, scheduling it to run after the current call stack has
// cleared.
_.defer = function(func) {
return _.delay.apply(_, [func, 1].concat(slice.call(arguments, 1)));
};
// Internal function used to implement `_.throttle` and `_.debounce`.
var limit = function(func, wait, debounce) {
var timeout;
return function() {
var context = this, args = arguments;
var throttler = function() {
timeout = null;
func.apply(context, args);
};
if (debounce) clearTimeout(timeout);
if (debounce || !timeout) timeout = setTimeout(throttler, wait);
};
};
// Returns a function, that, when invoked, will only be triggered at most once
// during a given window of time.
_.throttle = function(func, wait) {
return limit(func, wait, false);
};
// Returns a function, that, as long as it continues to be invoked, will not
// be triggered. The function will be called after it stops being called for
// N milliseconds.
_.debounce = function(func, wait) {
return limit(func, wait, true);
};
// Returns a function that will be executed at most one time, no matter how
// often you call it. Useful for lazy initialization.
_.once = function(func) {
var ran = false, memo;
return function() {
if (ran) return memo;
ran = true;
return memo = func.apply(this, arguments);
};
};
// Returns the first function passed as an argument to the second,
// allowing you to adjust arguments, run code before and after, and
// conditionally execute the original function.
_.wrap = function(func, wrapper) {
return function() {
var args = [func].concat(slice.call(arguments));
return wrapper.apply(this, args);
};
};
// Returns a function that is the composition of a list of functions, each
// consuming the return value of the function that follows.
_.compose = function() {
var funcs = slice.call(arguments);
return function() {
var args = slice.call(arguments);
for (var i=funcs.length-1; i >= 0; i--) {
args = [funcs[i].apply(this, args)];
}
return args[0];
};
};
// Returns a function that will only be executed after being called N times.
_.after = function(times, func) {
return function() {
if (--times < 1) { return func.apply(this, arguments); }
};
};
// Object Functions
// ----------------
// Retrieve the names of an object's properties.
// Delegates to **ECMAScript 5**'s native `Object.keys`
_.keys = nativeKeys || function(obj) {
if (obj !== Object(obj)) throw new TypeError('Invalid object');
var keys = [];
for (var key in obj) if (hasOwnProperty.call(obj, key)) keys[keys.length] = key;
return keys;
};
// Retrieve the values of an object's properties.
_.values = function(obj) {
return _.map(obj, _.identity);
};
// Return a sorted list of the function names available on the object.
// Aliased as `methods`
_.functions = _.methods = function(obj) {
return _.filter(_.keys(obj), function(key){ return _.isFunction(obj[key]); }).sort();
};
// Extend a given object with all the properties in passed-in object(s).
_.extend = function(obj) {
each(slice.call(arguments, 1), function(source) {
for (var prop in source) {
if (source[prop] !== void 0) obj[prop] = source[prop];
}
});
return obj;
};
// Fill in a given object with default properties.
_.defaults = function(obj) {
each(slice.call(arguments, 1), function(source) {
for (var prop in source) {
if (obj[prop] == null) obj[prop] = source[prop];
}
});
return obj;
};
// Create a (shallow-cloned) duplicate of an object.
_.clone = function(obj) {
return _.isArray(obj) ? obj.slice() : _.extend({}, obj);
};
// Invokes interceptor with the obj, and then returns obj.
// The primary purpose of this method is to "tap into" a method chain, in
// order to perform operations on intermediate results within the chain.
_.tap = function(obj, interceptor) {
interceptor(obj);
return obj;
};
// Perform a deep comparison to check if two objects are equal.
_.isEqual = function(a, b) {
// Check object identity.
if (a === b) return true;
// Different types?
var atype = typeof(a), btype = typeof(b);
if (atype != btype) return false;
// Basic equality test (watch out for coercions).
if (a == b) return true;
// One is falsy and the other truthy.
if ((!a && b) || (a && !b)) return false;
// Unwrap any wrapped objects.
if (a._chain) a = a._wrapped;
if (b._chain) b = b._wrapped;
// One of them implements an isEqual()?
if (a.isEqual) return a.isEqual(b);
// Check dates' integer values.
if (_.isDate(a) && _.isDate(b)) return a.getTime() === b.getTime();
// Both are NaN?
if (_.isNaN(a) && _.isNaN(b)) return false;
// Compare regular expressions.
if (_.isRegExp(a) && _.isRegExp(b))
return a.source === b.source &&
a.global === b.global &&
a.ignoreCase === b.ignoreCase &&
a.multiline === b.multiline;
// If a is not an object by this point, we can't handle it.
if (atype !== 'object') return false;
// Check for different array lengths before comparing contents.
if (a.length && (a.length !== b.length)) return false;
// Nothing else worked, deep compare the contents.
var aKeys = _.keys(a), bKeys = _.keys(b);
// Different object sizes?
if (aKeys.length != bKeys.length) return false;
// Recursive comparison of contents.
for (var key in a) if (!(key in b) || !_.isEqual(a[key], b[key])) return false;
return true;
};
// Is a given array or object empty?
_.isEmpty = function(obj) {
if (_.isArray(obj) || _.isString(obj)) return obj.length === 0;
for (var key in obj) if (hasOwnProperty.call(obj, key)) return false;
return true;
};
// Is a given value a DOM element?
_.isElement = function(obj) {
return !!(obj && obj.nodeType == 1);
};
// Is a given value an array?
// Delegates to ECMA5's native Array.isArray
_.isArray = nativeIsArray || function(obj) {
return toString.call(obj) === '[object Array]';
};
// Is a given variable an arguments object?
_.isArguments = function(obj) {
return !!(obj && hasOwnProperty.call(obj, 'callee'));
};
// Is a given value a function?
_.isFunction = function(obj) {
return !!(obj && obj.constructor && obj.call && obj.apply);
};
// Is a given value a string?
_.isString = function(obj) {
return !!(obj === '' || (obj && obj.charCodeAt && obj.substr));
};
// Is a given value a number?
_.isNumber = function(obj) {
return !!(obj === 0 || (obj && obj.toExponential && obj.toFixed));
};
// Is the given value `NaN`? `NaN` happens to be the only value in JavaScript
// that does not equal itself.
_.isNaN = function(obj) {
return obj !== obj;
};
// Is a given value a boolean?
_.isBoolean = function(obj) {
return obj === true || obj === false;
};
// Is a given value a date?
_.isDate = function(obj) {
return !!(obj && obj.getTimezoneOffset && obj.setUTCFullYear);
};
// Is the given value a regular expression?
_.isRegExp = function(obj) {
return !!(obj && obj.test && obj.exec && (obj.ignoreCase || obj.ignoreCase === false));
};
// Is a given value equal to null?
_.isNull = function(obj) {
return obj === null;
};
// Is a given variable undefined?
_.isUndefined = function(obj) {
return obj === void 0;
};
// Utility Functions
// -----------------
// Run Underscore.js in *noConflict* mode, returning the `_` variable to its
// previous owner. Returns a reference to the Underscore object.
_.noConflict = function() {
root._ = previousUnderscore;
return this;
};
// Keep the identity function around for default iterators.
_.identity = function(value) {
return value;
};
// Run a function **n** times.
_.times = function (n, iterator, context) {
for (var i = 0; i < n; i++) iterator.call(context, i);
};
// Add your own custom functions to the Underscore object, ensuring that
// they're correctly added to the OOP wrapper as well.
_.mixin = function(obj) {
each(_.functions(obj), function(name){
addToWrapper(name, _[name] = obj[name]);
});
};
// Generate a unique integer id (unique within the entire client session).
// Useful for temporary DOM ids.
var idCounter = 0;
_.uniqueId = function(prefix) {
var id = idCounter++;
return prefix ? prefix + id : id;
};
// By default, Underscore uses ERB-style template delimiters, change the
// following template settings to use alternative delimiters.
_.templateSettings = {
evaluate : /<%([\s\S]+?)%>/g,
interpolate : /<%=([\s\S]+?)%>/g
};
// JavaScript micro-templating, similar to John Resig's implementation.
// Underscore templating handles arbitrary delimiters, preserves whitespace,
// and correctly escapes quotes within interpolated code.
_.template = function(str, data) {
var c = _.templateSettings;
var tmpl = 'var __p=[],print=function(){__p.push.apply(__p,arguments);};' +
'with(obj||{}){__p.push(\'' +
str.replace(/\\/g, '\\\\')
.replace(/'/g, "\\'")
.replace(c.interpolate, function(match, code) {
return "'," + code.replace(/\\'/g, "'") + ",'";
})
.replace(c.evaluate || null, function(match, code) {
return "');" + code.replace(/\\'/g, "'")
.replace(/[\r\n\t]/g, ' ') + "__p.push('";
})
.replace(/\r/g, '\\r')
.replace(/\n/g, '\\n')
.replace(/\t/g, '\\t')
+ "');}return __p.join('');";
var func = new Function('obj', tmpl);
return data ? func(data) : func;
};
// The OOP Wrapper
// ---------------
// If Underscore is called as a function, it returns a wrapped object that
// can be used OO-style. This wrapper holds altered versions of all the
// underscore functions. Wrapped objects may be chained.
var wrapper = function(obj) { this._wrapped = obj; };
// Expose `wrapper.prototype` as `_.prototype`
_.prototype = wrapper.prototype;
// Helper function to continue chaining intermediate results.
var result = function(obj, chain) {
return chain ? _(obj).chain() : obj;
};
// A method to easily add functions to the OOP wrapper.
var addToWrapper = function(name, func) {
wrapper.prototype[name] = function() {
var args = slice.call(arguments);
unshift.call(args, this._wrapped);
return result(func.apply(_, args), this._chain);
};
};
// Add all of the Underscore functions to the wrapper object.
_.mixin(_);
// Add all mutator Array functions to the wrapper.
each(['pop', 'push', 'reverse', 'shift', 'sort', 'splice', 'unshift'], function(name) {
var method = ArrayProto[name];
wrapper.prototype[name] = function() {
method.apply(this._wrapped, arguments);
return result(this._wrapped, this._chain);
};
});
// Add all accessor Array functions to the wrapper.
each(['concat', 'join', 'slice'], function(name) {
var method = ArrayProto[name];
wrapper.prototype[name] = function() {
return result(method.apply(this._wrapped, arguments), this._chain);
};
});
// Start chaining a wrapped Underscore object.
wrapper.prototype.chain = function() {
this._chain = true;
return this;
};
// Extracts the result from a wrapped and chained object.
wrapper.prototype.value = function() {
return this._wrapped;
};
})();

Binary file not shown.

Before

Width:  |  Height:  |  Size: 372 B

Binary file not shown.

Before

Width:  |  Height:  |  Size: 363 B

View File

@ -1,808 +0,0 @@
/*
* websupport.js
* ~~~~~~~~~~~~~
*
* sphinx.websupport utilties for all documentation.
*
* :copyright: Copyright 2007-2011 by the Sphinx team, see AUTHORS.
* :license: BSD, see LICENSE for details.
*
*/
(function($) {
$.fn.autogrow = function() {
return this.each(function() {
var textarea = this;
$.fn.autogrow.resize(textarea);
$(textarea)
.focus(function() {
textarea.interval = setInterval(function() {
$.fn.autogrow.resize(textarea);
}, 500);
})
.blur(function() {
clearInterval(textarea.interval);
});
});
};
$.fn.autogrow.resize = function(textarea) {
var lineHeight = parseInt($(textarea).css('line-height'), 10);
var lines = textarea.value.split('\n');
var columns = textarea.cols;
var lineCount = 0;
$.each(lines, function() {
lineCount += Math.ceil(this.length / columns) || 1;
});
var height = lineHeight * (lineCount + 1);
$(textarea).css('height', height);
};
})(jQuery);
(function($) {
var comp, by;
function init() {
initEvents();
initComparator();
}
function initEvents() {
$('a.comment-close').live("click", function(event) {
event.preventDefault();
hide($(this).attr('id').substring(2));
});
$('a.vote').live("click", function(event) {
event.preventDefault();
handleVote($(this));
});
$('a.reply').live("click", function(event) {
event.preventDefault();
openReply($(this).attr('id').substring(2));
});
$('a.close-reply').live("click", function(event) {
event.preventDefault();
closeReply($(this).attr('id').substring(2));
});
$('a.sort-option').live("click", function(event) {
event.preventDefault();
handleReSort($(this));
});
$('a.show-proposal').live("click", function(event) {
event.preventDefault();
showProposal($(this).attr('id').substring(2));
});
$('a.hide-proposal').live("click", function(event) {
event.preventDefault();
hideProposal($(this).attr('id').substring(2));
});
$('a.show-propose-change').live("click", function(event) {
event.preventDefault();
showProposeChange($(this).attr('id').substring(2));
});
$('a.hide-propose-change').live("click", function(event) {
event.preventDefault();
hideProposeChange($(this).attr('id').substring(2));
});
$('a.accept-comment').live("click", function(event) {
event.preventDefault();
acceptComment($(this).attr('id').substring(2));
});
$('a.delete-comment').live("click", function(event) {
event.preventDefault();
deleteComment($(this).attr('id').substring(2));
});
$('a.comment-markup').live("click", function(event) {
event.preventDefault();
toggleCommentMarkupBox($(this).attr('id').substring(2));
});
}
/**
* Set comp, which is a comparator function used for sorting and
* inserting comments into the list.
*/
function setComparator() {
// If the first three letters are "asc", sort in ascending order
// and remove the prefix.
if (by.substring(0,3) == 'asc') {
var i = by.substring(3);
comp = function(a, b) { return a[i] - b[i]; };
} else {
// Otherwise sort in descending order.
comp = function(a, b) { return b[by] - a[by]; };
}
// Reset link styles and format the selected sort option.
$('a.sel').attr('href', '#').removeClass('sel');
$('a.by' + by).removeAttr('href').addClass('sel');
}
/**
* Create a comp function. If the user has preferences stored in
* the sortBy cookie, use those, otherwise use the default.
*/
function initComparator() {
by = 'rating'; // Default to sort by rating.
// If the sortBy cookie is set, use that instead.
if (document.cookie.length > 0) {
var start = document.cookie.indexOf('sortBy=');
if (start != -1) {
start = start + 7;
var end = document.cookie.indexOf(";", start);
if (end == -1) {
end = document.cookie.length;
by = unescape(document.cookie.substring(start, end));
}
}
}
setComparator();
}
/**
* Show a comment div.
*/
function show(id) {
$('#ao' + id).hide();
$('#ah' + id).show();
var context = $.extend({id: id}, opts);
var popup = $(renderTemplate(popupTemplate, context)).hide();
popup.find('textarea[name="proposal"]').hide();
popup.find('a.by' + by).addClass('sel');
var form = popup.find('#cf' + id);
form.submit(function(event) {
event.preventDefault();
addComment(form);
});
$('#s' + id).after(popup);
popup.slideDown('fast', function() {
getComments(id);
});
}
/**
* Hide a comment div.
*/
function hide(id) {
$('#ah' + id).hide();
$('#ao' + id).show();
var div = $('#sc' + id);
div.slideUp('fast', function() {
div.remove();
});
}
/**
* Perform an ajax request to get comments for a node
* and insert the comments into the comments tree.
*/
function getComments(id) {
$.ajax({
type: 'GET',
url: opts.getCommentsURL,
data: {node: id},
success: function(data, textStatus, request) {
var ul = $('#cl' + id);
var speed = 100;
$('#cf' + id)
.find('textarea[name="proposal"]')
.data('source', data.source);
if (data.comments.length === 0) {
ul.html('<li>No comments yet.</li>');
ul.data('empty', true);
} else {
// If there are comments, sort them and put them in the list.
var comments = sortComments(data.comments);
speed = data.comments.length * 100;
appendComments(comments, ul);
ul.data('empty', false);
}
$('#cn' + id).slideUp(speed + 200);
ul.slideDown(speed);
},
error: function(request, textStatus, error) {
showError('Oops, there was a problem retrieving the comments.');
},
dataType: 'json'
});
}
/**
* Add a comment via ajax and insert the comment into the comment tree.
*/
function addComment(form) {
var node_id = form.find('input[name="node"]').val();
var parent_id = form.find('input[name="parent"]').val();
var text = form.find('textarea[name="comment"]').val();
var proposal = form.find('textarea[name="proposal"]').val();
if (text == '') {
showError('Please enter a comment.');
return;
}
// Disable the form that is being submitted.
form.find('textarea,input').attr('disabled', 'disabled');
// Send the comment to the server.
$.ajax({
type: "POST",
url: opts.addCommentURL,
dataType: 'json',
data: {
node: node_id,
parent: parent_id,
text: text,
proposal: proposal
},
success: function(data, textStatus, error) {
// Reset the form.
if (node_id) {
hideProposeChange(node_id);
}
form.find('textarea')
.val('')
.add(form.find('input'))
.removeAttr('disabled');
var ul = $('#cl' + (node_id || parent_id));
if (ul.data('empty')) {
$(ul).empty();
ul.data('empty', false);
}
insertComment(data.comment);
var ao = $('#ao' + node_id);
ao.find('img').attr({'src': opts.commentBrightImage});
if (node_id) {
// if this was a "root" comment, remove the commenting box
// (the user can get it back by reopening the comment popup)
$('#ca' + node_id).slideUp();
}
},
error: function(request, textStatus, error) {
form.find('textarea,input').removeAttr('disabled');
showError('Oops, there was a problem adding the comment.');
}
});
}
/**
* Recursively append comments to the main comment list and children
* lists, creating the comment tree.
*/
function appendComments(comments, ul) {
$.each(comments, function() {
var div = createCommentDiv(this);
ul.append($(document.createElement('li')).html(div));
appendComments(this.children, div.find('ul.comment-children'));
// To avoid stagnating data, don't store the comments children in data.
this.children = null;
div.data('comment', this);
});
}
/**
* After adding a new comment, it must be inserted in the correct
* location in the comment tree.
*/
function insertComment(comment) {
var div = createCommentDiv(comment);
// To avoid stagnating data, don't store the comments children in data.
comment.children = null;
div.data('comment', comment);
var ul = $('#cl' + (comment.node || comment.parent));
var siblings = getChildren(ul);
var li = $(document.createElement('li'));
li.hide();
// Determine where in the parents children list to insert this comment.
for(i=0; i < siblings.length; i++) {
if (comp(comment, siblings[i]) <= 0) {
$('#cd' + siblings[i].id)
.parent()
.before(li.html(div));
li.slideDown('fast');
return;
}
}
// If we get here, this comment rates lower than all the others,
// or it is the only comment in the list.
ul.append(li.html(div));
li.slideDown('fast');
}
function acceptComment(id) {
$.ajax({
type: 'POST',
url: opts.acceptCommentURL,
data: {id: id},
success: function(data, textStatus, request) {
$('#cm' + id).fadeOut('fast');
$('#cd' + id).removeClass('moderate');
},
error: function(request, textStatus, error) {
showError('Oops, there was a problem accepting the comment.');
}
});
}
function deleteComment(id) {
$.ajax({
type: 'POST',
url: opts.deleteCommentURL,
data: {id: id},
success: function(data, textStatus, request) {
var div = $('#cd' + id);
if (data == 'delete') {
// Moderator mode: remove the comment and all children immediately
div.slideUp('fast', function() {
div.remove();
});
return;
}
// User mode: only mark the comment as deleted
div
.find('span.user-id:first')
.text('[deleted]').end()
.find('div.comment-text:first')
.text('[deleted]').end()
.find('#cm' + id + ', #dc' + id + ', #ac' + id + ', #rc' + id +
', #sp' + id + ', #hp' + id + ', #cr' + id + ', #rl' + id)
.remove();
var comment = div.data('comment');
comment.username = '[deleted]';
comment.text = '[deleted]';
div.data('comment', comment);
},
error: function(request, textStatus, error) {
showError('Oops, there was a problem deleting the comment.');
}
});
}
function showProposal(id) {
$('#sp' + id).hide();
$('#hp' + id).show();
$('#pr' + id).slideDown('fast');
}
function hideProposal(id) {
$('#hp' + id).hide();
$('#sp' + id).show();
$('#pr' + id).slideUp('fast');
}
function showProposeChange(id) {
$('#pc' + id).hide();
$('#hc' + id).show();
var textarea = $('#pt' + id);
textarea.val(textarea.data('source'));
$.fn.autogrow.resize(textarea[0]);
textarea.slideDown('fast');
}
function hideProposeChange(id) {
$('#hc' + id).hide();
$('#pc' + id).show();
var textarea = $('#pt' + id);
textarea.val('').removeAttr('disabled');
textarea.slideUp('fast');
}
function toggleCommentMarkupBox(id) {
$('#mb' + id).toggle();
}
/** Handle when the user clicks on a sort by link. */
function handleReSort(link) {
var classes = link.attr('class').split(/\s+/);
for (var i=0; i<classes.length; i++) {
if (classes[i] != 'sort-option') {
by = classes[i].substring(2);
}
}
setComparator();
// Save/update the sortBy cookie.
var expiration = new Date();
expiration.setDate(expiration.getDate() + 365);
document.cookie= 'sortBy=' + escape(by) +
';expires=' + expiration.toUTCString();
$('ul.comment-ul').each(function(index, ul) {
var comments = getChildren($(ul), true);
comments = sortComments(comments);
appendComments(comments, $(ul).empty());
});
}
/**
* Function to process a vote when a user clicks an arrow.
*/
function handleVote(link) {
if (!opts.voting) {
showError("You'll need to login to vote.");
return;
}
var id = link.attr('id');
if (!id) {
// Didn't click on one of the voting arrows.
return;
}
// If it is an unvote, the new vote value is 0,
// Otherwise it's 1 for an upvote, or -1 for a downvote.
var value = 0;
if (id.charAt(1) != 'u') {
value = id.charAt(0) == 'u' ? 1 : -1;
}
// The data to be sent to the server.
var d = {
comment_id: id.substring(2),
value: value
};
// Swap the vote and unvote links.
link.hide();
$('#' + id.charAt(0) + (id.charAt(1) == 'u' ? 'v' : 'u') + d.comment_id)
.show();
// The div the comment is displayed in.
var div = $('div#cd' + d.comment_id);
var data = div.data('comment');
// If this is not an unvote, and the other vote arrow has
// already been pressed, unpress it.
if ((d.value !== 0) && (data.vote === d.value * -1)) {
$('#' + (d.value == 1 ? 'd' : 'u') + 'u' + d.comment_id).hide();
$('#' + (d.value == 1 ? 'd' : 'u') + 'v' + d.comment_id).show();
}
// Update the comments rating in the local data.
data.rating += (data.vote === 0) ? d.value : (d.value - data.vote);
data.vote = d.value;
div.data('comment', data);
// Change the rating text.
div.find('.rating:first')
.text(data.rating + ' point' + (data.rating == 1 ? '' : 's'));
// Send the vote information to the server.
$.ajax({
type: "POST",
url: opts.processVoteURL,
data: d,
error: function(request, textStatus, error) {
showError('Oops, there was a problem casting that vote.');
}
});
}
/**
* Open a reply form used to reply to an existing comment.
*/
function openReply(id) {
// Swap out the reply link for the hide link
$('#rl' + id).hide();
$('#cr' + id).show();
// Add the reply li to the children ul.
var div = $(renderTemplate(replyTemplate, {id: id})).hide();
$('#cl' + id)
.prepend(div)
// Setup the submit handler for the reply form.
.find('#rf' + id)
.submit(function(event) {
event.preventDefault();
addComment($('#rf' + id));
closeReply(id);
})
.find('input[type=button]')
.click(function() {
closeReply(id);
});
div.slideDown('fast', function() {
$('#rf' + id).find('textarea').focus();
});
}
/**
* Close the reply form opened with openReply.
*/
function closeReply(id) {
// Remove the reply div from the DOM.
$('#rd' + id).slideUp('fast', function() {
$(this).remove();
});
// Swap out the hide link for the reply link
$('#cr' + id).hide();
$('#rl' + id).show();
}
/**
* Recursively sort a tree of comments using the comp comparator.
*/
function sortComments(comments) {
comments.sort(comp);
$.each(comments, function() {
this.children = sortComments(this.children);
});
return comments;
}
/**
* Get the children comments from a ul. If recursive is true,
* recursively include childrens' children.
*/
function getChildren(ul, recursive) {
var children = [];
ul.children().children("[id^='cd']")
.each(function() {
var comment = $(this).data('comment');
if (recursive)
comment.children = getChildren($(this).find('#cl' + comment.id), true);
children.push(comment);
});
return children;
}
/** Create a div to display a comment in. */
function createCommentDiv(comment) {
if (!comment.displayed && !opts.moderator) {
return $('<div class="moderate">Thank you! Your comment will show up '
+ 'once it is has been approved by a moderator.</div>');
}
// Prettify the comment rating.
comment.pretty_rating = comment.rating + ' point' +
(comment.rating == 1 ? '' : 's');
// Make a class (for displaying not yet moderated comments differently)
comment.css_class = comment.displayed ? '' : ' moderate';
// Create a div for this comment.
var context = $.extend({}, opts, comment);
var div = $(renderTemplate(commentTemplate, context));
// If the user has voted on this comment, highlight the correct arrow.
if (comment.vote) {
var direction = (comment.vote == 1) ? 'u' : 'd';
div.find('#' + direction + 'v' + comment.id).hide();
div.find('#' + direction + 'u' + comment.id).show();
}
if (opts.moderator || comment.text != '[deleted]') {
div.find('a.reply').show();
if (comment.proposal_diff)
div.find('#sp' + comment.id).show();
if (opts.moderator && !comment.displayed)
div.find('#cm' + comment.id).show();
if (opts.moderator || (opts.username == comment.username))
div.find('#dc' + comment.id).show();
}
return div;
}
/**
* A simple template renderer. Placeholders such as <%id%> are replaced
* by context['id'] with items being escaped. Placeholders such as <#id#>
* are not escaped.
*/
function renderTemplate(template, context) {
var esc = $(document.createElement('div'));
function handle(ph, escape) {
var cur = context;
$.each(ph.split('.'), function() {
cur = cur[this];
});
return escape ? esc.text(cur || "").html() : cur;
}
return template.replace(/<([%#])([\w\.]*)\1>/g, function() {
return handle(arguments[2], arguments[1] == '%' ? true : false);
});
}
/** Flash an error message briefly. */
function showError(message) {
$(document.createElement('div')).attr({'class': 'popup-error'})
.append($(document.createElement('div'))
.attr({'class': 'error-message'}).text(message))
.appendTo('body')
.fadeIn("slow")
.delay(2000)
.fadeOut("slow");
}
/** Add a link the user uses to open the comments popup. */
$.fn.comment = function() {
return this.each(function() {
var id = $(this).attr('id').substring(1);
var count = COMMENT_METADATA[id];
var title = count + ' comment' + (count == 1 ? '' : 's');
var image = count > 0 ? opts.commentBrightImage : opts.commentImage;
var addcls = count == 0 ? ' nocomment' : '';
$(this)
.append(
$(document.createElement('a')).attr({
href: '#',
'class': 'sphinx-comment-open' + addcls,
id: 'ao' + id
})
.append($(document.createElement('img')).attr({
src: image,
alt: 'comment',
title: title
}))
.click(function(event) {
event.preventDefault();
show($(this).attr('id').substring(2));
})
)
.append(
$(document.createElement('a')).attr({
href: '#',
'class': 'sphinx-comment-close hidden',
id: 'ah' + id
})
.append($(document.createElement('img')).attr({
src: opts.closeCommentImage,
alt: 'close',
title: 'close'
}))
.click(function(event) {
event.preventDefault();
hide($(this).attr('id').substring(2));
})
);
});
};
var opts = {
processVoteURL: '/_process_vote',
addCommentURL: '/_add_comment',
getCommentsURL: '/_get_comments',
acceptCommentURL: '/_accept_comment',
deleteCommentURL: '/_delete_comment',
commentImage: '/static/_static/comment.png',
closeCommentImage: '/static/_static/comment-close.png',
loadingImage: '/static/_static/ajax-loader.gif',
commentBrightImage: '/static/_static/comment-bright.png',
upArrow: '/static/_static/up.png',
downArrow: '/static/_static/down.png',
upArrowPressed: '/static/_static/up-pressed.png',
downArrowPressed: '/static/_static/down-pressed.png',
voting: false,
moderator: false
};
if (typeof COMMENT_OPTIONS != "undefined") {
opts = jQuery.extend(opts, COMMENT_OPTIONS);
}
var popupTemplate = '\
<div class="sphinx-comments" id="sc<%id%>">\
<p class="sort-options">\
Sort by:\
<a href="#" class="sort-option byrating">best rated</a>\
<a href="#" class="sort-option byascage">newest</a>\
<a href="#" class="sort-option byage">oldest</a>\
</p>\
<div class="comment-header">Comments</div>\
<div class="comment-loading" id="cn<%id%>">\
loading comments... <img src="<%loadingImage%>" alt="" /></div>\
<ul id="cl<%id%>" class="comment-ul"></ul>\
<div id="ca<%id%>">\
<p class="add-a-comment">Add a comment\
(<a href="#" class="comment-markup" id="ab<%id%>">markup</a>):</p>\
<div class="comment-markup-box" id="mb<%id%>">\
reStructured text markup: <i>*emph*</i>, <b>**strong**</b>, \
<tt>``code``</tt>, \
code blocks: <tt>::</tt> and an indented block after blank line</div>\
<form method="post" id="cf<%id%>" class="comment-form" action="">\
<textarea name="comment" cols="80"></textarea>\
<p class="propose-button">\
<a href="#" id="pc<%id%>" class="show-propose-change">\
Propose a change &#9657;\
</a>\
<a href="#" id="hc<%id%>" class="hide-propose-change">\
Propose a change &#9663;\
</a>\
</p>\
<textarea name="proposal" id="pt<%id%>" cols="80"\
spellcheck="false"></textarea>\
<input type="submit" value="Add comment" />\
<input type="hidden" name="node" value="<%id%>" />\
<input type="hidden" name="parent" value="" />\
</form>\
</div>\
</div>';
var commentTemplate = '\
<div id="cd<%id%>" class="sphinx-comment<%css_class%>">\
<div class="vote">\
<div class="arrow">\
<a href="#" id="uv<%id%>" class="vote" title="vote up">\
<img src="<%upArrow%>" />\
</a>\
<a href="#" id="uu<%id%>" class="un vote" title="vote up">\
<img src="<%upArrowPressed%>" />\
</a>\
</div>\
<div class="arrow">\
<a href="#" id="dv<%id%>" class="vote" title="vote down">\
<img src="<%downArrow%>" id="da<%id%>" />\
</a>\
<a href="#" id="du<%id%>" class="un vote" title="vote down">\
<img src="<%downArrowPressed%>" />\
</a>\
</div>\
</div>\
<div class="comment-content">\
<p class="tagline comment">\
<span class="user-id"><%username%></span>\
<span class="rating"><%pretty_rating%></span>\
<span class="delta"><%time.delta%></span>\
</p>\
<div class="comment-text comment"><#text#></div>\
<p class="comment-opts comment">\
<a href="#" class="reply hidden" id="rl<%id%>">reply &#9657;</a>\
<a href="#" class="close-reply" id="cr<%id%>">reply &#9663;</a>\
<a href="#" id="sp<%id%>" class="show-proposal">proposal &#9657;</a>\
<a href="#" id="hp<%id%>" class="hide-proposal">proposal &#9663;</a>\
<a href="#" id="dc<%id%>" class="delete-comment hidden">delete</a>\
<span id="cm<%id%>" class="moderation hidden">\
<a href="#" id="ac<%id%>" class="accept-comment">accept</a>\
</span>\
</p>\
<pre class="proposal" id="pr<%id%>">\
<#proposal_diff#>\
</pre>\
<ul class="comment-children" id="cl<%id%>"></ul>\
</div>\
<div class="clearleft"></div>\
</div>\
</div>';
var replyTemplate = '\
<li>\
<div class="reply-div" id="rd<%id%>">\
<form id="rf<%id%>">\
<textarea name="comment" cols="80"></textarea>\
<input type="submit" value="Add reply" />\
<input type="button" value="Cancel" />\
<input type="hidden" name="parent" value="<%id%>" />\
<input type="hidden" name="node" value="" />\
</form>\
</div>\
</li>';
$(document).ready(function() {
init();
});
})(jQuery);
$(document).ready(function() {
// add comment anchors for all paragraphs that are commentable
$('.sphinx-has-comment').comment();
// highlight search words in search results
$("div.context").each(function() {
var params = $.getQueryParameters();
var terms = (params.q) ? params.q[0].split(/\s+/) : [];
var result = $(this);
$.each(terms, function() {
result.highlightText(this.toLowerCase(), 'highlighted');
});
});
// directly open comment window if requested
var anchor = document.location.hash;
if (anchor.substring(0, 9) == '#comment-') {
$('#ao' + anchor.substring(9)).click();
document.location.hash = '#s' + anchor.substring(9);
}
});

View File

@ -1,662 +0,0 @@
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN"
"http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
<title>client HPLeftHandClient &mdash; HP LeftHand REST Client 1.0.0 documentation</title>
<link rel="stylesheet" href="../../_static/default.css" type="text/css" />
<link rel="stylesheet" href="../../_static/pygments.css" type="text/css" />
<script type="text/javascript">
var DOCUMENTATION_OPTIONS = {
URL_ROOT: '../../',
VERSION: '1.0.0',
COLLAPSE_INDEX: false,
FILE_SUFFIX: '.html',
HAS_SOURCE: true
};
</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>
<link rel="top" title="HP LeftHand REST Client 1.0.0 documentation" href="../../index.html" />
<link rel="up" title="client HPLeftHandClient" href="index.html" />
<link rel="next" title="exceptions HTTP Exceptions" href="exceptions.html" />
<link rel="prev" title="client HPLeftHandClient" href="index.html" />
</head>
<body>
<div class="related">
<h3>Navigation</h3>
<ul>
<li class="right" style="margin-right: 10px">
<a href="../../genindex.html" title="General Index"
accesskey="I">index</a></li>
<li class="right" >
<a href="../../py-modindex.html" title="Python Module Index"
>modules</a> |</li>
<li class="right" >
<a href="exceptions.html" title="exceptions HTTP Exceptions"
accesskey="N">next</a> |</li>
<li class="right" >
<a href="index.html" title="client HPLeftHandClient"
accesskey="P">previous</a> |</li>
<li><a href="../../index.html">HP LeftHand REST Client 1.0.0 documentation</a> &raquo;</li>
<li><a href="../index.html" >API Documentation</a> &raquo;</li>
<li><a href="index.html" accesskey="U"><tt class="docutils literal docutils literal"><span class="pre">client</span></tt> &#8211; HPLeftHandClient</a> &raquo;</li>
</ul>
</div>
<div class="document">
<div class="documentwrapper">
<div class="bodywrapper">
<div class="body">
<div class="section" id="module-hplefthandclient.client">
<span id="client-hplefthandclient"></span><h1><tt class="xref py py-mod docutils literal"><span class="pre">client</span></tt> &#8211; HPLeftHandClient<a class="headerlink" href="#module-hplefthandclient.client" title="Permalink to this headline"></a></h1>
<p>HPLeftHand REST Client</p>
<table class="docutils field-list" frame="void" rules="none">
<col class="field-name" />
<col class="field-body" />
<tbody valign="top">
<tr class="field-odd field"><th class="field-name">Author:</th><td class="field-body">Kurt Martin</td>
</tr>
<tr class="field-even field"><th class="field-name">Description:</th><td class="field-body">This is the LeftHand/StoreVirtual Client that talks to the</td>
</tr>
</tbody>
</table>
<p>LeftHand OS REST Service.</p>
<p>This client requires and works with version 11.5 of the LeftHand firmware</p>
<dl class="class">
<dt id="hplefthandclient.client.HPLeftHandClient">
<em class="property">class </em><tt class="descclassname">hplefthandclient.client.</tt><tt class="descname">HPLeftHandClient</tt><big>(</big><em>api_url</em><big>)</big><a class="reference internal" href="../../_modules/hplefthandclient/client.html#HPLeftHandClient"><span class="viewcode-link">[source]</span></a><a class="headerlink" href="#hplefthandclient.client.HPLeftHandClient" title="Permalink to this definition"></a></dt>
<dd><dl class="method">
<dt id="hplefthandclient.client.HPLeftHandClient.debug_rest">
<tt class="descname">debug_rest</tt><big>(</big><em>flag</em><big>)</big><a class="reference internal" href="../../_modules/hplefthandclient/client.html#HPLeftHandClient.debug_rest"><span class="viewcode-link">[source]</span></a><a class="headerlink" href="#hplefthandclient.client.HPLeftHandClient.debug_rest" title="Permalink to this definition"></a></dt>
<dd><p>This is useful for debugging requests to LeftHand</p>
<table class="docutils field-list" frame="void" rules="none">
<col class="field-name" />
<col class="field-body" />
<tbody valign="top">
<tr class="field-odd field"><th class="field-name">Parameters:</th><td class="field-body"><strong>flag</strong> (<em>bool</em>) &#8211; set to True to enable debugging</td>
</tr>
</tbody>
</table>
</dd></dl>
<dl class="method">
<dt id="hplefthandclient.client.HPLeftHandClient.login">
<tt class="descname">login</tt><big>(</big><em>username</em>, <em>password</em><big>)</big><a class="reference internal" href="../../_modules/hplefthandclient/client.html#HPLeftHandClient.login"><span class="viewcode-link">[source]</span></a><a class="headerlink" href="#hplefthandclient.client.HPLeftHandClient.login" title="Permalink to this definition"></a></dt>
<dd><p>This authenticates against the LH OS REST server and creates a session.</p>
<table class="docutils field-list" frame="void" rules="none">
<col class="field-name" />
<col class="field-body" />
<tbody valign="top">
<tr class="field-odd field"><th class="field-name">Parameters:</th><td class="field-body"><ul class="first simple">
<li><strong>username</strong> (<em>str</em>) &#8211; The username</li>
<li><strong>password</strong> (<em>str</em>) &#8211; The password</li>
</ul>
</td>
</tr>
<tr class="field-even field"><th class="field-name">Returns:</th><td class="field-body"><p class="first last">None</p>
</td>
</tr>
</tbody>
</table>
</dd></dl>
<dl class="method">
<dt id="hplefthandclient.client.HPLeftHandClient.logout">
<tt class="descname">logout</tt><big>(</big><big>)</big><a class="reference internal" href="../../_modules/hplefthandclient/client.html#HPLeftHandClient.logout"><span class="viewcode-link">[source]</span></a><a class="headerlink" href="#hplefthandclient.client.HPLeftHandClient.logout" title="Permalink to this definition"></a></dt>
<dd><p>This destroys the session and logs out from the LH OS server</p>
<table class="docutils field-list" frame="void" rules="none">
<col class="field-name" />
<col class="field-body" />
<tbody valign="top">
<tr class="field-odd field"><th class="field-name">Returns:</th><td class="field-body">None</td>
</tr>
</tbody>
</table>
</dd></dl>
<dl class="method">
<dt id="hplefthandclient.client.HPLeftHandClient.getClusters">
<tt class="descname">getClusters</tt><big>(</big><big>)</big><a class="reference internal" href="../../_modules/hplefthandclient/client.html#HPLeftHandClient.getClusters"><span class="viewcode-link">[source]</span></a><a class="headerlink" href="#hplefthandclient.client.HPLeftHandClient.getClusters" title="Permalink to this definition"></a></dt>
<dd><p>Get the list of Clusters</p>
<table class="docutils field-list" frame="void" rules="none">
<col class="field-name" />
<col class="field-body" />
<tbody valign="top">
<tr class="field-odd field"><th class="field-name">Returns:</th><td class="field-body">list of Clusters</td>
</tr>
</tbody>
</table>
</dd></dl>
<dl class="method">
<dt id="hplefthandclient.client.HPLeftHandClient.getCluster">
<tt class="descname">getCluster</tt><big>(</big><em>cluster_id</em><big>)</big><a class="reference internal" href="../../_modules/hplefthandclient/client.html#HPLeftHandClient.getCluster"><span class="viewcode-link">[source]</span></a><a class="headerlink" href="#hplefthandclient.client.HPLeftHandClient.getCluster" title="Permalink to this definition"></a></dt>
<dd><p>Get information about a Cluster</p>
<table class="docutils field-list" frame="void" rules="none">
<col class="field-name" />
<col class="field-body" />
<tbody valign="top">
<tr class="field-odd field"><th class="field-name">Parameters:</th><td class="field-body"><strong>cluster_id</strong> (<em>str</em>) &#8211; The id of the cluster to find</td>
</tr>
<tr class="field-even field"><th class="field-name">Returns:</th><td class="field-body">cluster</td>
</tr>
</tbody>
</table>
</dd></dl>
<dl class="method">
<dt id="hplefthandclient.client.HPLeftHandClient.getClusterByName">
<tt class="descname">getClusterByName</tt><big>(</big><em>name</em><big>)</big><a class="reference internal" href="../../_modules/hplefthandclient/client.html#HPLeftHandClient.getClusterByName"><span class="viewcode-link">[source]</span></a><a class="headerlink" href="#hplefthandclient.client.HPLeftHandClient.getClusterByName" title="Permalink to this definition"></a></dt>
<dd><p>Get information about a cluster by name</p>
<table class="docutils field-list" frame="void" rules="none">
<col class="field-name" />
<col class="field-body" />
<tbody valign="top">
<tr class="field-odd field"><th class="field-name">Parameters:</th><td class="field-body"><strong>name</strong> (<em>str</em>) &#8211; The name of the cluster to find</td>
</tr>
<tr class="field-even field"><th class="field-name">Returns:</th><td class="field-body">cluster</td>
</tr>
<tr class="field-odd field"><th class="field-name">Raises :</th><td class="field-body"><a class="reference internal" href="../../hplefthandclient.html#hplefthandclient.exceptions.HTTPNotFound" title="hplefthandclient.exceptions.HTTPNotFound"><tt class="xref py py-class docutils literal"><span class="pre">HTTPNotFound</span></tt></a> -</td>
</tr>
</tbody>
</table>
<p>NON_EXISTENT_CLUSTER - cluster doesn&#8217;t exist</p>
</dd></dl>
<dl class="method">
<dt id="hplefthandclient.client.HPLeftHandClient.getServers">
<tt class="descname">getServers</tt><big>(</big><big>)</big><a class="reference internal" href="../../_modules/hplefthandclient/client.html#HPLeftHandClient.getServers"><span class="viewcode-link">[source]</span></a><a class="headerlink" href="#hplefthandclient.client.HPLeftHandClient.getServers" title="Permalink to this definition"></a></dt>
<dd><p>Get the list of Servers</p>
<table class="docutils field-list" frame="void" rules="none">
<col class="field-name" />
<col class="field-body" />
<tbody valign="top">
<tr class="field-odd field"><th class="field-name">Returns:</th><td class="field-body">list of Servers</td>
</tr>
</tbody>
</table>
</dd></dl>
<dl class="method">
<dt id="hplefthandclient.client.HPLeftHandClient.getServer">
<tt class="descname">getServer</tt><big>(</big><em>server_id</em><big>)</big><a class="reference internal" href="../../_modules/hplefthandclient/client.html#HPLeftHandClient.getServer"><span class="viewcode-link">[source]</span></a><a class="headerlink" href="#hplefthandclient.client.HPLeftHandClient.getServer" title="Permalink to this definition"></a></dt>
<dd><p>Get information about a server</p>
<table class="docutils field-list" frame="void" rules="none">
<col class="field-name" />
<col class="field-body" />
<tbody valign="top">
<tr class="field-odd field"><th class="field-name">Parameters:</th><td class="field-body"><strong>server_id</strong> (<em>str</em>) &#8211; The id of the server to find</td>
</tr>
<tr class="field-even field"><th class="field-name">Returns:</th><td class="field-body">server</td>
</tr>
<tr class="field-odd field"><th class="field-name">Raises :</th><td class="field-body"><a class="reference internal" href="../../hplefthandclient.html#hplefthandclient.exceptions.HTTPServerError" title="hplefthandclient.exceptions.HTTPServerError"><tt class="xref py py-class docutils literal"><span class="pre">HTTPServerError</span></tt></a></td>
</tr>
</tbody>
</table>
</dd></dl>
<dl class="method">
<dt id="hplefthandclient.client.HPLeftHandClient.getServerByName">
<tt class="descname">getServerByName</tt><big>(</big><em>name</em><big>)</big><a class="reference internal" href="../../_modules/hplefthandclient/client.html#HPLeftHandClient.getServerByName"><span class="viewcode-link">[source]</span></a><a class="headerlink" href="#hplefthandclient.client.HPLeftHandClient.getServerByName" title="Permalink to this definition"></a></dt>
<dd><p>Get information about a server by name</p>
<table class="docutils field-list" frame="void" rules="none">
<col class="field-name" />
<col class="field-body" />
<tbody valign="top">
<tr class="field-odd field"><th class="field-name">Parameters:</th><td class="field-body"><strong>name</strong> (<em>str</em>) &#8211; The name of the server to find</td>
</tr>
<tr class="field-even field"><th class="field-name">Returns:</th><td class="field-body">server</td>
</tr>
<tr class="field-odd field"><th class="field-name">Raises :</th><td class="field-body"><a class="reference internal" href="../../hplefthandclient.html#hplefthandclient.exceptions.HTTPNotFound" title="hplefthandclient.exceptions.HTTPNotFound"><tt class="xref py py-class docutils literal"><span class="pre">HTTPNotFound</span></tt></a> -</td>
</tr>
</tbody>
</table>
<p>NON_EXISTENT_SERVER - server doesn&#8217;t exist</p>
</dd></dl>
<dl class="method">
<dt id="hplefthandclient.client.HPLeftHandClient.createServer">
<tt class="descname">createServer</tt><big>(</big><em>name</em>, <em>iqn</em>, <em>optional=None</em><big>)</big><a class="reference internal" href="../../_modules/hplefthandclient/client.html#HPLeftHandClient.createServer"><span class="viewcode-link">[source]</span></a><a class="headerlink" href="#hplefthandclient.client.HPLeftHandClient.createServer" title="Permalink to this definition"></a></dt>
<dd><p>Create a server by name</p>
<table class="docutils field-list" frame="void" rules="none">
<col class="field-name" />
<col class="field-body" />
<tbody valign="top">
<tr class="field-odd field"><th class="field-name">Parameters:</th><td class="field-body"><ul class="first last simple">
<li><strong>name</strong> (<em>str</em>) &#8211; The name of the server to create</li>
<li><strong>iqn</strong> &#8211; The iSCSI qualified name</li>
<li><strong>optional</strong> (<em>dict</em>) &#8211; Dictionary of optional params</li>
</ul>
</td>
</tr>
</tbody>
</table>
<div class="highlight-python"><div class="highlight"><pre><span class="n">optional</span> <span class="o">=</span> <span class="p">{</span>
<span class="s">&#39;description&#39;</span> <span class="p">:</span> <span class="s">&quot;some comment&quot;</span><span class="p">,</span>
<span class="s">&#39;iscsiEnabled&#39;</span> <span class="p">:</span> <span class="bp">True</span><span class="p">,</span>
<span class="s">&#39;chapName&#39;</span><span class="p">:</span> <span class="s">&quot;some chap name&quot;</span><span class="p">,</span>
<span class="s">&#39;chapAuthenticationRequired&#39;</span><span class="p">:</span> <span class="bp">False</span><span class="p">,</span>
<span class="s">&#39;chapInitiatorSecret&#39;</span><span class="p">:</span> <span class="s">&quot;initiator secret&quot;</span><span class="p">,</span>
<span class="s">&#39;chapTargetSecret&#39;</span><span class="p">:</span> <span class="s">&quot;target secret&quot;</span><span class="p">,</span>
<span class="s">&#39;iscsiLoadBalancingEnabled&#39;</span><span class="p">:</span> <span class="bp">True</span><span class="p">,</span>
<span class="s">&#39;controllingServerName&#39;</span><span class="p">:</span> <span class="s">&quot;server name&quot;</span><span class="p">,</span>
<span class="s">&#39;fibreChannelEnabled&#39;</span><span class="p">:</span> <span class="bp">False</span><span class="p">,</span>
<span class="s">&#39;inServerCluster&quot;: True</span>
<span class="p">}</span>
</pre></div>
</div>
<table class="docutils field-list" frame="void" rules="none">
<col class="field-name" />
<col class="field-body" />
<tbody valign="top">
<tr class="field-odd field"><th class="field-name">Returns:</th><td class="field-body">server</td>
</tr>
<tr class="field-even field"><th class="field-name">Raises :</th><td class="field-body"><a class="reference internal" href="../../hplefthandclient.html#hplefthandclient.exceptions.HTTPNotFound" title="hplefthandclient.exceptions.HTTPNotFound"><tt class="xref py py-class docutils literal"><span class="pre">HTTPNotFound</span></tt></a> -</td>
</tr>
</tbody>
</table>
<p>NON_EXISTENT_SERVER - server doesn&#8217;t exist</p>
</dd></dl>
<dl class="method">
<dt id="hplefthandclient.client.HPLeftHandClient.deleteServer">
<tt class="descname">deleteServer</tt><big>(</big><em>server_id</em><big>)</big><a class="reference internal" href="../../_modules/hplefthandclient/client.html#HPLeftHandClient.deleteServer"><span class="viewcode-link">[source]</span></a><a class="headerlink" href="#hplefthandclient.client.HPLeftHandClient.deleteServer" title="Permalink to this definition"></a></dt>
<dd><p>Delete a Server</p>
<table class="docutils field-list" frame="void" rules="none">
<col class="field-name" />
<col class="field-body" />
<tbody valign="top">
<tr class="field-odd field"><th class="field-name">Parameters:</th><td class="field-body"><strong>server_id</strong> &#8211; the server ID to delete</td>
</tr>
<tr class="field-even field"><th class="field-name">Raises :</th><td class="field-body"><a class="reference internal" href="../../hplefthandclient.html#hplefthandclient.exceptions.HTTPNotFound" title="hplefthandclient.exceptions.HTTPNotFound"><tt class="xref py py-class docutils literal"><span class="pre">HTTPNotFound</span></tt></a> -</td>
</tr>
</tbody>
</table>
<p>NON_EXISTENT_SERVER - The server does not exist</p>
</dd></dl>
<dl class="method">
<dt id="hplefthandclient.client.HPLeftHandClient.getSnapshots">
<tt class="descname">getSnapshots</tt><big>(</big><big>)</big><a class="reference internal" href="../../_modules/hplefthandclient/client.html#HPLeftHandClient.getSnapshots"><span class="viewcode-link">[source]</span></a><a class="headerlink" href="#hplefthandclient.client.HPLeftHandClient.getSnapshots" title="Permalink to this definition"></a></dt>
<dd><p>Get the list of Snapshots</p>
<table class="docutils field-list" frame="void" rules="none">
<col class="field-name" />
<col class="field-body" />
<tbody valign="top">
<tr class="field-odd field"><th class="field-name">Returns:</th><td class="field-body">list of Snapshots</td>
</tr>
</tbody>
</table>
</dd></dl>
<dl class="method">
<dt id="hplefthandclient.client.HPLeftHandClient.getSnapshot">
<tt class="descname">getSnapshot</tt><big>(</big><em>snapshot_id</em><big>)</big><a class="reference internal" href="../../_modules/hplefthandclient/client.html#HPLeftHandClient.getSnapshot"><span class="viewcode-link">[source]</span></a><a class="headerlink" href="#hplefthandclient.client.HPLeftHandClient.getSnapshot" title="Permalink to this definition"></a></dt>
<dd><p>Get information about a Snapshot</p>
<table class="docutils field-list" frame="void" rules="none">
<col class="field-name" />
<col class="field-body" />
<tbody valign="top">
<tr class="field-odd field"><th class="field-name">Returns:</th><td class="field-body">snapshot</td>
</tr>
<tr class="field-even field"><th class="field-name">Raises :</th><td class="field-body"><a class="reference internal" href="../../hplefthandclient.html#hplefthandclient.exceptions.HTTPServerError" title="hplefthandclient.exceptions.HTTPServerError"><tt class="xref py py-class docutils literal"><span class="pre">HTTPServerError</span></tt></a></td>
</tr>
</tbody>
</table>
</dd></dl>
<dl class="method">
<dt id="hplefthandclient.client.HPLeftHandClient.getSnapshotByName">
<tt class="descname">getSnapshotByName</tt><big>(</big><em>name</em><big>)</big><a class="reference internal" href="../../_modules/hplefthandclient/client.html#HPLeftHandClient.getSnapshotByName"><span class="viewcode-link">[source]</span></a><a class="headerlink" href="#hplefthandclient.client.HPLeftHandClient.getSnapshotByName" title="Permalink to this definition"></a></dt>
<dd><p>Get information about a snapshot by name</p>
<table class="docutils field-list" frame="void" rules="none">
<col class="field-name" />
<col class="field-body" />
<tbody valign="top">
<tr class="field-odd field"><th class="field-name">Parameters:</th><td class="field-body"><strong>name</strong> &#8211; The name of the snapshot to find</td>
</tr>
<tr class="field-even field"><th class="field-name">Returns:</th><td class="field-body">volume</td>
</tr>
<tr class="field-odd field"><th class="field-name">Raises :</th><td class="field-body"><a class="reference internal" href="../../hplefthandclient.html#hplefthandclient.exceptions.HTTPNotFound" title="hplefthandclient.exceptions.HTTPNotFound"><tt class="xref py py-class docutils literal"><span class="pre">HTTPNotFound</span></tt></a> -</td>
</tr>
</tbody>
</table>
<p>NON_EXISTENT_SNAP - shapshot doesn&#8217;t exist</p>
</dd></dl>
<dl class="method">
<dt id="hplefthandclient.client.HPLeftHandClient.createSnapshot">
<tt class="descname">createSnapshot</tt><big>(</big><em>name</em>, <em>source_volume_id</em>, <em>optional=None</em><big>)</big><a class="reference internal" href="../../_modules/hplefthandclient/client.html#HPLeftHandClient.createSnapshot"><span class="viewcode-link">[source]</span></a><a class="headerlink" href="#hplefthandclient.client.HPLeftHandClient.createSnapshot" title="Permalink to this definition"></a></dt>
<dd><p>Create a snapshot of an existing Volume</p>
<table class="docutils field-list" frame="void" rules="none">
<col class="field-name" />
<col class="field-body" />
<tbody valign="top">
<tr class="field-odd field"><th class="field-name">Parameters:</th><td class="field-body"><ul class="first last simple">
<li><strong>name</strong> (<em>str</em>) &#8211; Name of the Snapshot</li>
<li><strong>source_volume_id</strong> (<em>int</em>) &#8211; The volume you want to snapshot</li>
<li><strong>optional</strong> (<em>dict</em>) &#8211; Dictionary of optional params</li>
</ul>
</td>
</tr>
</tbody>
</table>
<div class="highlight-python"><div class="highlight"><pre><span class="n">optional</span> <span class="o">=</span> <span class="p">{</span>
<span class="s">&#39;description&#39;</span> <span class="p">:</span> <span class="s">&quot;some comment&quot;</span><span class="p">,</span>
<span class="s">&#39;inheritAccess&#39;</span> <span class="p">:</span> <span class="n">false</span>
<span class="p">}</span>
</pre></div>
</div>
</dd></dl>
<dl class="method">
<dt id="hplefthandclient.client.HPLeftHandClient.deleteSnapshot">
<tt class="descname">deleteSnapshot</tt><big>(</big><em>snapshot_id</em><big>)</big><a class="reference internal" href="../../_modules/hplefthandclient/client.html#HPLeftHandClient.deleteSnapshot"><span class="viewcode-link">[source]</span></a><a class="headerlink" href="#hplefthandclient.client.HPLeftHandClient.deleteSnapshot" title="Permalink to this definition"></a></dt>
<dd><p>Delete a Snapshot</p>
<table class="docutils field-list" frame="void" rules="none">
<col class="field-name" />
<col class="field-body" />
<tbody valign="top">
<tr class="field-odd field"><th class="field-name">Parameters:</th><td class="field-body"><strong>snapshot_id</strong> &#8211; the snapshot ID to delete</td>
</tr>
<tr class="field-even field"><th class="field-name">Raises :</th><td class="field-body"><a class="reference internal" href="../../hplefthandclient.html#hplefthandclient.exceptions.HTTPNotFound" title="hplefthandclient.exceptions.HTTPNotFound"><tt class="xref py py-class docutils literal"><span class="pre">HTTPNotFound</span></tt></a> -</td>
</tr>
</tbody>
</table>
<p>NON_EXISTENT_SNAPSHOT - The snapshot does not exist</p>
</dd></dl>
<dl class="method">
<dt id="hplefthandclient.client.HPLeftHandClient.cloneSnapshot">
<tt class="descname">cloneSnapshot</tt><big>(</big><em>name</em>, <em>source_snapshot_id</em>, <em>optional=None</em><big>)</big><a class="reference internal" href="../../_modules/hplefthandclient/client.html#HPLeftHandClient.cloneSnapshot"><span class="viewcode-link">[source]</span></a><a class="headerlink" href="#hplefthandclient.client.HPLeftHandClient.cloneSnapshot" title="Permalink to this definition"></a></dt>
<dd><p>Create a clone of an existing Shapshot</p>
<table class="docutils field-list" frame="void" rules="none">
<col class="field-name" />
<col class="field-body" />
<tbody valign="top">
<tr class="field-odd field"><th class="field-name">Parameters:</th><td class="field-body"><ul class="first last simple">
<li><strong>name</strong> (<em>str</em>) &#8211; Name of the Snapshot clone</li>
<li><strong>source_snapshot_id</strong> (<em>int</em>) &#8211; The snapshot you want to clone</li>
<li><strong>optional</strong> (<em>dict</em>) &#8211; Dictionary of optional params</li>
</ul>
</td>
</tr>
</tbody>
</table>
<div class="highlight-python"><div class="highlight"><pre><span class="n">optional</span> <span class="o">=</span> <span class="p">{</span>
<span class="s">&#39;description&#39;</span> <span class="p">:</span> <span class="s">&quot;some comment&quot;</span>
<span class="p">}</span>
</pre></div>
</div>
</dd></dl>
<dl class="method">
<dt id="hplefthandclient.client.HPLeftHandClient.getVolumes">
<tt class="descname">getVolumes</tt><big>(</big><big>)</big><a class="reference internal" href="../../_modules/hplefthandclient/client.html#HPLeftHandClient.getVolumes"><span class="viewcode-link">[source]</span></a><a class="headerlink" href="#hplefthandclient.client.HPLeftHandClient.getVolumes" title="Permalink to this definition"></a></dt>
<dd><p>Get the list of Volumes</p>
<table class="docutils field-list" frame="void" rules="none">
<col class="field-name" />
<col class="field-body" />
<tbody valign="top">
<tr class="field-odd field"><th class="field-name">Returns:</th><td class="field-body">list of Volumes</td>
</tr>
</tbody>
</table>
</dd></dl>
<dl class="method">
<dt id="hplefthandclient.client.HPLeftHandClient.getVolume">
<tt class="descname">getVolume</tt><big>(</big><em>volume_id</em><big>)</big><a class="reference internal" href="../../_modules/hplefthandclient/client.html#HPLeftHandClient.getVolume"><span class="viewcode-link">[source]</span></a><a class="headerlink" href="#hplefthandclient.client.HPLeftHandClient.getVolume" title="Permalink to this definition"></a></dt>
<dd><p>Get information about a volume</p>
<table class="docutils field-list" frame="void" rules="none">
<col class="field-name" />
<col class="field-body" />
<tbody valign="top">
<tr class="field-odd field"><th class="field-name">Parameters:</th><td class="field-body"><strong>volume_id</strong> (<em>str</em>) &#8211; The id of the volume to find</td>
</tr>
<tr class="field-even field"><th class="field-name">Returns:</th><td class="field-body">volume</td>
</tr>
<tr class="field-odd field"><th class="field-name">Raises :</th><td class="field-body"><a class="reference internal" href="../../hplefthandclient.html#hplefthandclient.exceptions.HTTPNotFound" title="hplefthandclient.exceptions.HTTPNotFound"><tt class="xref py py-class docutils literal"><span class="pre">HTTPNotFound</span></tt></a> -</td>
</tr>
</tbody>
</table>
<p>NON_EXISTENT_VOL - volume doesn&#8217;t exist</p>
</dd></dl>
<dl class="method">
<dt id="hplefthandclient.client.HPLeftHandClient.getVolumeByName">
<tt class="descname">getVolumeByName</tt><big>(</big><em>name</em><big>)</big><a class="reference internal" href="../../_modules/hplefthandclient/client.html#HPLeftHandClient.getVolumeByName"><span class="viewcode-link">[source]</span></a><a class="headerlink" href="#hplefthandclient.client.HPLeftHandClient.getVolumeByName" title="Permalink to this definition"></a></dt>
<dd><p>Get information about a volume by name</p>
<table class="docutils field-list" frame="void" rules="none">
<col class="field-name" />
<col class="field-body" />
<tbody valign="top">
<tr class="field-odd field"><th class="field-name">Parameters:</th><td class="field-body"><strong>name</strong> &#8211; The name of the volume to find</td>
</tr>
<tr class="field-even field"><th class="field-name">Returns:</th><td class="field-body">volume</td>
</tr>
<tr class="field-odd field"><th class="field-name">Raises :</th><td class="field-body"><a class="reference internal" href="../../hplefthandclient.html#hplefthandclient.exceptions.HTTPNotFound" title="hplefthandclient.exceptions.HTTPNotFound"><tt class="xref py py-class docutils literal"><span class="pre">HTTPNotFound</span></tt></a> -</td>
</tr>
</tbody>
</table>
<p>NON_EXISTENT_VOL - volume doesn&#8217;t exist</p>
</dd></dl>
<dl class="method">
<dt id="hplefthandclient.client.HPLeftHandClient.createVolume">
<tt class="descname">createVolume</tt><big>(</big><em>name</em>, <em>cluster_id</em>, <em>size</em>, <em>optional=None</em><big>)</big><a class="reference internal" href="../../_modules/hplefthandclient/client.html#HPLeftHandClient.createVolume"><span class="viewcode-link">[source]</span></a><a class="headerlink" href="#hplefthandclient.client.HPLeftHandClient.createVolume" title="Permalink to this definition"></a></dt>
<dd><p>Create a new volume</p>
<table class="docutils field-list" frame="void" rules="none">
<col class="field-name" />
<col class="field-body" />
<tbody valign="top">
<tr class="field-odd field"><th class="field-name">Parameters:</th><td class="field-body"><ul class="first last simple">
<li><strong>name</strong> (<em>str</em>) &#8211; the name of the volume</li>
<li><strong>cluster_id</strong> (<em>int</em>) &#8211; the cluster Id</li>
<li><strong>sizeKB</strong> (<em>int</em>) &#8211; size in KB for the volume</li>
<li><strong>optional</strong> (<em>dict</em>) &#8211; dict of other optional items</li>
</ul>
</td>
</tr>
</tbody>
</table>
<div class="highlight-python"><div class="highlight"><pre><span class="n">optional</span> <span class="o">=</span> <span class="p">{</span>
<span class="s">&#39;description&#39;</span><span class="p">:</span> <span class="s">&#39;some comment&#39;</span><span class="p">,</span>
<span class="s">&#39;isThinProvisioned&#39;</span><span class="p">:</span> <span class="s">&#39;true&#39;</span><span class="p">,</span>
<span class="s">&#39;autogrowSeconds&#39;</span><span class="p">:</span> <span class="mi">200</span><span class="p">,</span>
<span class="s">&#39;clusterName&#39;</span><span class="p">:</span> <span class="s">&#39;somename&#39;</span><span class="p">,</span>
<span class="s">&#39;isAdaptiveOptimizationEnabled&#39;</span><span class="p">:</span> <span class="s">&#39;true&#39;</span><span class="p">,</span>
<span class="s">&#39;dataProtectionLevel&#39;</span><span class="p">:</span> <span class="mi">2</span><span class="p">,</span>
<span class="p">}</span>
</pre></div>
</div>
<table class="docutils field-list" frame="void" rules="none">
<col class="field-name" />
<col class="field-body" />
<tbody valign="top">
<tr class="field-odd field"><th class="field-name">Returns:</th><td class="field-body">List of Volumes</td>
</tr>
<tr class="field-even field"><th class="field-name">Raises :</th><td class="field-body"><a class="reference internal" href="../../hplefthandclient.html#hplefthandclient.exceptions.HTTPConflict" title="hplefthandclient.exceptions.HTTPConflict"><tt class="xref py py-class docutils literal"><span class="pre">HTTPConflict</span></tt></a> -</td>
</tr>
</tbody>
</table>
<p>EXISTENT_SV - Volume Exists already</p>
</dd></dl>
<dl class="method">
<dt id="hplefthandclient.client.HPLeftHandClient.deleteVolume">
<tt class="descname">deleteVolume</tt><big>(</big><em>volume_id</em><big>)</big><a class="reference internal" href="../../_modules/hplefthandclient/client.html#HPLeftHandClient.deleteVolume"><span class="viewcode-link">[source]</span></a><a class="headerlink" href="#hplefthandclient.client.HPLeftHandClient.deleteVolume" title="Permalink to this definition"></a></dt>
<dd><p>Delete a volume</p>
<table class="docutils field-list" frame="void" rules="none">
<col class="field-name" />
<col class="field-body" />
<tbody valign="top">
<tr class="field-odd field"><th class="field-name">Parameters:</th><td class="field-body"><strong>name</strong> (<em>str</em>) &#8211; the name of the volume</td>
</tr>
<tr class="field-even field"><th class="field-name">Raises :</th><td class="field-body"><a class="reference internal" href="../../hplefthandclient.html#hplefthandclient.exceptions.HTTPNotFound" title="hplefthandclient.exceptions.HTTPNotFound"><tt class="xref py py-class docutils literal"><span class="pre">HTTPNotFound</span></tt></a> -</td>
</tr>
</tbody>
</table>
<p>NON_EXISTENT_VOL - The volume does not exist</p>
</dd></dl>
<dl class="method">
<dt id="hplefthandclient.client.HPLeftHandClient.modifyVolume">
<tt class="descname">modifyVolume</tt><big>(</big><em>volume_id</em>, <em>optional</em><big>)</big><a class="reference internal" href="../../_modules/hplefthandclient/client.html#HPLeftHandClient.modifyVolume"><span class="viewcode-link">[source]</span></a><a class="headerlink" href="#hplefthandclient.client.HPLeftHandClient.modifyVolume" title="Permalink to this definition"></a></dt>
<dd><p>Modify an existing volume.</p>
<table class="docutils field-list" frame="void" rules="none">
<col class="field-name" />
<col class="field-body" />
<tbody valign="top">
<tr class="field-odd field"><th class="field-name">Parameters:</th><td class="field-body"><strong>volume_id</strong> (<em>str</em>) &#8211; The id of the volume to find</td>
</tr>
<tr class="field-even field"><th class="field-name">Returns:</th><td class="field-body">volume</td>
</tr>
<tr class="field-odd field"><th class="field-name">Raises :</th><td class="field-body"><a class="reference internal" href="../../hplefthandclient.html#hplefthandclient.exceptions.HTTPNotFound" title="hplefthandclient.exceptions.HTTPNotFound"><tt class="xref py py-class docutils literal"><span class="pre">HTTPNotFound</span></tt></a> -</td>
</tr>
</tbody>
</table>
<p>NON_EXISTENT_VOL - volume doesn&#8217;t exist</p>
</dd></dl>
<dl class="method">
<dt id="hplefthandclient.client.HPLeftHandClient.cloneVolume">
<tt class="descname">cloneVolume</tt><big>(</big><em>name</em>, <em>source_volume_id</em>, <em>optional=None</em><big>)</big><a class="reference internal" href="../../_modules/hplefthandclient/client.html#HPLeftHandClient.cloneVolume"><span class="viewcode-link">[source]</span></a><a class="headerlink" href="#hplefthandclient.client.HPLeftHandClient.cloneVolume" title="Permalink to this definition"></a></dt>
<dd><p>Create a clone of an existing Volume</p>
<table class="docutils field-list" frame="void" rules="none">
<col class="field-name" />
<col class="field-body" />
<tbody valign="top">
<tr class="field-odd field"><th class="field-name">Parameters:</th><td class="field-body"><ul class="first last simple">
<li><strong>name</strong> (<em>str</em>) &#8211; Name of the Volume clone</li>
<li><strong>source_volume_id</strong> (<em>int</em>) &#8211; The Volume you want to clone</li>
<li><strong>optional</strong> (<em>dict</em>) &#8211; Dictionary of optional params</li>
</ul>
</td>
</tr>
</tbody>
</table>
<div class="highlight-python"><div class="highlight"><pre><span class="n">optional</span> <span class="o">=</span> <span class="p">{</span>
<span class="s">&#39;description&#39;</span> <span class="p">:</span> <span class="s">&quot;some comment&quot;</span>
<span class="p">}</span>
</pre></div>
</div>
</dd></dl>
<dl class="method">
<dt id="hplefthandclient.client.HPLeftHandClient.addServerAccess">
<tt class="descname">addServerAccess</tt><big>(</big><em>volume_id</em>, <em>server_id</em>, <em>optional=None</em><big>)</big><a class="reference internal" href="../../_modules/hplefthandclient/client.html#HPLeftHandClient.addServerAccess"><span class="viewcode-link">[source]</span></a><a class="headerlink" href="#hplefthandclient.client.HPLeftHandClient.addServerAccess" title="Permalink to this definition"></a></dt>
<dd><p>Assign a Volume to a Server</p>
<table class="docutils field-list" frame="void" rules="none">
<col class="field-name" />
<col class="field-body" />
<tbody valign="top">
<tr class="field-odd field"><th class="field-name">Parameters:</th><td class="field-body"><ul class="first last simple">
<li><strong>volume_id</strong> &#8211; Volume ID of the volume</li>
<li><strong>server_id</strong> &#8211; Server ID of the server to add the volume to</li>
<li><strong>optional</strong> (<em>dict</em>) &#8211; Dictionary of optional params</li>
</ul>
</td>
</tr>
</tbody>
</table>
<div class="highlight-python"><div class="highlight"><pre><span class="n">optional</span> <span class="o">=</span> <span class="p">{</span>
<span class="s">&#39;Transport&#39;</span> <span class="p">:</span> <span class="mi">0</span><span class="p">,</span>
<span class="s">&#39;Lun&#39;</span> <span class="p">:</span> <span class="mi">1</span><span class="p">,</span>
<span class="p">}</span>
</pre></div>
</div>
</dd></dl>
<dl class="method">
<dt id="hplefthandclient.client.HPLeftHandClient.removeServerAccess">
<tt class="descname">removeServerAccess</tt><big>(</big><em>volume_id</em>, <em>server_id</em><big>)</big><a class="reference internal" href="../../_modules/hplefthandclient/client.html#HPLeftHandClient.removeServerAccess"><span class="viewcode-link">[source]</span></a><a class="headerlink" href="#hplefthandclient.client.HPLeftHandClient.removeServerAccess" title="Permalink to this definition"></a></dt>
<dd><p>Unassign a Volume from a Server</p>
<table class="docutils field-list" frame="void" rules="none">
<col class="field-name" />
<col class="field-body" />
<tbody valign="top">
<tr class="field-odd field"><th class="field-name">Parameters:</th><td class="field-body"><ul class="first last simple">
<li><strong>volume_id</strong> &#8211; Volume ID of the volume</li>
<li><strong>server_id</strong> &#8211; Server ID of the server to remove the volume fom</li>
</ul>
</td>
</tr>
</tbody>
</table>
</dd></dl>
</dd></dl>
</div>
</div>
</div>
</div>
<div class="sphinxsidebar">
<div class="sphinxsidebarwrapper">
<h4>Previous topic</h4>
<p class="topless"><a href="index.html"
title="previous chapter"><tt class="docutils literal"><span class="pre">client</span></tt> &#8211; HPLeftHandClient</a></p>
<h4>Next topic</h4>
<p class="topless"><a href="exceptions.html"
title="next chapter"><tt class="docutils literal"><span class="pre">exceptions</span></tt> &#8211; HTTP Exceptions</a></p>
<h3>This Page</h3>
<ul class="this-page-menu">
<li><a href="../../_sources/api/hplefthandclient/client.txt"
rel="nofollow">Show Source</a></li>
</ul>
<div id="searchbox" style="display: none">
<h3>Quick search</h3>
<form class="search" action="../../search.html" method="get">
<input type="text" name="q" />
<input type="submit" value="Go" />
<input type="hidden" name="check_keywords" value="yes" />
<input type="hidden" name="area" value="default" />
</form>
<p class="searchtip" style="font-size: 90%">
Enter search terms or a module, class or function name.
</p>
</div>
<script type="text/javascript">$('#searchbox').show(0);</script>
</div>
</div>
<div class="clearer"></div>
</div>
<div class="related">
<h3>Navigation</h3>
<ul>
<li class="right" style="margin-right: 10px">
<a href="../../genindex.html" title="General Index"
>index</a></li>
<li class="right" >
<a href="../../py-modindex.html" title="Python Module Index"
>modules</a> |</li>
<li class="right" >
<a href="exceptions.html" title="exceptions HTTP Exceptions"
>next</a> |</li>
<li class="right" >
<a href="index.html" title="client HPLeftHandClient"
>previous</a> |</li>
<li><a href="../../index.html">HP LeftHand REST Client 1.0.0 documentation</a> &raquo;</li>
<li><a href="../index.html" >API Documentation</a> &raquo;</li>
<li><a href="index.html" ><tt class="docutils literal docutils literal"><span class="pre">client</span></tt> &#8211; HPLeftHandClient</a> &raquo;</li>
</ul>
</div>
<div class="footer">
&copy; Copyright 2013 Hewlett Packard Development Company, L.P..
Created using <a href="http://sphinx.pocoo.org/">Sphinx</a> 1.1.3.
</div>
</body>
</html>

View File

@ -1,146 +0,0 @@
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN"
"http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
<title>exceptions HTTP Exceptions &mdash; HP LeftHand REST Client 1.0.0 documentation</title>
<link rel="stylesheet" href="../../_static/default.css" type="text/css" />
<link rel="stylesheet" href="../../_static/pygments.css" type="text/css" />
<script type="text/javascript">
var DOCUMENTATION_OPTIONS = {
URL_ROOT: '../../',
VERSION: '1.0.0',
COLLAPSE_INDEX: false,
FILE_SUFFIX: '.html',
HAS_SOURCE: true
};
</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>
<link rel="top" title="HP LeftHand REST Client 1.0.0 documentation" href="../../index.html" />
<link rel="up" title="client HPLeftHnadClient" href="index.html" />
<link rel="next" title="http HTTP REST Base Class" href="http.html" />
<link rel="prev" title="client HPLeftHandClient" href="client.html" />
</head>
<body>
<div class="related">
<h3>Navigation</h3>
<ul>
<li class="right" style="margin-right: 10px">
<a href="../../genindex.html" title="General Index"
accesskey="I">index</a></li>
<li class="right" >
<a href="../../py-modindex.html" title="Python Module Index"
>modules</a> |</li>
<li class="right" >
<a href="http.html" title="http HTTP REST Base Class"
accesskey="N">next</a> |</li>
<li class="right" >
<a href="client.html" title="client HPLeftHandClient"
accesskey="P">previous</a> |</li>
<li><a href="../../index.html">HP LeftHand REST Client 1.0.0 documentation</a> &raquo;</li>
<li><a href="../index.html" >API Documentation</a> &raquo;</li>
<li><a href="index.html" accesskey="U"><tt class="docutils literal docutils literal docutils literal"><span class="pre">client</span></tt> &#8211; HPLeftHnadClient</a> &raquo;</li>
</ul>
</div>
<div class="document">
<div class="documentwrapper">
<div class="bodywrapper">
<div class="body">
<div class="section" id="module-hplefthandclient.exceptions">
<span id="exceptions-http-exceptions"></span><h1><tt class="xref py py-mod docutils literal"><span class="pre">exceptions</span></tt> &#8211; HTTP Exceptions<a class="headerlink" href="#module-hplefthandclient.exceptions" title="Permalink to this headline"></a></h1>
<p>Exceptions for the client</p>
<table class="docutils field-list" frame="void" rules="none">
<col class="field-name" />
<col class="field-body" />
<tbody valign="top">
<tr class="field-odd field"><th class="field-name">Author:</th><td class="field-body">Walter A. Boring IV</td>
</tr>
<tr class="field-even field"><th class="field-name">Description:</th><td class="field-body">This contains the HTTP exceptions that can come back from the REST calls</td>
</tr>
</tbody>
</table>
<dl class="class">
<dt id="hplefthandclient.exceptions.HTTPNotFound">
<em class="property">class </em><tt class="descclassname">hplefthandclient.exceptions.</tt><tt class="descname">HTTPNotFound</tt><big>(</big><em>error=None</em><big>)</big><a class="reference internal" href="../../_modules/hplefthandclient/exceptions.html#HTTPNotFound"><span class="viewcode-link">[source]</span></a><a class="headerlink" href="#hplefthandclient.exceptions.HTTPNotFound" title="Permalink to this definition"></a></dt>
<dd><p>HTTP 404 - Not found</p>
</dd></dl>
<dl class="class">
<dt id="hplefthandclient.exceptions.HTTPBadRequest">
<em class="property">class </em><tt class="descclassname">hplefthandclient.exceptions.</tt><tt class="descname">HTTPBadRequest</tt><big>(</big><em>error=None</em><big>)</big><a class="reference internal" href="../../_modules/hplefthandclient/exceptions.html#HTTPBadRequest"><span class="viewcode-link">[source]</span></a><a class="headerlink" href="#hplefthandclient.exceptions.HTTPBadRequest" title="Permalink to this definition"></a></dt>
<dd><p>HTTP 400 - Bad request: you sent some malformed data.</p>
</dd></dl>
</div>
</div>
</div>
</div>
<div class="sphinxsidebar">
<div class="sphinxsidebarwrapper">
<h4>Previous topic</h4>
<p class="topless"><a href="client.html"
title="previous chapter"><tt class="docutils literal docutils literal"><span class="pre">client</span></tt> &#8211; HPLeftHandClient</a></p>
<h4>Next topic</h4>
<p class="topless"><a href="http.html"
title="next chapter"><tt class="docutils literal"><span class="pre">http</span></tt> &#8211; HTTP REST Base Class</a></p>
<h3>This Page</h3>
<ul class="this-page-menu">
<li><a href="../../_sources/api/hplefthandclient/exceptions.txt"
rel="nofollow">Show Source</a></li>
</ul>
<div id="searchbox" style="display: none">
<h3>Quick search</h3>
<form class="search" action="../../search.html" method="get">
<input type="text" name="q" />
<input type="submit" value="Go" />
<input type="hidden" name="check_keywords" value="yes" />
<input type="hidden" name="area" value="default" />
</form>
<p class="searchtip" style="font-size: 90%">
Enter search terms or a module, class or function name.
</p>
</div>
<script type="text/javascript">$('#searchbox').show(0);</script>
</div>
</div>
<div class="clearer"></div>
</div>
<div class="related">
<h3>Navigation</h3>
<ul>
<li class="right" style="margin-right: 10px">
<a href="../../genindex.html" title="General Index"
>index</a></li>
<li class="right" >
<a href="../../py-modindex.html" title="Python Module Index"
>modules</a> |</li>
<li class="right" >
<a href="http.html" title="http HTTP REST Base Class"
>next</a> |</li>
<li class="right" >
<a href="client.html" title="client HPLeftHandClient"
>previous</a> |</li>
<li><a href="../../index.html">HP LeftHand REST Client 1.0.0 documentation</a> &raquo;</li>
<li><a href="../index.html" >API Documentation</a> &raquo;</li>
<li><a href="index.html" ><tt class="docutils literal docutils literal docutils literal"><span class="pre">client</span></tt> &#8211; HPLeftHnadClient</a> &raquo;</li>
</ul>
</div>
<div class="footer">
&copy; Copyright 2013 Hewlett Packard Development Company, L.P..
Created using <a href="http://sphinx.pocoo.org/">Sphinx</a> 1.1.3.
</div>
</body>
</html>

View File

@ -1,118 +0,0 @@
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN"
"http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
<title>http HTTP REST Base Class &mdash; HP LeftHand REST Client 1.0.0 documentation</title>
<link rel="stylesheet" href="../../_static/default.css" type="text/css" />
<link rel="stylesheet" href="../../_static/pygments.css" type="text/css" />
<script type="text/javascript">
var DOCUMENTATION_OPTIONS = {
URL_ROOT: '../../',
VERSION: '1.0.0',
COLLAPSE_INDEX: false,
FILE_SUFFIX: '.html',
HAS_SOURCE: true
};
</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>
<link rel="top" title="HP LeftHand REST Client 1.0.0 documentation" href="../../index.html" />
<link rel="up" title="client HPLeftHnadClient" href="index.html" />
<link rel="prev" title="exceptions HTTP Exceptions" href="exceptions.html" />
</head>
<body>
<div class="related">
<h3>Navigation</h3>
<ul>
<li class="right" style="margin-right: 10px">
<a href="../../genindex.html" title="General Index"
accesskey="I">index</a></li>
<li class="right" >
<a href="../../py-modindex.html" title="Python Module Index"
>modules</a> |</li>
<li class="right" >
<a href="exceptions.html" title="exceptions HTTP Exceptions"
accesskey="P">previous</a> |</li>
<li><a href="../../index.html">HP LeftHand REST Client 1.0.0 documentation</a> &raquo;</li>
<li><a href="../index.html" >API Documentation</a> &raquo;</li>
<li><a href="index.html" accesskey="U"><tt class="docutils literal docutils literal docutils literal docutils literal"><span class="pre">client</span></tt> &#8211; HPLeftHnadClient</a> &raquo;</li>
</ul>
</div>
<div class="document">
<div class="documentwrapper">
<div class="bodywrapper">
<div class="body">
<div class="section" id="module-hplefthandclient.http">
<span id="http-http-rest-base-class"></span><h1><tt class="xref py py-mod docutils literal"><span class="pre">http</span></tt> &#8211; HTTP REST Base Class<a class="headerlink" href="#module-hplefthandclient.http" title="Permalink to this headline"></a></h1>
<p>HPLeftHand HTTP Client
:Author: Walter A. Boring IV
:Description: This is the HTTP Client that is used to make the actual calls.</p>
<blockquote>
<div>It includes the authentication that knows the cookie name for LH.</div></blockquote>
</div>
</div>
</div>
</div>
<div class="sphinxsidebar">
<div class="sphinxsidebarwrapper">
<h4>Previous topic</h4>
<p class="topless"><a href="exceptions.html"
title="previous chapter"><tt class="docutils literal docutils literal docutils literal"><span class="pre">exceptions</span></tt> &#8211; HTTP Exceptions</a></p>
<h3>This Page</h3>
<ul class="this-page-menu">
<li><a href="../../_sources/api/hplefthandclient/http.txt"
rel="nofollow">Show Source</a></li>
</ul>
<div id="searchbox" style="display: none">
<h3>Quick search</h3>
<form class="search" action="../../search.html" method="get">
<input type="text" name="q" />
<input type="submit" value="Go" />
<input type="hidden" name="check_keywords" value="yes" />
<input type="hidden" name="area" value="default" />
</form>
<p class="searchtip" style="font-size: 90%">
Enter search terms or a module, class or function name.
</p>
</div>
<script type="text/javascript">$('#searchbox').show(0);</script>
</div>
</div>
<div class="clearer"></div>
</div>
<div class="related">
<h3>Navigation</h3>
<ul>
<li class="right" style="margin-right: 10px">
<a href="../../genindex.html" title="General Index"
>index</a></li>
<li class="right" >
<a href="../../py-modindex.html" title="Python Module Index"
>modules</a> |</li>
<li class="right" >
<a href="exceptions.html" title="exceptions HTTP Exceptions"
>previous</a> |</li>
<li><a href="../../index.html">HP LeftHand REST Client 1.0.0 documentation</a> &raquo;</li>
<li><a href="../index.html" >API Documentation</a> &raquo;</li>
<li><a href="index.html" ><tt class="docutils literal docutils literal docutils literal docutils literal"><span class="pre">client</span></tt> &#8211; HPLeftHnadClient</a> &raquo;</li>
</ul>
</div>
<div class="footer">
&copy; Copyright 2013 Hewlett Packard Development Company, L.P..
Created using <a href="http://sphinx.pocoo.org/">Sphinx</a> 1.1.3.
</div>
</body>
</html>

View File

@ -1,150 +0,0 @@
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN"
"http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
<title>client HPLeftHandClient &mdash; HP LeftHand REST Client 1.0.0 documentation</title>
<link rel="stylesheet" href="../../_static/default.css" type="text/css" />
<link rel="stylesheet" href="../../_static/pygments.css" type="text/css" />
<script type="text/javascript">
var DOCUMENTATION_OPTIONS = {
URL_ROOT: '../../',
VERSION: '1.0.0',
COLLAPSE_INDEX: false,
FILE_SUFFIX: '.html',
HAS_SOURCE: true
};
</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>
<link rel="top" title="HP LeftHand REST Client 1.0.0 documentation" href="../../index.html" />
<link rel="up" title="API Documentation" href="../index.html" />
<link rel="next" title="client HPLeftHandClient" href="client.html" />
<link rel="prev" title="API Documentation" href="../index.html" />
</head>
<body>
<div class="related">
<h3>Navigation</h3>
<ul>
<li class="right" style="margin-right: 10px">
<a href="../../genindex.html" title="General Index"
accesskey="I">index</a></li>
<li class="right" >
<a href="../../py-modindex.html" title="Python Module Index"
>modules</a> |</li>
<li class="right" >
<a href="client.html" title="client HPLeftHandClient"
accesskey="N">next</a> |</li>
<li class="right" >
<a href="../index.html" title="API Documentation"
accesskey="P">previous</a> |</li>
<li><a href="../../index.html">HP LeftHand REST Client 1.0.0 documentation</a> &raquo;</li>
<li><a href="../index.html" accesskey="U">API Documentation</a> &raquo;</li>
</ul>
</div>
<div class="document">
<div class="documentwrapper">
<div class="bodywrapper">
<div class="body">
<div class="section" id="module-hplefthandclient">
<span id="client-hplefthandclient"></span><h1><tt class="xref py py-mod docutils literal"><span class="pre">client</span></tt> &#8211; HPLeftHandClient<a class="headerlink" href="#module-hplefthandclient" title="Permalink to this headline"></a></h1>
<p>HP LeftHand REST Client</p>
<table class="docutils field-list" frame="void" rules="none">
<col class="field-name" />
<col class="field-body" />
<tbody valign="top">
<tr class="field-odd field"><th class="field-name">Author:</th><td class="field-body">Kurt Martin</td>
</tr>
<tr class="field-even field"><th class="field-name">Author:</th><td class="field-body">Walter A. Boring IV</td>
</tr>
<tr class="field-odd field"><th class="field-name">Copyright:</th><td class="field-body">Copyright 2013, Hewlett Packard Development Company, L.P.</td>
</tr>
<tr class="field-even field"><th class="field-name">License:</th><td class="field-body">Apache v2.0</td>
</tr>
</tbody>
</table>
<dl class="data">
<dt id="hplefthandclient.version">
<tt class="descclassname">hplefthandclient.</tt><tt class="descname">version</tt><em class="property"> = '1.0.0'</em><a class="headerlink" href="#hplefthandclient.version" title="Permalink to this definition"></a></dt>
<dd><p>Current version of HPLeftHandClient.</p>
</dd></dl>
<p>Sub-modules:</p>
<div class="toctree-wrapper compound">
<ul>
<li class="toctree-l1"><a class="reference internal" href="client.html"><tt class="docutils literal"><span class="pre">client</span></tt> &#8211; HPLeftHandClient</a></li>
<li class="toctree-l1"><a class="reference internal" href="exceptions.html"><tt class="docutils literal"><span class="pre">exceptions</span></tt> &#8211; HTTP Exceptions</a></li>
<li class="toctree-l1"><a class="reference internal" href="http.html"><tt class="docutils literal"><span class="pre">http</span></tt> &#8211; HTTP REST Base Class</a></li>
</ul>
</div>
</div>
</div>
</div>
</div>
<div class="sphinxsidebar">
<div class="sphinxsidebarwrapper">
<h4>Previous topic</h4>
<p class="topless"><a href="../index.html"
title="previous chapter">API Documentation</a></p>
<h4>Next topic</h4>
<p class="topless"><a href="client.html"
title="next chapter"><tt class="docutils literal"><span class="pre">client</span></tt> &#8211; HPLeftHandClient</a></p>
<h3>This Page</h3>
<ul class="this-page-menu">
<li><a href="../../_sources/api/hplefthandclient/index.txt"
rel="nofollow">Show Source</a></li>
</ul>
<div id="searchbox" style="display: none">
<h3>Quick search</h3>
<form class="search" action="../../search.html" method="get">
<input type="text" name="q" />
<input type="submit" value="Go" />
<input type="hidden" name="check_keywords" value="yes" />
<input type="hidden" name="area" value="default" />
</form>
<p class="searchtip" style="font-size: 90%">
Enter search terms or a module, class or function name.
</p>
</div>
<script type="text/javascript">$('#searchbox').show(0);</script>
</div>
</div>
<div class="clearer"></div>
</div>
<div class="related">
<h3>Navigation</h3>
<ul>
<li class="right" style="margin-right: 10px">
<a href="../../genindex.html" title="General Index"
>index</a></li>
<li class="right" >
<a href="../../py-modindex.html" title="Python Module Index"
>modules</a> |</li>
<li class="right" >
<a href="client.html" title="client HPLeftHandClient"
>next</a> |</li>
<li class="right" >
<a href="../index.html" title="API Documentation"
>previous</a> |</li>
<li><a href="../../index.html">HP LeftHand REST Client 1.0.0 documentation</a> &raquo;</li>
<li><a href="../index.html" >API Documentation</a> &raquo;</li>
</ul>
</div>
<div class="footer">
&copy; Copyright 2013 Hewlett Packard Development Company, L.P..
Created using <a href="http://sphinx.pocoo.org/">Sphinx</a> 1.1.3.
</div>
</body>
</html>

View File

@ -1,130 +0,0 @@
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN"
"http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
<title>API Documentation &mdash; HP LeftHand REST Client 1.0.0 documentation</title>
<link rel="stylesheet" href="../_static/default.css" type="text/css" />
<link rel="stylesheet" href="../_static/pygments.css" type="text/css" />
<script type="text/javascript">
var DOCUMENTATION_OPTIONS = {
URL_ROOT: '../',
VERSION: '1.0.0',
COLLAPSE_INDEX: false,
FILE_SUFFIX: '.html',
HAS_SOURCE: true
};
</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>
<link rel="top" title="HP LeftHand REST Client 1.0.0 documentation" href="../index.html" />
<link rel="next" title="client HPLeftHandClient" href="hplefthandclient/index.html" />
<link rel="prev" title="Changelog" href="../changelog.html" />
</head>
<body>
<div class="related">
<h3>Navigation</h3>
<ul>
<li class="right" style="margin-right: 10px">
<a href="../genindex.html" title="General Index"
accesskey="I">index</a></li>
<li class="right" >
<a href="../py-modindex.html" title="Python Module Index"
>modules</a> |</li>
<li class="right" >
<a href="hplefthandclient/index.html" title="client HPLeftHandClient"
accesskey="N">next</a> |</li>
<li class="right" >
<a href="../changelog.html" title="Changelog"
accesskey="P">previous</a> |</li>
<li><a href="../index.html">HP LeftHand REST Client 1.0.0 documentation</a> &raquo;</li>
</ul>
</div>
<div class="document">
<div class="documentwrapper">
<div class="bodywrapper">
<div class="body">
<div class="section" id="api-documentation">
<h1>API Documentation<a class="headerlink" href="#api-documentation" title="Permalink to this headline"></a></h1>
<p>The HP LeftHand Client package contains a <a class="reference internal" href="hplefthandclient/index.html#module-hplefthandclient" title="hplefthandclient: HP LeftHand REST Web client"><tt class="xref py py-mod docutils literal"><span class="pre">hplefthandclient</span></tt></a> class which extends a more
generic <tt class="xref py py-mod docutils literal"><span class="pre">http</span></tt> class for doing REST calls</p>
<div class="toctree-wrapper compound">
<ul>
<li class="toctree-l1"><a class="reference internal" href="hplefthandclient/index.html"><tt class="docutils literal"><span class="pre">client</span></tt> &#8211; HPLeftHandClient</a><ul>
<li class="toctree-l2"><a class="reference internal" href="hplefthandclient/client.html"><tt class="docutils literal"><span class="pre">client</span></tt> &#8211; HPLeftHandClient</a></li>
<li class="toctree-l2"><a class="reference internal" href="hplefthandclient/exceptions.html"><tt class="docutils literal"><span class="pre">exceptions</span></tt> &#8211; HTTP Exceptions</a></li>
<li class="toctree-l2"><a class="reference internal" href="hplefthandclient/http.html"><tt class="docutils literal"><span class="pre">http</span></tt> &#8211; HTTP REST Base Class</a></li>
</ul>
</li>
</ul>
</div>
</div>
</div>
</div>
</div>
<div class="sphinxsidebar">
<div class="sphinxsidebarwrapper">
<h4>Previous topic</h4>
<p class="topless"><a href="../changelog.html"
title="previous chapter">Changelog</a></p>
<h4>Next topic</h4>
<p class="topless"><a href="hplefthandclient/index.html"
title="next chapter"><tt class="docutils literal docutils literal"><span class="pre">client</span></tt> &#8211; HPLeftHandClient</a></p>
<h3>This Page</h3>
<ul class="this-page-menu">
<li><a href="../_sources/api/index.txt"
rel="nofollow">Show Source</a></li>
</ul>
<div id="searchbox" style="display: none">
<h3>Quick search</h3>
<form class="search" action="../search.html" method="get">
<input type="text" name="q" />
<input type="submit" value="Go" />
<input type="hidden" name="check_keywords" value="yes" />
<input type="hidden" name="area" value="default" />
</form>
<p class="searchtip" style="font-size: 90%">
Enter search terms or a module, class or function name.
</p>
</div>
<script type="text/javascript">$('#searchbox').show(0);</script>
</div>
</div>
<div class="clearer"></div>
</div>
<div class="related">
<h3>Navigation</h3>
<ul>
<li class="right" style="margin-right: 10px">
<a href="../genindex.html" title="General Index"
>index</a></li>
<li class="right" >
<a href="../py-modindex.html" title="Python Module Index"
>modules</a> |</li>
<li class="right" >
<a href="hplefthandclient/index.html" title="client HPLeftHandClient"
>next</a> |</li>
<li class="right" >
<a href="../changelog.html" title="Changelog"
>previous</a> |</li>
<li><a href="../index.html">HP LeftHand REST Client 1.0.0 documentation</a> &raquo;</li>
</ul>
</div>
<div class="footer">
&copy; Copyright 2013 Hewlett Packard Development Company, L.P..
Created using <a href="http://sphinx.pocoo.org/">Sphinx</a> 1.1.3.
</div>
</body>
</html>

View File

@ -1,132 +0,0 @@
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN"
"http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
<title>Changelog &mdash; HP LeftHand REST Client 1.0.0 documentation</title>
<link rel="stylesheet" href="_static/default.css" type="text/css" />
<link rel="stylesheet" href="_static/pygments.css" type="text/css" />
<script type="text/javascript">
var DOCUMENTATION_OPTIONS = {
URL_ROOT: '',
VERSION: '1.0.0',
COLLAPSE_INDEX: false,
FILE_SUFFIX: '.html',
HAS_SOURCE: true
};
</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>
<link rel="top" title="HP LeftHand REST Client 1.0.0 documentation" href="index.html" />
<link rel="next" title="API Documentation" href="api/index.html" />
<link rel="prev" title="Tutorial" href="tutorial.html" />
</head>
<body>
<div class="related">
<h3>Navigation</h3>
<ul>
<li class="right" style="margin-right: 10px">
<a href="genindex.html" title="General Index"
accesskey="I">index</a></li>
<li class="right" >
<a href="py-modindex.html" title="Python Module Index"
>modules</a> |</li>
<li class="right" >
<a href="api/index.html" title="API Documentation"
accesskey="N">next</a> |</li>
<li class="right" >
<a href="tutorial.html" title="Tutorial"
accesskey="P">previous</a> |</li>
<li><a href="index.html">HP LeftHand REST Client 1.0.0 documentation</a> &raquo;</li>
</ul>
</div>
<div class="document">
<div class="documentwrapper">
<div class="bodywrapper">
<div class="body">
<div class="section" id="changelog">
<h1>Changelog<a class="headerlink" href="#changelog" title="Permalink to this headline"></a></h1>
<div class="section" id="changes-in-version-1-0-0">
<h2>Changes in Version 1.0.0<a class="headerlink" href="#changes-in-version-1-0-0" title="Permalink to this headline"></a></h2>
<ul class="simple">
<li>First implementation of the REST API Client</li>
</ul>
</div>
</div>
</div>
</div>
</div>
<div class="sphinxsidebar">
<div class="sphinxsidebarwrapper">
<h3><a href="index.html">Table Of Contents</a></h3>
<ul>
<li><a class="reference internal" href="#">Changelog</a><ul>
<li><a class="reference internal" href="#changes-in-version-1-0-0">Changes in Version 1.0.0</a></li>
</ul>
</li>
</ul>
<h4>Previous topic</h4>
<p class="topless"><a href="tutorial.html"
title="previous chapter">Tutorial</a></p>
<h4>Next topic</h4>
<p class="topless"><a href="api/index.html"
title="next chapter">API Documentation</a></p>
<h3>This Page</h3>
<ul class="this-page-menu">
<li><a href="_sources/changelog.txt"
rel="nofollow">Show Source</a></li>
</ul>
<div id="searchbox" style="display: none">
<h3>Quick search</h3>
<form class="search" action="search.html" method="get">
<input type="text" name="q" />
<input type="submit" value="Go" />
<input type="hidden" name="check_keywords" value="yes" />
<input type="hidden" name="area" value="default" />
</form>
<p class="searchtip" style="font-size: 90%">
Enter search terms or a module, class or function name.
</p>
</div>
<script type="text/javascript">$('#searchbox').show(0);</script>
</div>
</div>
<div class="clearer"></div>
</div>
<div class="related">
<h3>Navigation</h3>
<ul>
<li class="right" style="margin-right: 10px">
<a href="genindex.html" title="General Index"
>index</a></li>
<li class="right" >
<a href="py-modindex.html" title="Python Module Index"
>modules</a> |</li>
<li class="right" >
<a href="api/index.html" title="API Documentation"
>next</a> |</li>
<li class="right" >
<a href="tutorial.html" title="Tutorial"
>previous</a> |</li>
<li><a href="index.html">HP LeftHand REST Client 1.0.0 documentation</a> &raquo;</li>
</ul>
</div>
<div class="footer">
&copy; Copyright 2013 Hewlett Packard Development Company, L.P..
Created using <a href="http://sphinx.pocoo.org/">Sphinx</a> 1.1.3.
</div>
</body>
</html>

View File

@ -1,755 +0,0 @@
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN"
"http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
<title>Index &mdash; HP LeftHand REST Client 1.0.0 documentation</title>
<link rel="stylesheet" href="_static/default.css" type="text/css" />
<link rel="stylesheet" href="_static/pygments.css" type="text/css" />
<script type="text/javascript">
var DOCUMENTATION_OPTIONS = {
URL_ROOT: '',
VERSION: '1.0.0',
COLLAPSE_INDEX: false,
FILE_SUFFIX: '.html',
HAS_SOURCE: true
};
</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>
<link rel="top" title="HP LeftHand REST Client 1.0.0 documentation" href="index.html" />
</head>
<body>
<div class="related">
<h3>Navigation</h3>
<ul>
<li class="right" style="margin-right: 10px">
<a href="#" title="General Index"
accesskey="I">index</a></li>
<li class="right" >
<a href="py-modindex.html" title="Python Module Index"
>modules</a> |</li>
<li><a href="index.html">HP LeftHand REST Client 1.0.0 documentation</a> &raquo;</li>
</ul>
</div>
<div class="document">
<div class="documentwrapper">
<div class="bodywrapper">
<div class="body">
<h1 id="index">Index</h1>
<div class="genindex-jumpbox">
<a href="#A"><strong>A</strong></a>
| <a href="#C"><strong>C</strong></a>
| <a href="#D"><strong>D</strong></a>
| <a href="#F"><strong>F</strong></a>
| <a href="#G"><strong>G</strong></a>
| <a href="#H"><strong>H</strong></a>
| <a href="#L"><strong>L</strong></a>
| <a href="#M"><strong>M</strong></a>
| <a href="#N"><strong>N</strong></a>
| <a href="#P"><strong>P</strong></a>
| <a href="#R"><strong>R</strong></a>
| <a href="#S"><strong>S</strong></a>
| <a href="#U"><strong>U</strong></a>
| <a href="#V"><strong>V</strong></a>
</div>
<h2 id="A">A</h2>
<table style="width: 100%" class="indextable genindextable"><tr>
<td style="width: 33%" valign="top"><dl>
<dt><a href="hplefthandclient.html#hplefthandclient.client.HPLeftHandClient.addServerAccess">addServerAccess() (hplefthandclient.client.HPLeftHandClient method)</a>, <a href="api/hplefthandclient/client.html#hplefthandclient.client.HPLeftHandClient.addServerAccess">[1]</a>
</dt>
<dt><a href="hplefthandclient.html#hplefthandclient.http.HTTPJSONRESTClient.authenticate">authenticate() (hplefthandclient.http.HTTPJSONRESTClient method)</a>
</dt>
</dl></td>
<td style="width: 33%" valign="top"><dl>
<dt><a href="hplefthandclient.html#hplefthandclient.exceptions.AuthorizationFailure">AuthorizationFailure</a>
</dt>
</dl></td>
</tr></table>
<h2 id="C">C</h2>
<table style="width: 100%" class="indextable genindextable"><tr>
<td style="width: 33%" valign="top"><dl>
<dt><a href="hplefthandclient.html#hplefthandclient.exceptions.ClientException">ClientException</a>
</dt>
<dt><a href="hplefthandclient.html#hplefthandclient.client.HPLeftHandClient.cloneSnapshot">cloneSnapshot() (hplefthandclient.client.HPLeftHandClient method)</a>, <a href="api/hplefthandclient/client.html#hplefthandclient.client.HPLeftHandClient.cloneSnapshot">[1]</a>
</dt>
<dt><a href="hplefthandclient.html#hplefthandclient.client.HPLeftHandClient.cloneVolume">cloneVolume() (hplefthandclient.client.HPLeftHandClient method)</a>, <a href="api/hplefthandclient/client.html#hplefthandclient.client.HPLeftHandClient.cloneVolume">[1]</a>
</dt>
<dt><a href="hplefthandclient.html#hplefthandclient.exceptions.CommandError">CommandError</a>
</dt>
</dl></td>
<td style="width: 33%" valign="top"><dl>
<dt><a href="hplefthandclient.html#hplefthandclient.client.HPLeftHandClient.createServer">createServer() (hplefthandclient.client.HPLeftHandClient method)</a>, <a href="api/hplefthandclient/client.html#hplefthandclient.client.HPLeftHandClient.createServer">[1]</a>
</dt>
<dt><a href="hplefthandclient.html#hplefthandclient.client.HPLeftHandClient.createSnapshot">createSnapshot() (hplefthandclient.client.HPLeftHandClient method)</a>, <a href="api/hplefthandclient/client.html#hplefthandclient.client.HPLeftHandClient.createSnapshot">[1]</a>
</dt>
<dt><a href="hplefthandclient.html#hplefthandclient.client.HPLeftHandClient.createVolume">createVolume() (hplefthandclient.client.HPLeftHandClient method)</a>, <a href="api/hplefthandclient/client.html#hplefthandclient.client.HPLeftHandClient.createVolume">[1]</a>
</dt>
</dl></td>
</tr></table>
<h2 id="D">D</h2>
<table style="width: 100%" class="indextable genindextable"><tr>
<td style="width: 33%" valign="top"><dl>
<dt><a href="hplefthandclient.html#hplefthandclient.client.HPLeftHandClient.debug_rest">debug_rest() (hplefthandclient.client.HPLeftHandClient method)</a>, <a href="api/hplefthandclient/client.html#hplefthandclient.client.HPLeftHandClient.debug_rest">[1]</a>
</dt>
<dt><a href="hplefthandclient.html#hplefthandclient.http.HTTPJSONRESTClient.delete">delete() (hplefthandclient.http.HTTPJSONRESTClient method)</a>
</dt>
<dt><a href="hplefthandclient.html#hplefthandclient.client.HPLeftHandClient.deleteServer">deleteServer() (hplefthandclient.client.HPLeftHandClient method)</a>, <a href="api/hplefthandclient/client.html#hplefthandclient.client.HPLeftHandClient.deleteServer">[1]</a>
</dt>
</dl></td>
<td style="width: 33%" valign="top"><dl>
<dt><a href="hplefthandclient.html#hplefthandclient.client.HPLeftHandClient.deleteSnapshot">deleteSnapshot() (hplefthandclient.client.HPLeftHandClient method)</a>, <a href="api/hplefthandclient/client.html#hplefthandclient.client.HPLeftHandClient.deleteSnapshot">[1]</a>
</dt>
<dt><a href="hplefthandclient.html#hplefthandclient.client.HPLeftHandClient.deleteVolume">deleteVolume() (hplefthandclient.client.HPLeftHandClient method)</a>, <a href="api/hplefthandclient/client.html#hplefthandclient.client.HPLeftHandClient.deleteVolume">[1]</a>
</dt>
</dl></td>
</tr></table>
<h2 id="F">F</h2>
<table style="width: 100%" class="indextable genindextable"><tr>
<td style="width: 33%" valign="top"><dl>
<dt><a href="hplefthandclient.html#hplefthandclient.exceptions.from_response">from_response() (in module hplefthandclient.exceptions)</a>
</dt>
</dl></td>
</tr></table>
<h2 id="G">G</h2>
<table style="width: 100%" class="indextable genindextable"><tr>
<td style="width: 33%" valign="top"><dl>
<dt><a href="hplefthandclient.html#hplefthandclient.http.HTTPJSONRESTClient.get">get() (hplefthandclient.http.HTTPJSONRESTClient method)</a>
</dt>
<dt><a href="hplefthandclient.html#hplefthandclient.exceptions.ClientException.get_code">get_code() (hplefthandclient.exceptions.ClientException method)</a>
</dt>
<dt><a href="hplefthandclient.html#hplefthandclient.exceptions.ClientException.get_description">get_description() (hplefthandclient.exceptions.ClientException method)</a>
</dt>
<dt><a href="hplefthandclient.html#hplefthandclient.http.HTTPJSONRESTClient.get_timings">get_timings() (hplefthandclient.http.HTTPJSONRESTClient method)</a>
</dt>
<dt><a href="hplefthandclient.html#hplefthandclient.__init__.get_version_string">get_version_string() (in module hplefthandclient.__init__)</a>
</dt>
<dt><a href="hplefthandclient.html#hplefthandclient.client.HPLeftHandClient.getCluster">getCluster() (hplefthandclient.client.HPLeftHandClient method)</a>, <a href="api/hplefthandclient/client.html#hplefthandclient.client.HPLeftHandClient.getCluster">[1]</a>
</dt>
<dt><a href="hplefthandclient.html#hplefthandclient.client.HPLeftHandClient.getClusterByName">getClusterByName() (hplefthandclient.client.HPLeftHandClient method)</a>, <a href="api/hplefthandclient/client.html#hplefthandclient.client.HPLeftHandClient.getClusterByName">[1]</a>
</dt>
<dt><a href="hplefthandclient.html#hplefthandclient.client.HPLeftHandClient.getClusters">getClusters() (hplefthandclient.client.HPLeftHandClient method)</a>, <a href="api/hplefthandclient/client.html#hplefthandclient.client.HPLeftHandClient.getClusters">[1]</a>
</dt>
<dt><a href="hplefthandclient.html#hplefthandclient.client.HPLeftHandClient.getServer">getServer() (hplefthandclient.client.HPLeftHandClient method)</a>, <a href="api/hplefthandclient/client.html#hplefthandclient.client.HPLeftHandClient.getServer">[1]</a>
</dt>
</dl></td>
<td style="width: 33%" valign="top"><dl>
<dt><a href="hplefthandclient.html#hplefthandclient.client.HPLeftHandClient.getServerByName">getServerByName() (hplefthandclient.client.HPLeftHandClient method)</a>, <a href="api/hplefthandclient/client.html#hplefthandclient.client.HPLeftHandClient.getServerByName">[1]</a>
</dt>
<dt><a href="hplefthandclient.html#hplefthandclient.client.HPLeftHandClient.getServers">getServers() (hplefthandclient.client.HPLeftHandClient method)</a>, <a href="api/hplefthandclient/client.html#hplefthandclient.client.HPLeftHandClient.getServers">[1]</a>
</dt>
<dt><a href="hplefthandclient.html#hplefthandclient.client.HPLeftHandClient.getSnapshot">getSnapshot() (hplefthandclient.client.HPLeftHandClient method)</a>, <a href="api/hplefthandclient/client.html#hplefthandclient.client.HPLeftHandClient.getSnapshot">[1]</a>
</dt>
<dt><a href="hplefthandclient.html#hplefthandclient.client.HPLeftHandClient.getSnapshotByName">getSnapshotByName() (hplefthandclient.client.HPLeftHandClient method)</a>, <a href="api/hplefthandclient/client.html#hplefthandclient.client.HPLeftHandClient.getSnapshotByName">[1]</a>
</dt>
<dt><a href="hplefthandclient.html#hplefthandclient.client.HPLeftHandClient.getSnapshots">getSnapshots() (hplefthandclient.client.HPLeftHandClient method)</a>, <a href="api/hplefthandclient/client.html#hplefthandclient.client.HPLeftHandClient.getSnapshots">[1]</a>
</dt>
<dt><a href="hplefthandclient.html#hplefthandclient.client.HPLeftHandClient.getVolume">getVolume() (hplefthandclient.client.HPLeftHandClient method)</a>, <a href="api/hplefthandclient/client.html#hplefthandclient.client.HPLeftHandClient.getVolume">[1]</a>
</dt>
<dt><a href="hplefthandclient.html#hplefthandclient.client.HPLeftHandClient.getVolumeByName">getVolumeByName() (hplefthandclient.client.HPLeftHandClient method)</a>, <a href="api/hplefthandclient/client.html#hplefthandclient.client.HPLeftHandClient.getVolumeByName">[1]</a>
</dt>
<dt><a href="hplefthandclient.html#hplefthandclient.client.HPLeftHandClient.getVolumes">getVolumes() (hplefthandclient.client.HPLeftHandClient method)</a>, <a href="api/hplefthandclient/client.html#hplefthandclient.client.HPLeftHandClient.getVolumes">[1]</a>
</dt>
</dl></td>
</tr></table>
<h2 id="H">H</h2>
<table style="width: 100%" class="indextable genindextable"><tr>
<td style="width: 33%" valign="top"><dl>
<dt><a href="hplefthandclient.html#hplefthandclient.client.HPLeftHandClient">HPLeftHandClient (class in hplefthandclient.client)</a>, <a href="api/hplefthandclient/client.html#hplefthandclient.client.HPLeftHandClient">[1]</a>
</dt>
<dt><a href="api/hplefthandclient/index.html#module-hplefthandclient">hplefthandclient (module)</a>
</dt>
<dt><a href="hplefthandclient.html#module-hplefthandclient.__init__">hplefthandclient.__init__ (module)</a>
</dt>
<dt><a href="hplefthandclient.html#module-hplefthandclient.client">hplefthandclient.client (module)</a>, <a href="api/hplefthandclient/client.html#module-hplefthandclient.client">[1]</a>
</dt>
<dt><a href="api/hplefthandclient/exceptions.html#module-hplefthandclient.exceptions">hplefthandclient.exceptions (module)</a>, <a href="hplefthandclient.html#module-hplefthandclient.exceptions">[1]</a>
</dt>
<dt><a href="hplefthandclient.html#module-hplefthandclient.http">hplefthandclient.http (module)</a>, <a href="api/hplefthandclient/http.html#module-hplefthandclient.http">[1]</a>
</dt>
<dt><a href="hplefthandclient.html#hplefthandclient.exceptions.HTTPBadGateway.http_status">http_status (hplefthandclient.exceptions.HTTPBadGateway attribute)</a>
</dt>
<dd><dl>
<dt><a href="hplefthandclient.html#hplefthandclient.exceptions.HTTPBadRequest.http_status">(hplefthandclient.exceptions.HTTPBadRequest attribute)</a>
</dt>
<dt><a href="hplefthandclient.html#hplefthandclient.exceptions.HTTPConflict.http_status">(hplefthandclient.exceptions.HTTPConflict attribute)</a>
</dt>
<dt><a href="hplefthandclient.html#hplefthandclient.exceptions.HTTPExpectationFailed.http_status">(hplefthandclient.exceptions.HTTPExpectationFailed attribute)</a>
</dt>
<dt><a href="hplefthandclient.html#hplefthandclient.exceptions.HTTPForbidden.http_status">(hplefthandclient.exceptions.HTTPForbidden attribute)</a>
</dt>
<dt><a href="hplefthandclient.html#hplefthandclient.exceptions.HTTPGatewayTimeout.http_status">(hplefthandclient.exceptions.HTTPGatewayTimeout attribute)</a>
</dt>
<dt><a href="hplefthandclient.html#hplefthandclient.exceptions.HTTPGone.http_status">(hplefthandclient.exceptions.HTTPGone attribute)</a>
</dt>
<dt><a href="hplefthandclient.html#hplefthandclient.exceptions.HTTPLengthRequired.http_status">(hplefthandclient.exceptions.HTTPLengthRequired attribute)</a>
</dt>
<dt><a href="hplefthandclient.html#hplefthandclient.exceptions.HTTPMethodNotAllowed.http_status">(hplefthandclient.exceptions.HTTPMethodNotAllowed attribute)</a>
</dt>
<dt><a href="hplefthandclient.html#hplefthandclient.exceptions.HTTPNotAcceptable.http_status">(hplefthandclient.exceptions.HTTPNotAcceptable attribute)</a>
</dt>
<dt><a href="hplefthandclient.html#hplefthandclient.exceptions.HTTPNotFound.http_status">(hplefthandclient.exceptions.HTTPNotFound attribute)</a>
</dt>
<dt><a href="hplefthandclient.html#hplefthandclient.exceptions.HTTPNotImplemented.http_status">(hplefthandclient.exceptions.HTTPNotImplemented attribute)</a>
</dt>
<dt><a href="hplefthandclient.html#hplefthandclient.exceptions.HTTPPreconditionFailed.http_status">(hplefthandclient.exceptions.HTTPPreconditionFailed attribute)</a>
</dt>
<dt><a href="hplefthandclient.html#hplefthandclient.exceptions.HTTPProxyAuthRequired.http_status">(hplefthandclient.exceptions.HTTPProxyAuthRequired attribute)</a>
</dt>
<dt><a href="hplefthandclient.html#hplefthandclient.exceptions.HTTPRequestEntityTooLarge.http_status">(hplefthandclient.exceptions.HTTPRequestEntityTooLarge attribute)</a>
</dt>
<dt><a href="hplefthandclient.html#hplefthandclient.exceptions.HTTPRequestTimeout.http_status">(hplefthandclient.exceptions.HTTPRequestTimeout attribute)</a>
</dt>
<dt><a href="hplefthandclient.html#hplefthandclient.exceptions.HTTPRequestURITooLong.http_status">(hplefthandclient.exceptions.HTTPRequestURITooLong attribute)</a>
</dt>
<dt><a href="hplefthandclient.html#hplefthandclient.exceptions.HTTPRequestedRangeNotSatisfiable.http_status">(hplefthandclient.exceptions.HTTPRequestedRangeNotSatisfiable attribute)</a>
</dt>
<dt><a href="hplefthandclient.html#hplefthandclient.exceptions.HTTPServerError.http_status">(hplefthandclient.exceptions.HTTPServerError attribute)</a>
</dt>
<dt><a href="hplefthandclient.html#hplefthandclient.exceptions.HTTPServiceUnavailable.http_status">(hplefthandclient.exceptions.HTTPServiceUnavailable attribute)</a>
</dt>
<dt><a href="hplefthandclient.html#hplefthandclient.exceptions.HTTPTeaPot.http_status">(hplefthandclient.exceptions.HTTPTeaPot attribute)</a>
</dt>
<dt><a href="hplefthandclient.html#hplefthandclient.exceptions.HTTPUnauthorized.http_status">(hplefthandclient.exceptions.HTTPUnauthorized attribute)</a>
</dt>
<dt><a href="hplefthandclient.html#hplefthandclient.exceptions.HTTPUnsupportedMediaType.http_status">(hplefthandclient.exceptions.HTTPUnsupportedMediaType attribute)</a>
</dt>
<dt><a href="hplefthandclient.html#hplefthandclient.exceptions.HTTPVersionNotSupported.http_status">(hplefthandclient.exceptions.HTTPVersionNotSupported attribute)</a>
</dt>
</dl></dd>
<dt><a href="hplefthandclient.html#hplefthandclient.exceptions.HTTPBadGateway">HTTPBadGateway</a>
</dt>
<dt><a href="hplefthandclient.html#hplefthandclient.exceptions.HTTPBadRequest">HTTPBadRequest</a>
</dt>
<dd><dl>
<dt><a href="api/hplefthandclient/exceptions.html#hplefthandclient.exceptions.HTTPBadRequest">(class in hplefthandclient.exceptions)</a>
</dt>
</dl></dd>
<dt><a href="hplefthandclient.html#hplefthandclient.exceptions.HTTPConflict">HTTPConflict</a>
</dt>
<dt><a href="hplefthandclient.html#hplefthandclient.exceptions.HTTPExpectationFailed">HTTPExpectationFailed</a>
</dt>
<dt><a href="hplefthandclient.html#hplefthandclient.exceptions.HTTPForbidden">HTTPForbidden</a>
</dt>
<dt><a href="hplefthandclient.html#hplefthandclient.exceptions.HTTPGatewayTimeout">HTTPGatewayTimeout</a>
</dt>
<dt><a href="hplefthandclient.html#hplefthandclient.exceptions.HTTPGone">HTTPGone</a>
</dt>
<dt><a href="hplefthandclient.html#hplefthandclient.http.HTTPJSONRESTClient">HTTPJSONRESTClient (class in hplefthandclient.http)</a>
</dt>
<dt><a href="hplefthandclient.html#hplefthandclient.exceptions.HTTPLengthRequired">HTTPLengthRequired</a>
</dt>
</dl></td>
<td style="width: 33%" valign="top"><dl>
<dt><a href="hplefthandclient.html#hplefthandclient.exceptions.HTTPMethodNotAllowed">HTTPMethodNotAllowed</a>
</dt>
<dt><a href="hplefthandclient.html#hplefthandclient.exceptions.HTTPNotAcceptable">HTTPNotAcceptable</a>
</dt>
<dt><a href="hplefthandclient.html#hplefthandclient.exceptions.HTTPNotFound">HTTPNotFound</a>
</dt>
<dd><dl>
<dt><a href="api/hplefthandclient/exceptions.html#hplefthandclient.exceptions.HTTPNotFound">(class in hplefthandclient.exceptions)</a>
</dt>
</dl></dd>
<dt><a href="hplefthandclient.html#hplefthandclient.exceptions.HTTPNotImplemented">HTTPNotImplemented</a>
</dt>
<dt><a href="hplefthandclient.html#hplefthandclient.exceptions.HTTPPreconditionFailed">HTTPPreconditionFailed</a>
</dt>
<dt><a href="hplefthandclient.html#hplefthandclient.exceptions.HTTPProxyAuthRequired">HTTPProxyAuthRequired</a>
</dt>
<dt><a href="hplefthandclient.html#hplefthandclient.exceptions.HTTPRequestedRangeNotSatisfiable">HTTPRequestedRangeNotSatisfiable</a>
</dt>
<dt><a href="hplefthandclient.html#hplefthandclient.exceptions.HTTPRequestEntityTooLarge">HTTPRequestEntityTooLarge</a>
</dt>
<dt><a href="hplefthandclient.html#hplefthandclient.exceptions.HTTPRequestTimeout">HTTPRequestTimeout</a>
</dt>
<dt><a href="hplefthandclient.html#hplefthandclient.exceptions.HTTPRequestURITooLong">HTTPRequestURITooLong</a>
</dt>
<dt><a href="hplefthandclient.html#hplefthandclient.exceptions.HTTPServerError">HTTPServerError</a>
</dt>
<dt><a href="hplefthandclient.html#hplefthandclient.exceptions.HTTPServiceUnavailable">HTTPServiceUnavailable</a>
</dt>
<dt><a href="hplefthandclient.html#hplefthandclient.exceptions.HTTPTeaPot">HTTPTeaPot</a>
</dt>
<dt><a href="hplefthandclient.html#hplefthandclient.exceptions.HTTPUnauthorized">HTTPUnauthorized</a>
</dt>
<dt><a href="hplefthandclient.html#hplefthandclient.exceptions.HTTPUnsupportedMediaType">HTTPUnsupportedMediaType</a>
</dt>
<dt><a href="hplefthandclient.html#hplefthandclient.exceptions.HTTPVersionNotSupported">HTTPVersionNotSupported</a>
</dt>
</dl></td>
</tr></table>
<h2 id="L">L</h2>
<table style="width: 100%" class="indextable genindextable"><tr>
<td style="width: 33%" valign="top"><dl>
<dt><a href="hplefthandclient.html#hplefthandclient.client.HPLeftHandClient.login">login() (hplefthandclient.client.HPLeftHandClient method)</a>, <a href="api/hplefthandclient/client.html#hplefthandclient.client.HPLeftHandClient.login">[1]</a>
</dt>
</dl></td>
<td style="width: 33%" valign="top"><dl>
<dt><a href="hplefthandclient.html#hplefthandclient.client.HPLeftHandClient.logout">logout() (hplefthandclient.client.HPLeftHandClient method)</a>, <a href="api/hplefthandclient/client.html#hplefthandclient.client.HPLeftHandClient.logout">[1]</a>
</dt>
</dl></td>
</tr></table>
<h2 id="M">M</h2>
<table style="width: 100%" class="indextable genindextable"><tr>
<td style="width: 33%" valign="top"><dl>
<dt><a href="hplefthandclient.html#hplefthandclient.exceptions.HTTPBadGateway.message">message (hplefthandclient.exceptions.HTTPBadGateway attribute)</a>
</dt>
<dd><dl>
<dt><a href="hplefthandclient.html#hplefthandclient.exceptions.HTTPBadRequest.message">(hplefthandclient.exceptions.HTTPBadRequest attribute)</a>
</dt>
<dt><a href="hplefthandclient.html#hplefthandclient.exceptions.HTTPConflict.message">(hplefthandclient.exceptions.HTTPConflict attribute)</a>
</dt>
<dt><a href="hplefthandclient.html#hplefthandclient.exceptions.HTTPExpectationFailed.message">(hplefthandclient.exceptions.HTTPExpectationFailed attribute)</a>
</dt>
<dt><a href="hplefthandclient.html#hplefthandclient.exceptions.HTTPForbidden.message">(hplefthandclient.exceptions.HTTPForbidden attribute)</a>
</dt>
<dt><a href="hplefthandclient.html#hplefthandclient.exceptions.HTTPGatewayTimeout.message">(hplefthandclient.exceptions.HTTPGatewayTimeout attribute)</a>
</dt>
<dt><a href="hplefthandclient.html#hplefthandclient.exceptions.HTTPGone.message">(hplefthandclient.exceptions.HTTPGone attribute)</a>
</dt>
<dt><a href="hplefthandclient.html#hplefthandclient.exceptions.HTTPLengthRequired.message">(hplefthandclient.exceptions.HTTPLengthRequired attribute)</a>
</dt>
<dt><a href="hplefthandclient.html#hplefthandclient.exceptions.HTTPMethodNotAllowed.message">(hplefthandclient.exceptions.HTTPMethodNotAllowed attribute)</a>
</dt>
<dt><a href="hplefthandclient.html#hplefthandclient.exceptions.HTTPNotAcceptable.message">(hplefthandclient.exceptions.HTTPNotAcceptable attribute)</a>
</dt>
<dt><a href="hplefthandclient.html#hplefthandclient.exceptions.HTTPNotFound.message">(hplefthandclient.exceptions.HTTPNotFound attribute)</a>
</dt>
<dt><a href="hplefthandclient.html#hplefthandclient.exceptions.HTTPNotImplemented.message">(hplefthandclient.exceptions.HTTPNotImplemented attribute)</a>
</dt>
<dt><a href="hplefthandclient.html#hplefthandclient.exceptions.HTTPPreconditionFailed.message">(hplefthandclient.exceptions.HTTPPreconditionFailed attribute)</a>
</dt>
<dt><a href="hplefthandclient.html#hplefthandclient.exceptions.HTTPProxyAuthRequired.message">(hplefthandclient.exceptions.HTTPProxyAuthRequired attribute)</a>
</dt>
<dt><a href="hplefthandclient.html#hplefthandclient.exceptions.HTTPRequestEntityTooLarge.message">(hplefthandclient.exceptions.HTTPRequestEntityTooLarge attribute)</a>
</dt>
<dt><a href="hplefthandclient.html#hplefthandclient.exceptions.HTTPRequestTimeout.message">(hplefthandclient.exceptions.HTTPRequestTimeout attribute)</a>
</dt>
<dt><a href="hplefthandclient.html#hplefthandclient.exceptions.HTTPRequestURITooLong.message">(hplefthandclient.exceptions.HTTPRequestURITooLong attribute)</a>
</dt>
<dt><a href="hplefthandclient.html#hplefthandclient.exceptions.HTTPRequestedRangeNotSatisfiable.message">(hplefthandclient.exceptions.HTTPRequestedRangeNotSatisfiable attribute)</a>
</dt>
<dt><a href="hplefthandclient.html#hplefthandclient.exceptions.HTTPServerError.message">(hplefthandclient.exceptions.HTTPServerError attribute)</a>
</dt>
<dt><a href="hplefthandclient.html#hplefthandclient.exceptions.HTTPServiceUnavailable.message">(hplefthandclient.exceptions.HTTPServiceUnavailable attribute)</a>
</dt>
<dt><a href="hplefthandclient.html#hplefthandclient.exceptions.HTTPTeaPot.message">(hplefthandclient.exceptions.HTTPTeaPot attribute)</a>
</dt>
<dt><a href="hplefthandclient.html#hplefthandclient.exceptions.HTTPUnauthorized.message">(hplefthandclient.exceptions.HTTPUnauthorized attribute)</a>
</dt>
<dt><a href="hplefthandclient.html#hplefthandclient.exceptions.HTTPUnsupportedMediaType.message">(hplefthandclient.exceptions.HTTPUnsupportedMediaType attribute)</a>
</dt>
<dt><a href="hplefthandclient.html#hplefthandclient.exceptions.HTTPVersionNotSupported.message">(hplefthandclient.exceptions.HTTPVersionNotSupported attribute)</a>
</dt>
</dl></dd>
</dl></td>
<td style="width: 33%" valign="top"><dl>
<dt><a href="hplefthandclient.html#hplefthandclient.client.HPLeftHandClient.modifyVolume">modifyVolume() (hplefthandclient.client.HPLeftHandClient method)</a>, <a href="api/hplefthandclient/client.html#hplefthandclient.client.HPLeftHandClient.modifyVolume">[1]</a>
</dt>
</dl></td>
</tr></table>
<h2 id="N">N</h2>
<table style="width: 100%" class="indextable genindextable"><tr>
<td style="width: 33%" valign="top"><dl>
<dt><a href="hplefthandclient.html#hplefthandclient.exceptions.NoUniqueMatch">NoUniqueMatch</a>
</dt>
</dl></td>
</tr></table>
<h2 id="P">P</h2>
<table style="width: 100%" class="indextable genindextable"><tr>
<td style="width: 33%" valign="top"><dl>
<dt><a href="hplefthandclient.html#hplefthandclient.http.HTTPJSONRESTClient.post">post() (hplefthandclient.http.HTTPJSONRESTClient method)</a>
</dt>
</dl></td>
<td style="width: 33%" valign="top"><dl>
<dt><a href="hplefthandclient.html#hplefthandclient.http.HTTPJSONRESTClient.put">put() (hplefthandclient.http.HTTPJSONRESTClient method)</a>
</dt>
</dl></td>
</tr></table>
<h2 id="R">R</h2>
<table style="width: 100%" class="indextable genindextable"><tr>
<td style="width: 33%" valign="top"><dl>
<dt><a href="hplefthandclient.html#hplefthandclient.client.HPLeftHandClient.removeServerAccess">removeServerAccess() (hplefthandclient.client.HPLeftHandClient method)</a>, <a href="api/hplefthandclient/client.html#hplefthandclient.client.HPLeftHandClient.removeServerAccess">[1]</a>
</dt>
<dt><a href="hplefthandclient.html#hplefthandclient.http.HTTPJSONRESTClient.request">request() (hplefthandclient.http.HTTPJSONRESTClient method)</a>
</dt>
</dl></td>
<td style="width: 33%" valign="top"><dl>
<dt><a href="hplefthandclient.html#hplefthandclient.http.HTTPJSONRESTClient.reset_timings">reset_timings() (hplefthandclient.http.HTTPJSONRESTClient method)</a>
</dt>
</dl></td>
</tr></table>
<h2 id="S">S</h2>
<table style="width: 100%" class="indextable genindextable"><tr>
<td style="width: 33%" valign="top"><dl>
<dt><a href="hplefthandclient.html#hplefthandclient.http.HTTPJSONRESTClient.SESSION_COOKIE_NAME">SESSION_COOKIE_NAME (hplefthandclient.http.HTTPJSONRESTClient attribute)</a>
</dt>
<dt><a href="hplefthandclient.html#hplefthandclient.http.HTTPJSONRESTClient.set_debug_flag">set_debug_flag() (hplefthandclient.http.HTTPJSONRESTClient method)</a>
</dt>
</dl></td>
<td style="width: 33%" valign="top"><dl>
<dt><a href="hplefthandclient.html#hplefthandclient.http.HTTPJSONRESTClient.set_url">set_url() (hplefthandclient.http.HTTPJSONRESTClient method)</a>
</dt>
</dl></td>
</tr></table>
<h2 id="U">U</h2>
<table style="width: 100%" class="indextable genindextable"><tr>
<td style="width: 33%" valign="top"><dl>
<dt><a href="hplefthandclient.html#hplefthandclient.http.HTTPJSONRESTClient.unauthenticate">unauthenticate() (hplefthandclient.http.HTTPJSONRESTClient method)</a>
</dt>
<dt><a href="hplefthandclient.html#hplefthandclient.exceptions.UnsupportedVersion">UnsupportedVersion</a>
</dt>
</dl></td>
<td style="width: 33%" valign="top"><dl>
<dt><a href="hplefthandclient.html#hplefthandclient.http.HTTPJSONRESTClient.USER_AGENT">USER_AGENT (hplefthandclient.http.HTTPJSONRESTClient attribute)</a>
</dt>
</dl></td>
</tr></table>
<h2 id="V">V</h2>
<table style="width: 100%" class="indextable genindextable"><tr>
<td style="width: 33%" valign="top"><dl>
<dt><a href="api/hplefthandclient/index.html#hplefthandclient.version">version (in module hplefthandclient)</a>
</dt>
<dd><dl>
<dt><a href="hplefthandclient.html#hplefthandclient.__init__.version">(in module hplefthandclient.__init__)</a>
</dt>
</dl></dd>
</dl></td>
</tr></table>
</div>
</div>
</div>
<div class="sphinxsidebar">
<div class="sphinxsidebarwrapper">
<div id="searchbox" style="display: none">
<h3>Quick search</h3>
<form class="search" action="search.html" method="get">
<input type="text" name="q" />
<input type="submit" value="Go" />
<input type="hidden" name="check_keywords" value="yes" />
<input type="hidden" name="area" value="default" />
</form>
<p class="searchtip" style="font-size: 90%">
Enter search terms or a module, class or function name.
</p>
</div>
<script type="text/javascript">$('#searchbox').show(0);</script>
</div>
</div>
<div class="clearer"></div>
</div>
<div class="related">
<h3>Navigation</h3>
<ul>
<li class="right" style="margin-right: 10px">
<a href="#" title="General Index"
>index</a></li>
<li class="right" >
<a href="py-modindex.html" title="Python Module Index"
>modules</a> |</li>
<li><a href="index.html">HP LeftHand REST Client 1.0.0 documentation</a> &raquo;</li>
</ul>
</div>
<div class="footer">
&copy; Copyright 2013 Hewlett Packard Development Company, L.P..
Created using <a href="http://sphinx.pocoo.org/">Sphinx</a> 1.1.3.
</div>
</body>
</html>

File diff suppressed because it is too large Load Diff

View File

@ -1,169 +0,0 @@
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN"
"http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
<title>HPLeftHandClient 1.0.0 Documentation &mdash; HP LeftHand REST Client 1.0.0 documentation</title>
<link rel="stylesheet" href="_static/default.css" type="text/css" />
<link rel="stylesheet" href="_static/pygments.css" type="text/css" />
<script type="text/javascript">
var DOCUMENTATION_OPTIONS = {
URL_ROOT: '',
VERSION: '1.0.0',
COLLAPSE_INDEX: false,
FILE_SUFFIX: '.html',
HAS_SOURCE: true
};
</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>
<link rel="top" title="HP LeftHand REST Client 1.0.0 documentation" href="#" />
<link rel="next" title="Installing / Upgrading" href="installation.html" />
</head>
<body>
<div class="related">
<h3>Navigation</h3>
<ul>
<li class="right" style="margin-right: 10px">
<a href="genindex.html" title="General Index"
accesskey="I">index</a></li>
<li class="right" >
<a href="py-modindex.html" title="Python Module Index"
>modules</a> |</li>
<li class="right" >
<a href="installation.html" title="Installing / Upgrading"
accesskey="N">next</a> |</li>
<li><a href="#">HP LeftHand REST Client 1.0.0 documentation</a> &raquo;</li>
</ul>
</div>
<div class="document">
<div class="documentwrapper">
<div class="bodywrapper">
<div class="body">
<div class="section" id="hplefthandclient-release-documentation">
<h1>HPLeftHandClient 1.0.0 Documentation<a class="headerlink" href="#hplefthandclient-release-documentation" title="Permalink to this headline"></a></h1>
<div class="section" id="overview">
<h2>Overview<a class="headerlink" href="#overview" title="Permalink to this headline"></a></h2>
<p><strong>HPLeftHandClient</strong> is a Python package containing a class that uses
HTTP REST calls to talk with an HP LeftHand/StoreVirtual drive array.
distribution containing tools for working with
<a class="reference external" href="http://www.hp.com/go/storevirtual">LeftHand/StoreVirtual Storage Arrays</a>.
. This documentation attempts to explain
everything you need to know to use <strong>HPLeftHandClient</strong>.</p>
<dl class="docutils">
<dt><a class="reference internal" href="installation.html"><em>Installing / Upgrading</em></a></dt>
<dd>Instructions on how to get the distribution.</dd>
<dt><a class="reference internal" href="tutorial.html"><em>Tutorial</em></a></dt>
<dd>Start here for a quick overview.</dd>
<dt><a class="reference internal" href="api/index.html"><em>API Documentation</em></a></dt>
<dd>The complete API documentation, organized by module.</dd>
</dl>
</div>
<div class="section" id="issues">
<h2>Issues<a class="headerlink" href="#issues" title="Permalink to this headline"></a></h2>
<p>All issues should be reported (and can be tracked / voted for /
commented on) at the main <a class="reference external" href="https://github.com/WaltHP/python-hplefthandclient/issues">github issues</a>, in the &#8220;LeftHand Python Driver&#8221;
project.</p>
</div>
<div class="section" id="changes">
<h2>Changes<a class="headerlink" href="#changes" title="Permalink to this headline"></a></h2>
<p>See the <a class="reference internal" href="changelog.html"><em>Changelog</em></a> for a full list of changes to HPLeftHandClient.</p>
</div>
<div class="section" id="about-this-documentation">
<h2>About This Documentation<a class="headerlink" href="#about-this-documentation" title="Permalink to this headline"></a></h2>
<p>This documentation is generated using the <a class="reference external" href="http://sphinx.pocoo.org/">Sphinx</a> documentation generator. The source files
for the documentation are located in the <em>doc/</em> directory of the
<strong>HPLeftHandClient</strong> distribution. To generate the docs locally run the
following command from the root directory of the <strong>HPLeftHandClient</strong></p>
<div class="highlight-bash"><div class="highlight"><pre><span class="nv">$ </span>python setup.py doc
</pre></div>
</div>
<div class="toctree-wrapper compound">
</div>
</div>
</div>
<div class="section" id="indices-and-tables">
<h1>Indices and tables<a class="headerlink" href="#indices-and-tables" title="Permalink to this headline"></a></h1>
<ul class="simple">
<li><a class="reference internal" href="genindex.html"><em>Index</em></a></li>
<li><a class="reference internal" href="py-modindex.html"><em>Module Index</em></a></li>
<li><a class="reference internal" href="search.html"><em>Search Page</em></a></li>
</ul>
</div>
</div>
</div>
</div>
<div class="sphinxsidebar">
<div class="sphinxsidebarwrapper">
<h3><a href="#">Table Of Contents</a></h3>
<ul>
<li><a class="reference internal" href="#">HPLeftHandClient 1.0.0 Documentation</a><ul>
<li><a class="reference internal" href="#overview">Overview</a></li>
<li><a class="reference internal" href="#issues">Issues</a></li>
<li><a class="reference internal" href="#changes">Changes</a></li>
<li><a class="reference internal" href="#about-this-documentation">About This Documentation</a><ul>
</ul>
</li>
</ul>
</li>
<li><a class="reference internal" href="#indices-and-tables">Indices and tables</a></li>
</ul>
<h4>Next topic</h4>
<p class="topless"><a href="installation.html"
title="next chapter">Installing / Upgrading</a></p>
<h3>This Page</h3>
<ul class="this-page-menu">
<li><a href="_sources/index.txt"
rel="nofollow">Show Source</a></li>
</ul>
<div id="searchbox" style="display: none">
<h3>Quick search</h3>
<form class="search" action="search.html" method="get">
<input type="text" name="q" />
<input type="submit" value="Go" />
<input type="hidden" name="check_keywords" value="yes" />
<input type="hidden" name="area" value="default" />
</form>
<p class="searchtip" style="font-size: 90%">
Enter search terms or a module, class or function name.
</p>
</div>
<script type="text/javascript">$('#searchbox').show(0);</script>
</div>
</div>
<div class="clearer"></div>
</div>
<div class="related">
<h3>Navigation</h3>
<ul>
<li class="right" style="margin-right: 10px">
<a href="genindex.html" title="General Index"
>index</a></li>
<li class="right" >
<a href="py-modindex.html" title="Python Module Index"
>modules</a> |</li>
<li class="right" >
<a href="installation.html" title="Installing / Upgrading"
>next</a> |</li>
<li><a href="#">HP LeftHand REST Client 1.0.0 documentation</a> &raquo;</li>
</ul>
</div>
<div class="footer">
&copy; Copyright 2013 Hewlett Packard Development Company, L.P..
Created using <a href="http://sphinx.pocoo.org/">Sphinx</a> 1.1.3.
</div>
</body>
</html>

View File

@ -1,164 +0,0 @@
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN"
"http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
<title>Installing / Upgrading &mdash; HP LeftHand REST Client 1.0.0 documentation</title>
<link rel="stylesheet" href="_static/default.css" type="text/css" />
<link rel="stylesheet" href="_static/pygments.css" type="text/css" />
<script type="text/javascript">
var DOCUMENTATION_OPTIONS = {
URL_ROOT: '',
VERSION: '1.0.0',
COLLAPSE_INDEX: false,
FILE_SUFFIX: '.html',
HAS_SOURCE: true
};
</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>
<link rel="top" title="HP LeftHand REST Client 1.0.0 documentation" href="index.html" />
<link rel="next" title="Tutorial" href="tutorial.html" />
<link rel="prev" title="HPLeftHandClient 1.0.0 Documentation" href="index.html" />
</head>
<body>
<div class="related">
<h3>Navigation</h3>
<ul>
<li class="right" style="margin-right: 10px">
<a href="genindex.html" title="General Index"
accesskey="I">index</a></li>
<li class="right" >
<a href="py-modindex.html" title="Python Module Index"
>modules</a> |</li>
<li class="right" >
<a href="tutorial.html" title="Tutorial"
accesskey="N">next</a> |</li>
<li class="right" >
<a href="index.html" title="HPLeftHandClient 1.0.0 Documentation"
accesskey="P">previous</a> |</li>
<li><a href="index.html">HP LeftHand REST Client 1.0.0 documentation</a> &raquo;</li>
</ul>
</div>
<div class="document">
<div class="documentwrapper">
<div class="bodywrapper">
<div class="body">
<div class="section" id="installing-upgrading">
<h1>Installing / Upgrading<a class="headerlink" href="#installing-upgrading" title="Permalink to this headline"></a></h1>
<p><strong>HPLeftHandClient</strong> is in the <a class="reference external" href="http://pypi.python.org/pypi/hplefthandclient/">Python Package Index</a>.</p>
<div class="section" id="installing-with-pip">
<h2>Installing with pip<a class="headerlink" href="#installing-with-pip" title="Permalink to this headline"></a></h2>
<p>We prefer <a class="reference external" href="http://pypi.python.org/pypi/pip">pip</a>
to install hplefthandclient on platforms other than Windows:</p>
<div class="highlight-bash"><div class="highlight"><pre><span class="nv">$ </span>pip install hplefthandclient
</pre></div>
</div>
<p>To upgrade using pip:</p>
<div class="highlight-bash"><div class="highlight"><pre><span class="nv">$ </span>pip install --upgrade hplefthandclient
</pre></div>
</div>
</div>
<div class="section" id="installing-with-easy-install">
<h2>Installing with easy_install<a class="headerlink" href="#installing-with-easy-install" title="Permalink to this headline"></a></h2>
<p>If you must install hplefthandclient using
<a class="reference external" href="http://pypi.python.org/pypi/setuptools">setuptools</a> do:</p>
<div class="highlight-bash"><div class="highlight"><pre><span class="nv">$ </span>easy_install hplefthandclient
</pre></div>
</div>
<p>To upgrade do:</p>
<div class="highlight-bash"><div class="highlight"><pre><span class="nv">$ </span>easy_install -U hplefthandclient
</pre></div>
</div>
</div>
<div class="section" id="installing-from-source">
<h2>Installing from source<a class="headerlink" href="#installing-from-source" title="Permalink to this headline"></a></h2>
<p>If you&#8217;d rather install directly from the source (i.e. to stay on the
bleeding edge), install the C extension dependencies then check out the
latest source from github and install the driver from the resulting tree:</p>
<div class="highlight-bash"><div class="highlight"><pre><span class="nv">$ </span>git clone git://github.com/WaltHP/python-3parclient.git
<span class="nv">$ </span><span class="nb">cd </span>pyton-hplefthandclient/
<span class="nv">$ </span>python setup.py install
</pre></div>
</div>
</div>
</div>
</div>
</div>
</div>
<div class="sphinxsidebar">
<div class="sphinxsidebarwrapper">
<h3><a href="index.html">Table Of Contents</a></h3>
<ul>
<li><a class="reference internal" href="#">Installing / Upgrading</a><ul>
<li><a class="reference internal" href="#installing-with-pip">Installing with pip</a></li>
<li><a class="reference internal" href="#installing-with-easy-install">Installing with easy_install</a></li>
<li><a class="reference internal" href="#installing-from-source">Installing from source</a></li>
</ul>
</li>
</ul>
<h4>Previous topic</h4>
<p class="topless"><a href="index.html"
title="previous chapter">HPLeftHandClient 1.0.0 Documentation</a></p>
<h4>Next topic</h4>
<p class="topless"><a href="tutorial.html"
title="next chapter">Tutorial</a></p>
<h3>This Page</h3>
<ul class="this-page-menu">
<li><a href="_sources/installation.txt"
rel="nofollow">Show Source</a></li>
</ul>
<div id="searchbox" style="display: none">
<h3>Quick search</h3>
<form class="search" action="search.html" method="get">
<input type="text" name="q" />
<input type="submit" value="Go" />
<input type="hidden" name="check_keywords" value="yes" />
<input type="hidden" name="area" value="default" />
</form>
<p class="searchtip" style="font-size: 90%">
Enter search terms or a module, class or function name.
</p>
</div>
<script type="text/javascript">$('#searchbox').show(0);</script>
</div>
</div>
<div class="clearer"></div>
</div>
<div class="related">
<h3>Navigation</h3>
<ul>
<li class="right" style="margin-right: 10px">
<a href="genindex.html" title="General Index"
>index</a></li>
<li class="right" >
<a href="py-modindex.html" title="Python Module Index"
>modules</a> |</li>
<li class="right" >
<a href="tutorial.html" title="Tutorial"
>next</a> |</li>
<li class="right" >
<a href="index.html" title="HPLeftHandClient 1.0.0 Documentation"
>previous</a> |</li>
<li><a href="index.html">HP LeftHand REST Client 1.0.0 documentation</a> &raquo;</li>
</ul>
</div>
<div class="footer">
&copy; Copyright 2013 Hewlett Packard Development Company, L.P..
Created using <a href="http://sphinx.pocoo.org/">Sphinx</a> 1.1.3.
</div>
</body>
</html>

Binary file not shown.

View File

@ -1,131 +0,0 @@
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN"
"http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
<title>Python Module Index &mdash; HP LeftHand REST Client 1.0.0 documentation</title>
<link rel="stylesheet" href="_static/default.css" type="text/css" />
<link rel="stylesheet" href="_static/pygments.css" type="text/css" />
<script type="text/javascript">
var DOCUMENTATION_OPTIONS = {
URL_ROOT: '',
VERSION: '1.0.0',
COLLAPSE_INDEX: false,
FILE_SUFFIX: '.html',
HAS_SOURCE: true
};
</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>
<link rel="top" title="HP LeftHand REST Client 1.0.0 documentation" href="index.html" />
</head>
<body>
<div class="related">
<h3>Navigation</h3>
<ul>
<li class="right" style="margin-right: 10px">
<a href="genindex.html" title="General Index"
accesskey="I">index</a></li>
<li class="right" >
<a href="#" title="Python Module Index"
>modules</a> |</li>
<li><a href="index.html">HP LeftHand REST Client 1.0.0 documentation</a> &raquo;</li>
</ul>
</div>
<div class="document">
<div class="documentwrapper">
<div class="bodywrapper">
<div class="body">
<h1>Python Module Index</h1>
<div class="modindex-jumpbox">
<a href="#cap-h"><strong>h</strong></a>
</div>
<table class="indextable modindextable" cellspacing="0" cellpadding="2">
<tr class="pcap"><td></td><td>&nbsp;</td><td></td></tr>
<tr class="cap" id="cap-h"><td></td><td>
<strong>h</strong></td><td></td></tr>
<tr>
<td><img src="_static/minus.png" class="toggler"
id="toggle-1" style="display: none" alt="-" /></td>
<td>
<a href="api/hplefthandclient/index.html#module-hplefthandclient"><tt class="xref">hplefthandclient</tt></a></td><td>
<em>HP LeftHand REST Web client</em></td></tr>
<tr class="cg-1">
<td></td>
<td>&nbsp;&nbsp;&nbsp;
<a href="hplefthandclient.html#module-hplefthandclient.__init__"><tt class="xref">hplefthandclient.__init__</tt></a></td><td>
<em></em></td></tr>
<tr class="cg-1">
<td></td>
<td>&nbsp;&nbsp;&nbsp;
<a href="hplefthandclient.html#module-hplefthandclient.client"><tt class="xref">hplefthandclient.client</tt></a></td><td>
<em></em></td></tr>
<tr class="cg-1">
<td></td>
<td>&nbsp;&nbsp;&nbsp;
<a href="hplefthandclient.html#module-hplefthandclient.exceptions"><tt class="xref">hplefthandclient.exceptions</tt></a></td><td>
<em></em></td></tr>
<tr class="cg-1">
<td></td>
<td>&nbsp;&nbsp;&nbsp;
<a href="hplefthandclient.html#module-hplefthandclient.http"><tt class="xref">hplefthandclient.http</tt></a></td><td>
<em></em></td></tr>
</table>
</div>
</div>
</div>
<div class="sphinxsidebar">
<div class="sphinxsidebarwrapper">
<div id="searchbox" style="display: none">
<h3>Quick search</h3>
<form class="search" action="search.html" method="get">
<input type="text" name="q" />
<input type="submit" value="Go" />
<input type="hidden" name="check_keywords" value="yes" />
<input type="hidden" name="area" value="default" />
</form>
<p class="searchtip" style="font-size: 90%">
Enter search terms or a module, class or function name.
</p>
</div>
<script type="text/javascript">$('#searchbox').show(0);</script>
</div>
</div>
<div class="clearer"></div>
</div>
<div class="related">
<h3>Navigation</h3>
<ul>
<li class="right" style="margin-right: 10px">
<a href="genindex.html" title="General Index"
>index</a></li>
<li class="right" >
<a href="#" title="Python Module Index"
>modules</a> |</li>
<li><a href="index.html">HP LeftHand REST Client 1.0.0 documentation</a> &raquo;</li>
</ul>
</div>
<div class="footer">
&copy; Copyright 2013 Hewlett Packard Development Company, L.P..
Created using <a href="http://sphinx.pocoo.org/">Sphinx</a> 1.1.3.
</div>
</body>
</html>

View File

@ -1,105 +0,0 @@
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN"
"http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
<title>Search &mdash; HP LeftHand REST Client 1.0.0 documentation</title>
<link rel="stylesheet" href="_static/default.css" type="text/css" />
<link rel="stylesheet" href="_static/pygments.css" type="text/css" />
<script type="text/javascript">
var DOCUMENTATION_OPTIONS = {
URL_ROOT: '',
VERSION: '1.0.0',
COLLAPSE_INDEX: false,
FILE_SUFFIX: '.html',
HAS_SOURCE: true
};
</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/searchtools.js"></script>
<link rel="top" title="HP LeftHand REST Client 1.0.0 documentation" href="index.html" />
<script type="text/javascript">
jQuery(function() { Search.loadIndex("searchindex.js"); });
</script>
</head>
<body>
<div class="related">
<h3>Navigation</h3>
<ul>
<li class="right" style="margin-right: 10px">
<a href="genindex.html" title="General Index"
accesskey="I">index</a></li>
<li class="right" >
<a href="py-modindex.html" title="Python Module Index"
>modules</a> |</li>
<li><a href="index.html">HP LeftHand REST Client 1.0.0 documentation</a> &raquo;</li>
</ul>
</div>
<div class="document">
<div class="documentwrapper">
<div class="bodywrapper">
<div class="body">
<h1 id="search-documentation">Search</h1>
<div id="fallback" class="admonition warning">
<script type="text/javascript">$('#fallback').hide();</script>
<p>
Please activate JavaScript to enable the search
functionality.
</p>
</div>
<p>
From here you can search these documents. Enter your search
words into the box below and click "search". Note that the search
function will automatically search for all of the words. Pages
containing fewer words won't appear in the result list.
</p>
<form action="" method="get">
<input type="text" name="q" value="" />
<input type="submit" value="search" />
<span id="search-progress" style="padding-left: 10px"></span>
</form>
<div id="search-results">
</div>
</div>
</div>
</div>
<div class="sphinxsidebar">
<div class="sphinxsidebarwrapper">
</div>
</div>
<div class="clearer"></div>
</div>
<div class="related">
<h3>Navigation</h3>
<ul>
<li class="right" style="margin-right: 10px">
<a href="genindex.html" title="General Index"
>index</a></li>
<li class="right" >
<a href="py-modindex.html" title="Python Module Index"
>modules</a> |</li>
<li><a href="index.html">HP LeftHand REST Client 1.0.0 documentation</a> &raquo;</li>
</ul>
</div>
<div class="footer">
&copy; Copyright 2013 Hewlett Packard Development Company, L.P..
Created using <a href="http://sphinx.pocoo.org/">Sphinx</a> 1.1.3.
</div>
</body>
</html>

File diff suppressed because one or more lines are too long

View File

@ -1,187 +0,0 @@
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN"
"http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
<title>Tutorial &mdash; HP LeftHand REST Client 1.0.0 documentation</title>
<link rel="stylesheet" href="_static/default.css" type="text/css" />
<link rel="stylesheet" href="_static/pygments.css" type="text/css" />
<script type="text/javascript">
var DOCUMENTATION_OPTIONS = {
URL_ROOT: '',
VERSION: '1.0.0',
COLLAPSE_INDEX: false,
FILE_SUFFIX: '.html',
HAS_SOURCE: true
};
</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>
<link rel="top" title="HP LeftHand REST Client 1.0.0 documentation" href="index.html" />
<link rel="next" title="Changelog" href="changelog.html" />
<link rel="prev" title="Installing / Upgrading" href="installation.html" />
</head>
<body>
<div class="related">
<h3>Navigation</h3>
<ul>
<li class="right" style="margin-right: 10px">
<a href="genindex.html" title="General Index"
accesskey="I">index</a></li>
<li class="right" >
<a href="py-modindex.html" title="Python Module Index"
>modules</a> |</li>
<li class="right" >
<a href="changelog.html" title="Changelog"
accesskey="N">next</a> |</li>
<li class="right" >
<a href="installation.html" title="Installing / Upgrading"
accesskey="P">previous</a> |</li>
<li><a href="index.html">HP LeftHand REST Client 1.0.0 documentation</a> &raquo;</li>
</ul>
</div>
<div class="document">
<div class="documentwrapper">
<div class="bodywrapper">
<div class="body">
<div class="section" id="tutorial">
<h1>Tutorial<a class="headerlink" href="#tutorial" title="Permalink to this headline"></a></h1>
<p>This tutorial is intended as an introduction to working with
<strong>HPLeftHandClient</strong>.</p>
<div class="section" id="prerequisites">
<h2>Prerequisites<a class="headerlink" href="#prerequisites" title="Permalink to this headline"></a></h2>
<p>Before we start, make sure that you have the <strong>HPLeftHandClient</strong> distribution
<a class="reference internal" href="installation.html"><em>installed</em></a>. In the Python shell, the following
should run without raising an exception:</p>
<div class="highlight-bash"><div class="highlight"><pre>&gt;&gt;&gt; import hplefthandclient
</pre></div>
</div>
<p>This tutorial also assumes that a LeftHand array is up and running and the
LeftHand OS is running.</p>
</div>
<div class="section" id="create-the-client-and-login">
<h2>Create the Client and login<a class="headerlink" href="#create-the-client-and-login" title="Permalink to this headline"></a></h2>
<p>The first step when working with <strong>HPLeftHandClient</strong> is to create a
<a class="reference internal" href="hplefthandclient.html#hplefthandclient.client.HPLeftHandClient" title="hplefthandclient.client.HPLeftHandClient"><tt class="xref py py-class docutils literal"><span class="pre">HPLeftHandClient</span></tt></a> to the LeftHand drive array
and logging in to create the session. You must <a class="reference internal" href="hplefthandclient.html#hplefthandclient.client.HPLeftHandClient.login" title="hplefthandclient.client.HPLeftHandClient.login"><tt class="xref py py-meth docutils literal"><span class="pre">login()</span></tt></a> prior to calling the other APIs to do work on the LeftHand.
Doing so is easy:</p>
<div class="highlight-python"><div class="highlight"><pre><span class="kn">from</span> <span class="nn">hplefthandclient</span> <span class="kn">import</span> <span class="n">client</span><span class="p">,</span> <span class="n">exceptions</span>
<span class="c">#this creates the client object and sets the url to the</span>
<span class="c">#LeftHand server with IP 10.10.10.10 on port 8008.</span>
<span class="n">cl</span> <span class="o">=</span> <span class="n">client</span><span class="o">.</span><span class="n">HPLeftHandClient</span><span class="p">(</span><span class="s">&quot;https://10.10.10.10:8008/api/v1&quot;</span><span class="p">)</span>
<span class="k">try</span><span class="p">:</span>
<span class="n">cl</span><span class="o">.</span><span class="n">login</span><span class="p">(</span><span class="n">username</span><span class="p">,</span> <span class="n">password</span><span class="p">)</span>
<span class="k">print</span> <span class="s">&quot;Login worked!&quot;</span>
<span class="k">except</span> <span class="n">exceptions</span><span class="o">.</span><span class="n">HTTPUnauthorized</span> <span class="k">as</span> <span class="n">ex</span><span class="p">:</span>
<span class="k">print</span> <span class="s">&quot;Login failed.&quot;</span>
</pre></div>
</div>
<p>When you are done with the the client, it&#8217;s a good idea to logout from
the LeftHand so there isn&#8217;t a stale session sitting around.</p>
<div class="highlight-python"><div class="highlight"><pre><span class="n">cl</span><span class="o">.</span><span class="n">logout</span><span class="p">()</span>
<span class="k">print</span> <span class="s">&quot;logout worked&quot;</span>
</pre></div>
</div>
</div>
<div class="section" id="getting-a-list-of-volumes">
<h2>Getting a list of Volumes<a class="headerlink" href="#getting-a-list-of-volumes" title="Permalink to this headline"></a></h2>
<p>After you have logged in, you can start making calls to the LeftHand APIs.
A simple example is getting a list of existing volumes on the array with
a call to <a class="reference internal" href="hplefthandclient.html#hplefthandclient.client.HPLeftHandClient.getVolumes" title="hplefthandclient.client.HPLeftHandClient.getVolumes"><tt class="xref py py-meth docutils literal"><span class="pre">getVolumes()</span></tt></a>.</p>
<div class="highlight-python"><div class="highlight"><pre><span class="kn">import</span> <span class="nn">pprint</span>
<span class="k">try</span><span class="p">:</span>
<span class="n">volumes</span> <span class="o">=</span> <span class="n">cl</span><span class="o">.</span><span class="n">getVolumes</span><span class="p">()</span>
<span class="n">pprint</span><span class="o">.</span><span class="n">pprint</span><span class="p">(</span><span class="n">volumes</span><span class="p">)</span>
<span class="k">except</span> <span class="n">exceptions</span><span class="o">.</span><span class="n">HTTPUnauthorized</span> <span class="k">as</span> <span class="n">ex</span><span class="p">:</span>
<span class="k">print</span> <span class="s">&quot;You must login first&quot;</span>
<span class="k">except</span> <span class="ne">Exception</span> <span class="k">as</span> <span class="n">ex</span><span class="p">:</span>
<span class="c">#something unexpected happened</span>
<span class="k">print</span> <span class="n">ex</span>
</pre></div>
</div>
<div class="admonition note">
<p class="first admonition-title">Note</p>
<p class="last">volumes is an array of volumes in the above call</p>
</div>
</div>
</div>
</div>
</div>
</div>
<div class="sphinxsidebar">
<div class="sphinxsidebarwrapper">
<h3><a href="index.html">Table Of Contents</a></h3>
<ul>
<li><a class="reference internal" href="#">Tutorial</a><ul>
<li><a class="reference internal" href="#prerequisites">Prerequisites</a></li>
<li><a class="reference internal" href="#create-the-client-and-login">Create the Client and login</a></li>
<li><a class="reference internal" href="#getting-a-list-of-volumes">Getting a list of Volumes</a></li>
</ul>
</li>
</ul>
<h4>Previous topic</h4>
<p class="topless"><a href="installation.html"
title="previous chapter">Installing / Upgrading</a></p>
<h4>Next topic</h4>
<p class="topless"><a href="changelog.html"
title="next chapter">Changelog</a></p>
<h3>This Page</h3>
<ul class="this-page-menu">
<li><a href="_sources/tutorial.txt"
rel="nofollow">Show Source</a></li>
</ul>
<div id="searchbox" style="display: none">
<h3>Quick search</h3>
<form class="search" action="search.html" method="get">
<input type="text" name="q" />
<input type="submit" value="Go" />
<input type="hidden" name="check_keywords" value="yes" />
<input type="hidden" name="area" value="default" />
</form>
<p class="searchtip" style="font-size: 90%">
Enter search terms or a module, class or function name.
</p>
</div>
<script type="text/javascript">$('#searchbox').show(0);</script>
</div>
</div>
<div class="clearer"></div>
</div>
<div class="related">
<h3>Navigation</h3>
<ul>
<li class="right" style="margin-right: 10px">
<a href="genindex.html" title="General Index"
>index</a></li>
<li class="right" >
<a href="py-modindex.html" title="Python Module Index"
>modules</a> |</li>
<li class="right" >
<a href="changelog.html" title="Changelog"
>next</a> |</li>
<li class="right" >
<a href="installation.html" title="Installing / Upgrading"
>previous</a> |</li>
<li><a href="index.html">HP LeftHand REST Client 1.0.0 documentation</a> &raquo;</li>
</ul>
</div>
<div class="footer">
&copy; Copyright 2013 Hewlett Packard Development Company, L.P..
Created using <a href="http://sphinx.pocoo.org/">Sphinx</a> 1.1.3.
</div>
</body>
</html>