Sophie

Sophie

distrib > Mageia > 5 > x86_64 > media > core-release > by-pkgid > 1314a0a306be8f76ce5f18ecd071f564 > files > 45

python-rtslib-doc-2.1.fb49-5.mga5.noarch.rpm

<?xml version="1.0" encoding="ascii"?>
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN"
          "DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml" xml:lang="en" lang="en">
<head>
  <title>rtslib.utils</title>
  <link rel="stylesheet" href="epydoc.css" type="text/css" />
  <script type="text/javascript" src="epydoc.js"></script>
</head>

<body bgcolor="white" text="black" link="blue" vlink="#204080"
      alink="#204080">
<!-- ==================== NAVIGATION BAR ==================== -->
<table class="navbar" border="0" width="100%" cellpadding="0"
       bgcolor="#a0c0ff" cellspacing="0">
  <tr valign="middle">
  <!-- Home link -->
      <th>&nbsp;&nbsp;&nbsp;<a
        href="rtslib-module.html">Home</a>&nbsp;&nbsp;&nbsp;</th>

  <!-- Tree link -->
      <th>&nbsp;&nbsp;&nbsp;<a
        href="module-tree.html">Trees</a>&nbsp;&nbsp;&nbsp;</th>

  <!-- Index link -->
      <th>&nbsp;&nbsp;&nbsp;<a
        href="identifier-index.html">Indices</a>&nbsp;&nbsp;&nbsp;</th>

  <!-- Help link -->
      <th>&nbsp;&nbsp;&nbsp;<a
        href="help.html">Help</a>&nbsp;&nbsp;&nbsp;</th>

  <!-- Project homepage -->
      <th class="navbar" align="right" width="100%">
        <table border="0" cellpadding="0" cellspacing="0">
          <tr><th class="navbar" align="center"
            >rtslib</th>
          </tr></table></th>
  </tr>
</table>
<table width="100%" cellpadding="0" cellspacing="0">
  <tr valign="top">
    <td width="100%">
      <span class="breadcrumbs">
        <a href="rtslib-module.html">Package&nbsp;rtslib</a> ::
        Module&nbsp;utils
      </span>
    </td>
    <td>
      <table cellpadding="0" cellspacing="0">
        <!-- hide/show private -->
        <tr><td align="right"><span class="options">[<a href="javascript:void(0);" class="privatelink"
    onclick="toggle_private();">hide&nbsp;private</a>]</span></td></tr>
        <tr><td align="right"><span class="options"
            >[<a href="frames.html" target="_top">frames</a
            >]&nbsp;|&nbsp;<a href="rtslib.utils-module.html"
            target="_top">no&nbsp;frames</a>]</span></td></tr>
      </table>
    </td>
  </tr>
</table>
<!-- ==================== MODULE DESCRIPTION ==================== -->
<h1 class="epydoc">Module utils</h1><p class="nomargin-top"></p>
<pre class="literalblock">

Provides various utility functions.

This file is part of RTSLib.
Copyright (c) 2011-2013 by Datera, Inc
Copyright (c) 2011-2014 by Red Hat, Inc.

Licensed under the Apache License, Version 2.0 (the &quot;License&quot;); you may
not use this file except in compliance with the License. You may obtain
a copy of the License at

    http://www.apache.org/licenses/LICENSE-2.0

Unless required by applicable law or agreed to in writing, software
distributed under the License is distributed on an &quot;AS IS&quot; BASIS, WITHOUT
WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the
License for the specific language governing permissions and limitations
under the License.

</pre>

<!-- ==================== CLASSES ==================== -->
<a name="section-Classes"></a>
<table class="summary" border="1" cellpadding="3"
       cellspacing="0" width="100%" bgcolor="white">
<tr bgcolor="#70b0f0" class="table-header">
  <td colspan="2" class="table-header">
    <table border="0" cellpadding="0" cellspacing="0" width="100%">
      <tr valign="top">
        <td align="left"><span class="table-header">Classes</span></td>
        <td align="right" valign="top"
         ><span class="options">[<a href="#section-Classes"
         class="privatelink" onclick="toggle_private();"
         >hide private</a>]</span></td>
      </tr>
    </table>
  </td>
</tr>
<tr>
    <td width="15%" align="right" valign="top" class="summary">
      <span class="summary-type">&nbsp;</span>
    </td><td class="summary">
        <a href="rtslib.utils.RTSLibError-class.html" class="summary-name">RTSLibError</a><br />
      Generic rtslib error.
    </td>
  </tr>
<tr>
    <td width="15%" align="right" valign="top" class="summary">
      <span class="summary-type">&nbsp;</span>
    </td><td class="summary">
        <a href="rtslib.utils.RTSLibBrokenLink-class.html" class="summary-name">RTSLibBrokenLink</a><br />
      Broken link in configfs, i.e.
    </td>
  </tr>
<tr>
    <td width="15%" align="right" valign="top" class="summary">
      <span class="summary-type">&nbsp;</span>
    </td><td class="summary">
        <a href="rtslib.utils.RTSLibNotInCFS-class.html" class="summary-name">RTSLibNotInCFS</a><br />
      The underlying configfs object does not exist.
    </td>
  </tr>
</table>
<!-- ==================== FUNCTIONS ==================== -->
<a name="section-Functions"></a>
<table class="summary" border="1" cellpadding="3"
       cellspacing="0" width="100%" bgcolor="white">
<tr bgcolor="#70b0f0" class="table-header">
  <td colspan="2" class="table-header">
    <table border="0" cellpadding="0" cellspacing="0" width="100%">
      <tr valign="top">
        <td align="left"><span class="table-header">Functions</span></td>
        <td align="right" valign="top"
         ><span class="options">[<a href="#section-Functions"
         class="privatelink" onclick="toggle_private();"
         >hide private</a>]</span></td>
      </tr>
    </table>
  </td>
</tr>
<tr>
    <td width="15%" align="right" valign="top" class="summary">
      <span class="summary-type">&nbsp;</span>
    </td><td class="summary">
      <table width="100%" cellpadding="0" cellspacing="0" border="0">
        <tr>
          <td><span class="summary-sig"><a href="rtslib.utils-module.html#fwrite" class="summary-sig-name">fwrite</a>(<span class="summary-sig-arg">path</span>,
        <span class="summary-sig-arg">string</span>)</span><br />
      This function writes a string to a file, and takes care of opening it
      and closing it.</td>
          <td align="right" valign="top">
            
            
          </td>
        </tr>
      </table>
      
    </td>
  </tr>
<tr>
    <td width="15%" align="right" valign="top" class="summary">
      <span class="summary-type">&nbsp;</span>
    </td><td class="summary">
      <table width="100%" cellpadding="0" cellspacing="0" border="0">
        <tr>
          <td><span class="summary-sig"><a href="rtslib.utils-module.html#fread" class="summary-sig-name">fread</a>(<span class="summary-sig-arg">path</span>)</span><br />
      This function reads the contents of a file.</td>
          <td align="right" valign="top">
            
            
          </td>
        </tr>
      </table>
      
    </td>
  </tr>
<tr>
    <td width="15%" align="right" valign="top" class="summary">
      <span class="summary-type">&nbsp;</span>
    </td><td class="summary">
      <table width="100%" cellpadding="0" cellspacing="0" border="0">
        <tr>
          <td><span class="summary-sig"><a href="rtslib.utils-module.html#is_dev_in_use" class="summary-sig-name">is_dev_in_use</a>(<span class="summary-sig-arg">path</span>)</span><br />
      This function will check if the device or file referenced by path is 
      already mounted or used as a storage object backend.</td>
          <td align="right" valign="top">
            
            
          </td>
        </tr>
      </table>
      
    </td>
  </tr>
<tr>
    <td width="15%" align="right" valign="top" class="summary">
      <span class="summary-type">&nbsp;</span>
    </td><td class="summary">
      <table width="100%" cellpadding="0" cellspacing="0" border="0">
        <tr>
          <td><span class="summary-sig"><a name="get_blockdev_size"></a><span class="summary-sig-name">get_blockdev_size</span>(<span class="summary-sig-arg">path</span>)</span><br />
      Returns the size in logical blocks of a disk-type block device.</td>
          <td align="right" valign="top">
            
            
          </td>
        </tr>
      </table>
      
    </td>
  </tr>
<tr>
    <td width="15%" align="right" valign="top" class="summary">
      <span class="summary-type">&nbsp;</span>
    </td><td class="summary">
      <table width="100%" cellpadding="0" cellspacing="0" border="0">
        <tr>
          <td><span class="summary-sig"><a name="get_block_size"></a><span class="summary-sig-name">get_block_size</span>(<span class="summary-sig-arg">path</span>)</span><br />
      Returns the size in logical blocks of a disk-type block device.</td>
          <td align="right" valign="top">
            
            
          </td>
        </tr>
      </table>
      
    </td>
  </tr>
<tr>
    <td width="15%" align="right" valign="top" class="summary">
      <span class="summary-type">&nbsp;</span>
    </td><td class="summary">
      <table width="100%" cellpadding="0" cellspacing="0" border="0">
        <tr>
          <td><span class="summary-sig"><a href="rtslib.utils-module.html#get_blockdev_type" class="summary-sig-name">get_blockdev_type</a>(<span class="summary-sig-arg">path</span>)</span><br />
      This function returns a block device's type.</td>
          <td align="right" valign="top">
            
            
          </td>
        </tr>
      </table>
      
    </td>
  </tr>
<tr>
    <td width="15%" align="right" valign="top" class="summary">
      <span class="summary-type">&nbsp;</span>
    </td><td class="summary">
      <table width="100%" cellpadding="0" cellspacing="0" border="0">
        <tr>
          <td><span class="summary-sig"><a href="rtslib.utils-module.html#get_block_type" class="summary-sig-name">get_block_type</a>(<span class="summary-sig-arg">path</span>)</span><br />
      This function returns a block device's type.</td>
          <td align="right" valign="top">
            
            
          </td>
        </tr>
      </table>
      
    </td>
  </tr>
<tr>
    <td width="15%" align="right" valign="top" class="summary">
      <span class="summary-type">&nbsp;</span>
    </td><td class="summary">
      <table width="100%" cellpadding="0" cellspacing="0" border="0">
        <tr>
          <td><span class="summary-sig"><a href="rtslib.utils-module.html#convert_scsi_path_to_hctl" class="summary-sig-name">convert_scsi_path_to_hctl</a>(<span class="summary-sig-arg">path</span>)</span><br />
      This function returns the SCSI ID in H:C:T:L form for the block 
      device being mapped to the udev path specified.</td>
          <td align="right" valign="top">
            
            
          </td>
        </tr>
      </table>
      
    </td>
  </tr>
<tr>
    <td width="15%" align="right" valign="top" class="summary">
      <span class="summary-type">&nbsp;</span>
    </td><td class="summary">
      <table width="100%" cellpadding="0" cellspacing="0" border="0">
        <tr>
          <td><span class="summary-sig"><a href="rtslib.utils-module.html#convert_scsi_hctl_to_path" class="summary-sig-name">convert_scsi_hctl_to_path</a>(<span class="summary-sig-arg">host</span>,
        <span class="summary-sig-arg">controller</span>,
        <span class="summary-sig-arg">target</span>,
        <span class="summary-sig-arg">lun</span>)</span><br />
      This function returns a udev path pointing to the block device being 
      mapped to the SCSI device that has the provided H:C:T:L.</td>
          <td align="right" valign="top">
            
            
          </td>
        </tr>
      </table>
      
    </td>
  </tr>
<tr>
    <td width="15%" align="right" valign="top" class="summary">
      <span class="summary-type">&nbsp;</span>
    </td><td class="summary">
      <table width="100%" cellpadding="0" cellspacing="0" border="0">
        <tr>
          <td><span class="summary-sig"><a href="rtslib.utils-module.html#generate_wwn" class="summary-sig-name">generate_wwn</a>(<span class="summary-sig-arg">wwn_type</span>)</span><br />
      Generates a random WWN of the specified type:</td>
          <td align="right" valign="top">
            
            
          </td>
        </tr>
      </table>
      
    </td>
  </tr>
<tr>
    <td width="15%" align="right" valign="top" class="summary">
      <span class="summary-type">&nbsp;</span>
    </td><td class="summary">
      <table width="100%" cellpadding="0" cellspacing="0" border="0">
        <tr>
          <td><span class="summary-sig"><a name="colonize"></a><span class="summary-sig-name">colonize</span>(<span class="summary-sig-arg">str</span>)</span><br />
      helper function to add colons every 2 chars</td>
          <td align="right" valign="top">
            
            
          </td>
        </tr>
      </table>
      
    </td>
  </tr>
<tr class="private">
    <td width="15%" align="right" valign="top" class="summary">
      <span class="summary-type">&nbsp;</span>
    </td><td class="summary">
      <table width="100%" cellpadding="0" cellspacing="0" border="0">
        <tr>
          <td><span class="summary-sig"><a href="rtslib.utils-module.html#_cleanse_wwn" class="summary-sig-name" onclick="show_private();">_cleanse_wwn</a>(<span class="summary-sig-arg">wwn_type</span>,
        <span class="summary-sig-arg">wwn</span>)</span><br />
      Some wwns may have alternate text representations.</td>
          <td align="right" valign="top">
            
            
          </td>
        </tr>
      </table>
      
    </td>
  </tr>
<tr>
    <td width="15%" align="right" valign="top" class="summary">
      <span class="summary-type">&nbsp;</span>
    </td><td class="summary">
      <table width="100%" cellpadding="0" cellspacing="0" border="0">
        <tr>
          <td><span class="summary-sig"><a href="rtslib.utils-module.html#normalize_wwn" class="summary-sig-name">normalize_wwn</a>(<span class="summary-sig-arg">wwn_types</span>,
        <span class="summary-sig-arg">wwn</span>)</span><br />
      Take a WWN as given by the user and convert it to a standard text 
      representation.</td>
          <td align="right" valign="top">
            
            
          </td>
        </tr>
      </table>
      
    </td>
  </tr>
<tr>
    <td width="15%" align="right" valign="top" class="summary">
      <span class="summary-type">&nbsp;</span>
    </td><td class="summary">
      <table width="100%" cellpadding="0" cellspacing="0" border="0">
        <tr>
          <td><span class="summary-sig"><a name="list_loaded_kernel_modules"></a><span class="summary-sig-name">list_loaded_kernel_modules</span>()</span><br />
      List all currently loaded kernel modules</td>
          <td align="right" valign="top">
            
            
          </td>
        </tr>
      </table>
      
    </td>
  </tr>
<tr>
    <td width="15%" align="right" valign="top" class="summary">
      <span class="summary-type">&nbsp;</span>
    </td><td class="summary">
      <table width="100%" cellpadding="0" cellspacing="0" border="0">
        <tr>
          <td><span class="summary-sig"><a href="rtslib.utils-module.html#modprobe" class="summary-sig-name">modprobe</a>(<span class="summary-sig-arg">module</span>)</span><br />
      Load the specified kernel module if needed.</td>
          <td align="right" valign="top">
            
            
          </td>
        </tr>
      </table>
      
    </td>
  </tr>
<tr>
    <td width="15%" align="right" valign="top" class="summary">
      <span class="summary-type">&nbsp;</span>
    </td><td class="summary">
      <table width="100%" cellpadding="0" cellspacing="0" border="0">
        <tr>
          <td><span class="summary-sig"><a name="mount_configfs"></a><span class="summary-sig-name">mount_configfs</span>()</span></td>
          <td align="right" valign="top">
            
            
          </td>
        </tr>
      </table>
      
    </td>
  </tr>
<tr>
    <td width="15%" align="right" valign="top" class="summary">
      <span class="summary-type">&nbsp;</span>
    </td><td class="summary">
      <table width="100%" cellpadding="0" cellspacing="0" border="0">
        <tr>
          <td><span class="summary-sig"><a name="dict_remove"></a><span class="summary-sig-name">dict_remove</span>(<span class="summary-sig-arg">d</span>,
        <span class="summary-sig-arg">items</span>)</span></td>
          <td align="right" valign="top">
            
            
          </td>
        </tr>
      </table>
      
    </td>
  </tr>
<tr>
    <td width="15%" align="right" valign="top" class="summary">
      <span class="summary-type">&nbsp;</span>
    </td><td class="summary">
      <table width="100%" cellpadding="0" cellspacing="0" border="0">
        <tr>
          <td><span class="summary-sig"><a href="rtslib.utils-module.html#ignored" class="summary-sig-name">ignored</a>(<span class="summary-sig-arg">*args</span>,
        <span class="summary-sig-arg">**kwds</span>)</span></td>
          <td align="right" valign="top">
            
            
          </td>
        </tr>
      </table>
      
    </td>
  </tr>
<tr class="private">
    <td width="15%" align="right" valign="top" class="summary">
      <span class="summary-type">&nbsp;</span>
    </td><td class="summary">
      <table width="100%" cellpadding="0" cellspacing="0" border="0">
        <tr>
          <td><span class="summary-sig"><a name="_get_auth_attr"></a><span class="summary-sig-name">_get_auth_attr</span>(<span class="summary-sig-arg">self</span>,
        <span class="summary-sig-arg">attribute</span>,
        <span class="summary-sig-arg">ignore</span>=<span class="summary-sig-default">False</span>)</span></td>
          <td align="right" valign="top">
            
            
          </td>
        </tr>
      </table>
      
    </td>
  </tr>
<tr class="private">
    <td width="15%" align="right" valign="top" class="summary">
      <span class="summary-type">&nbsp;</span>
    </td><td class="summary">
      <table width="100%" cellpadding="0" cellspacing="0" border="0">
        <tr>
          <td><span class="summary-sig"><a name="_set_auth_attr"></a><span class="summary-sig-name">_set_auth_attr</span>(<span class="summary-sig-arg">self</span>,
        <span class="summary-sig-arg">value</span>,
        <span class="summary-sig-arg">attribute</span>,
        <span class="summary-sig-arg">ignore</span>=<span class="summary-sig-default">False</span>)</span></td>
          <td align="right" valign="top">
            
            
          </td>
        </tr>
      </table>
      
    </td>
  </tr>
<tr>
    <td width="15%" align="right" valign="top" class="summary">
      <span class="summary-type">&nbsp;</span>
    </td><td class="summary">
      <table width="100%" cellpadding="0" cellspacing="0" border="0">
        <tr>
          <td><span class="summary-sig"><a name="set_attributes"></a><span class="summary-sig-name">set_attributes</span>(<span class="summary-sig-arg">obj</span>,
        <span class="summary-sig-arg">attr_dict</span>,
        <span class="summary-sig-arg">err_func</span>)</span></td>
          <td align="right" valign="top">
            
            
          </td>
        </tr>
      </table>
      
    </td>
  </tr>
<tr>
    <td width="15%" align="right" valign="top" class="summary">
      <span class="summary-type">&nbsp;</span>
    </td><td class="summary">
      <table width="100%" cellpadding="0" cellspacing="0" border="0">
        <tr>
          <td><span class="summary-sig"><a name="set_parameters"></a><span class="summary-sig-name">set_parameters</span>(<span class="summary-sig-arg">obj</span>,
        <span class="summary-sig-arg">param_dict</span>,
        <span class="summary-sig-arg">err_func</span>)</span></td>
          <td align="right" valign="top">
            
            
          </td>
        </tr>
      </table>
      
    </td>
  </tr>
<tr class="private">
    <td width="15%" align="right" valign="top" class="summary">
      <span class="summary-type">&nbsp;</span>
    </td><td class="summary">
      <table width="100%" cellpadding="0" cellspacing="0" border="0">
        <tr>
          <td><span class="summary-sig"><a name="_test"></a><span class="summary-sig-name">_test</span>()</span><br />
      Run the doctests</td>
          <td align="right" valign="top">
            
            
          </td>
        </tr>
      </table>
      
    </td>
  </tr>
</table>
<!-- ==================== VARIABLES ==================== -->
<a name="section-Variables"></a>
<table class="summary" border="1" cellpadding="3"
       cellspacing="0" width="100%" bgcolor="white">
<tr bgcolor="#70b0f0" class="table-header">
  <td colspan="2" class="table-header">
    <table border="0" cellpadding="0" cellspacing="0" width="100%">
      <tr valign="top">
        <td align="left"><span class="table-header">Variables</span></td>
        <td align="right" valign="top"
         ><span class="options">[<a href="#section-Variables"
         class="privatelink" onclick="toggle_private();"
         >hide private</a>]</span></td>
      </tr>
    </table>
  </td>
</tr>
<tr>
    <td width="15%" align="right" valign="top" class="summary">
      <span class="summary-type">&nbsp;</span>
    </td><td class="summary">
        <a name="__package__"></a><span class="summary-name">__package__</span> = <code title="'rtslib'"><code class="variable-quote">'</code><code class="variable-string">rtslib</code><code class="variable-quote">'</code></code>
    </td>
  </tr>
</table>
<!-- ==================== FUNCTION DETAILS ==================== -->
<a name="section-FunctionDetails"></a>
<table class="details" border="1" cellpadding="3"
       cellspacing="0" width="100%" bgcolor="white">
<tr bgcolor="#70b0f0" class="table-header">
  <td colspan="2" class="table-header">
    <table border="0" cellpadding="0" cellspacing="0" width="100%">
      <tr valign="top">
        <td align="left"><span class="table-header">Function Details</span></td>
        <td align="right" valign="top"
         ><span class="options">[<a href="#section-FunctionDetails"
         class="privatelink" onclick="toggle_private();"
         >hide private</a>]</span></td>
      </tr>
    </table>
  </td>
</tr>
</table>
<a name="fwrite"></a>
<div>
<table class="details" border="1" cellpadding="3"
       cellspacing="0" width="100%" bgcolor="white">
<tr><td>
  <table width="100%" cellpadding="0" cellspacing="0" border="0">
  <tr valign="top"><td>
  <h3 class="epydoc"><span class="sig"><span class="sig-name">fwrite</span>(<span class="sig-arg">path</span>,
        <span class="sig-arg">string</span>)</span>
  </h3>
  </td><td align="right" valign="top"
    >&nbsp;
    </td>
  </tr></table>
  
  <p>This function writes a string to a file, and takes care of opening it 
  and closing it. If the file does not exist, it will be created.</p>
<pre class="py-doctest">
<span class="py-prompt">&gt;&gt;&gt; </span><span class="py-keyword">from</span> rtslib.utils <span class="py-keyword">import</span> *
<span class="py-prompt">&gt;&gt;&gt; </span>fwrite(<span class="py-string">&quot;/tmp/test&quot;</span>, <span class="py-string">&quot;hello&quot;</span>)
<span class="py-prompt">&gt;&gt;&gt; </span>fread(<span class="py-string">&quot;/tmp/test&quot;</span>)
<span class="py-output">'hello'</span></pre>
  <dl class="fields">
    <dt>Parameters:</dt>
    <dd><ul class="nomargin-top">
        <li><strong class="pname"><code>path</code></strong> (string) - The file to write to.</li>
        <li><strong class="pname"><code>string</code></strong> (string) - The string to write to the file.</li>
    </ul></dd>
  </dl>
</td></tr></table>
</div>
<a name="fread"></a>
<div>
<table class="details" border="1" cellpadding="3"
       cellspacing="0" width="100%" bgcolor="white">
<tr><td>
  <table width="100%" cellpadding="0" cellspacing="0" border="0">
  <tr valign="top"><td>
  <h3 class="epydoc"><span class="sig"><span class="sig-name">fread</span>(<span class="sig-arg">path</span>)</span>
  </h3>
  </td><td align="right" valign="top"
    >&nbsp;
    </td>
  </tr></table>
  
  <p>This function reads the contents of a file. It takes care of opening 
  and closing it.</p>
<pre class="py-doctest">
<span class="py-prompt">&gt;&gt;&gt; </span><span class="py-keyword">from</span> rtslib.utils <span class="py-keyword">import</span> *
<span class="py-prompt">&gt;&gt;&gt; </span>fwrite(<span class="py-string">&quot;/tmp/test&quot;</span>, <span class="py-string">&quot;hello&quot;</span>)
<span class="py-prompt">&gt;&gt;&gt; </span>fread(<span class="py-string">&quot;/tmp/test&quot;</span>)
<span class="py-output">'hello'</span>
<span class="py-output"></span><span class="py-prompt">&gt;&gt;&gt; </span>fread(<span class="py-string">&quot;/tmp/notexistingfile&quot;</span>) <span class="py-comment"># doctest: +ELLIPSIS</span>
<span class="py-except">Traceback (most recent call last):</span>
<span class="py-except">    ...</span>
<span class="py-except">IOError: [Errno 2] No such file or directory: '/tmp/notexistingfile'</span></pre>
  <dl class="fields">
    <dt>Parameters:</dt>
    <dd><ul class="nomargin-top">
        <li><strong class="pname"><code>path</code></strong> (string) - The path to the file to read from.</li>
    </ul></dd>
    <dt>Returns:</dt>
        <dd>A string containing the file's contents.</dd>
  </dl>
</td></tr></table>
</div>
<a name="is_dev_in_use"></a>
<div>
<table class="details" border="1" cellpadding="3"
       cellspacing="0" width="100%" bgcolor="white">
<tr><td>
  <table width="100%" cellpadding="0" cellspacing="0" border="0">
  <tr valign="top"><td>
  <h3 class="epydoc"><span class="sig"><span class="sig-name">is_dev_in_use</span>(<span class="sig-arg">path</span>)</span>
  </h3>
  </td><td align="right" valign="top"
    >&nbsp;
    </td>
  </tr></table>
  
  <p>This function will check if the device or file referenced by path is 
  already mounted or used as a storage object backend.  It works by trying 
  to open the path with O_EXCL flag, which will fail if someone else 
  already did.  Note that the file is closed before the function returns, 
  so this does not guaranteed the device will still be available after the 
  check.</p>
  <dl class="fields">
    <dt>Parameters:</dt>
    <dd><ul class="nomargin-top">
        <li><strong class="pname"><code>path</code></strong> (string) - path to the file of device to check</li>
    </ul></dd>
    <dt>Returns:</dt>
        <dd>A boolean, True is we cannot get exclusive descriptor on the 
          path, False if we can.</dd>
  </dl>
</td></tr></table>
</div>
<a name="get_blockdev_type"></a>
<div>
<table class="details" border="1" cellpadding="3"
       cellspacing="0" width="100%" bgcolor="white">
<tr><td>
  <table width="100%" cellpadding="0" cellspacing="0" border="0">
  <tr valign="top"><td>
  <h3 class="epydoc"><span class="sig"><span class="sig-name">get_blockdev_type</span>(<span class="sig-arg">path</span>)</span>
  </h3>
  </td><td align="right" valign="top"
    >&nbsp;
    </td>
  </tr></table>
  
  <p>This function returns a block device's type. Example: 0 is TYPE_DISK 
  If no match is found, None is returned.</p>
<pre class="py-doctest">
<span class="py-prompt">&gt;&gt;&gt; </span><span class="py-keyword">from</span> rtslib.utils <span class="py-keyword">import</span> *
<span class="py-prompt">&gt;&gt;&gt; </span>get_blockdev_type(<span class="py-string">&quot;/dev/sda&quot;</span>)
<span class="py-output">0</span>
<span class="py-output"></span><span class="py-prompt">&gt;&gt;&gt; </span>get_blockdev_type(<span class="py-string">&quot;/dev/sr0&quot;</span>)
<span class="py-output">5</span>
<span class="py-output"></span><span class="py-prompt">&gt;&gt;&gt; </span>get_blockdev_type(<span class="py-string">&quot;/dev/scd0&quot;</span>)
<span class="py-output">5</span>
<span class="py-output"></span><span class="py-prompt">&gt;&gt;&gt; </span>get_blockdev_type(<span class="py-string">&quot;/dev/nodevicehere&quot;</span>) <span class="py-keyword">is</span> None
<span class="py-output">True</span></pre>
  <dl class="fields">
    <dt>Parameters:</dt>
    <dd><ul class="nomargin-top">
        <li><strong class="pname"><code>path</code></strong> (string) - path to the block device</li>
    </ul></dd>
    <dt>Returns:</dt>
        <dd>An int for the block device type, or None if not a block device.</dd>
  </dl>
</td></tr></table>
</div>
<a name="get_block_type"></a>
<div>
<table class="details" border="1" cellpadding="3"
       cellspacing="0" width="100%" bgcolor="white">
<tr><td>
  <table width="100%" cellpadding="0" cellspacing="0" border="0">
  <tr valign="top"><td>
  <h3 class="epydoc"><span class="sig"><span class="sig-name">get_block_type</span>(<span class="sig-arg">path</span>)</span>
  </h3>
  </td><td align="right" valign="top"
    >&nbsp;
    </td>
  </tr></table>
  
  <p>This function returns a block device's type. Example: 0 is TYPE_DISK 
  If no match is found, None is returned.</p>
<pre class="py-doctest">
<span class="py-prompt">&gt;&gt;&gt; </span><span class="py-keyword">from</span> rtslib.utils <span class="py-keyword">import</span> *
<span class="py-prompt">&gt;&gt;&gt; </span>get_blockdev_type(<span class="py-string">&quot;/dev/sda&quot;</span>)
<span class="py-output">0</span>
<span class="py-output"></span><span class="py-prompt">&gt;&gt;&gt; </span>get_blockdev_type(<span class="py-string">&quot;/dev/sr0&quot;</span>)
<span class="py-output">5</span>
<span class="py-output"></span><span class="py-prompt">&gt;&gt;&gt; </span>get_blockdev_type(<span class="py-string">&quot;/dev/scd0&quot;</span>)
<span class="py-output">5</span>
<span class="py-output"></span><span class="py-prompt">&gt;&gt;&gt; </span>get_blockdev_type(<span class="py-string">&quot;/dev/nodevicehere&quot;</span>) <span class="py-keyword">is</span> None
<span class="py-output">True</span></pre>
  <dl class="fields">
    <dt>Parameters:</dt>
    <dd><ul class="nomargin-top">
        <li><strong class="pname"><code>path</code></strong> (string) - path to the block device</li>
    </ul></dd>
    <dt>Returns:</dt>
        <dd>An int for the block device type, or None if not a block device.</dd>
  </dl>
</td></tr></table>
</div>
<a name="convert_scsi_path_to_hctl"></a>
<div>
<table class="details" border="1" cellpadding="3"
       cellspacing="0" width="100%" bgcolor="white">
<tr><td>
  <table width="100%" cellpadding="0" cellspacing="0" border="0">
  <tr valign="top"><td>
  <h3 class="epydoc"><span class="sig"><span class="sig-name">convert_scsi_path_to_hctl</span>(<span class="sig-arg">path</span>)</span>
  </h3>
  </td><td align="right" valign="top"
    >&nbsp;
    </td>
  </tr></table>
  
  <p>This function returns the SCSI ID in H:C:T:L form for the block device
  being mapped to the udev path specified. If no match is found, None is 
  returned.</p>
<pre class="py-doctest">
<span class="py-prompt">&gt;&gt;&gt; </span><span class="py-keyword">import</span> rtslib.utils <span class="py-keyword">as</span> utils
<span class="py-prompt">&gt;&gt;&gt; </span>utils.convert_scsi_path_to_hctl(<span class="py-string">'/dev/scd0'</span>)
<span class="py-output">(2, 0, 0, 0)</span>
<span class="py-output"></span><span class="py-prompt">&gt;&gt;&gt; </span>utils.convert_scsi_path_to_hctl(<span class="py-string">'/dev/sr0'</span>)
<span class="py-output">(2, 0, 0, 0)</span>
<span class="py-output"></span><span class="py-prompt">&gt;&gt;&gt; </span>utils.convert_scsi_path_to_hctl(<span class="py-string">'/dev/sda'</span>)
<span class="py-output">(3, 0, 0, 0)</span>
<span class="py-output"></span><span class="py-prompt">&gt;&gt;&gt; </span>utils.convert_scsi_path_to_hctl(<span class="py-string">'/dev/sda1'</span>)
<span class="py-prompt">&gt;&gt;&gt; </span>utils.convert_scsi_path_to_hctl(<span class="py-string">'/dev/sdb'</span>)
<span class="py-output">(3, 0, 1, 0)</span>
<span class="py-output"></span><span class="py-prompt">&gt;&gt;&gt; </span>utils.convert_scsi_path_to_hctl(<span class="py-string">'/dev/sdc'</span>)
<span class="py-output">(3, 0, 2, 0)</span></pre>
  <dl class="fields">
    <dt>Parameters:</dt>
    <dd><ul class="nomargin-top">
        <li><strong class="pname"><code>path</code></strong> (string) - The udev path to the SCSI block device.</li>
    </ul></dd>
    <dt>Returns:</dt>
        <dd>An (host, controller, target, lun) tuple of integer values 
          representing the SCSI ID of the device, or None if no match is 
          found.</dd>
  </dl>
</td></tr></table>
</div>
<a name="convert_scsi_hctl_to_path"></a>
<div>
<table class="details" border="1" cellpadding="3"
       cellspacing="0" width="100%" bgcolor="white">
<tr><td>
  <table width="100%" cellpadding="0" cellspacing="0" border="0">
  <tr valign="top"><td>
  <h3 class="epydoc"><span class="sig"><span class="sig-name">convert_scsi_hctl_to_path</span>(<span class="sig-arg">host</span>,
        <span class="sig-arg">controller</span>,
        <span class="sig-arg">target</span>,
        <span class="sig-arg">lun</span>)</span>
  </h3>
  </td><td align="right" valign="top"
    >&nbsp;
    </td>
  </tr></table>
  
  <p>This function returns a udev path pointing to the block device being 
  mapped to the SCSI device that has the provided H:C:T:L.</p>
<pre class="py-doctest">
<span class="py-prompt">&gt;&gt;&gt; </span><span class="py-keyword">import</span> rtslib.utils <span class="py-keyword">as</span> utils
<span class="py-prompt">&gt;&gt;&gt; </span>utils.convert_scsi_hctl_to_path(0,0,0,0)
<span class="py-output">''</span>
<span class="py-output"></span><span class="py-prompt">&gt;&gt;&gt; </span>utils.convert_scsi_hctl_to_path(2,0,0,0) <span class="py-comment"># doctest: +ELLIPSIS</span>
<span class="py-output">'/dev/s...0'</span>
<span class="py-output"></span><span class="py-prompt">&gt;&gt;&gt; </span>utils.convert_scsi_hctl_to_path(3,0,2,0)
<span class="py-output">'/dev/sdc'</span></pre>
  <dl class="fields">
    <dt>Parameters:</dt>
    <dd><ul class="nomargin-top">
        <li><strong class="pname"><code>host</code></strong> (int) - The SCSI host id.</li>
        <li><strong class="pname"><code>controller</code></strong> (int) - The SCSI controller id.</li>
        <li><strong class="pname"><code>target</code></strong> (int) - The SCSI target id.</li>
        <li><strong class="pname"><code>lun</code></strong> (int) - The SCSI Logical Unit Number.</li>
    </ul></dd>
    <dt>Returns:</dt>
        <dd>A string for the canonical path to the device, or empty string.</dd>
  </dl>
</td></tr></table>
</div>
<a name="generate_wwn"></a>
<div>
<table class="details" border="1" cellpadding="3"
       cellspacing="0" width="100%" bgcolor="white">
<tr><td>
  <table width="100%" cellpadding="0" cellspacing="0" border="0">
  <tr valign="top"><td>
  <h3 class="epydoc"><span class="sig"><span class="sig-name">generate_wwn</span>(<span class="sig-arg">wwn_type</span>)</span>
  </h3>
  </td><td align="right" valign="top"
    >&nbsp;
    </td>
  </tr></table>
  
  <p>Generates a random WWN of the specified type:</p>
  <ul>
    <li>
      unit_serial: T10 WWN Unit Serial.
    </li>
    <li>
      iqn: iSCSI IQN
    </li>
    <li>
      naa: SAS NAA address
    </li>
  </ul>
  <dl class="fields">
    <dt>Parameters:</dt>
    <dd><ul class="nomargin-top">
        <li><strong class="pname"><code>wwn_type</code></strong> (str) - The WWN address type.</li>
    </ul></dd>
    <dt>Returns:</dt>
        <dd>A string containing the WWN.</dd>
  </dl>
</td></tr></table>
</div>
<a name="_cleanse_wwn"></a>
<div class="private">
<table class="details" border="1" cellpadding="3"
       cellspacing="0" width="100%" bgcolor="white">
<tr><td>
  <table width="100%" cellpadding="0" cellspacing="0" border="0">
  <tr valign="top"><td>
  <h3 class="epydoc"><span class="sig"><span class="sig-name">_cleanse_wwn</span>(<span class="sig-arg">wwn_type</span>,
        <span class="sig-arg">wwn</span>)</span>
  </h3>
  </td><td align="right" valign="top"
    >&nbsp;
    </td>
  </tr></table>
  
  <p>Some wwns may have alternate text representations. Adjust to our 
  preferred representation.</p>
  <dl class="fields">
  </dl>
</td></tr></table>
</div>
<a name="normalize_wwn"></a>
<div>
<table class="details" border="1" cellpadding="3"
       cellspacing="0" width="100%" bgcolor="white">
<tr><td>
  <table width="100%" cellpadding="0" cellspacing="0" border="0">
  <tr valign="top"><td>
  <h3 class="epydoc"><span class="sig"><span class="sig-name">normalize_wwn</span>(<span class="sig-arg">wwn_types</span>,
        <span class="sig-arg">wwn</span>)</span>
  </h3>
  </td><td align="right" valign="top"
    >&nbsp;
    </td>
  </tr></table>
  
  <p>Take a WWN as given by the user and convert it to a standard text 
  representation. If possible_wwns is not None, verify that the given WWN 
  is on that list.</p>
  <p>Returns (normalized_wwn, wwn_type), or exception if invalid wwn.</p>
  <dl class="fields">
  </dl>
</td></tr></table>
</div>
<a name="modprobe"></a>
<div>
<table class="details" border="1" cellpadding="3"
       cellspacing="0" width="100%" bgcolor="white">
<tr><td>
  <table width="100%" cellpadding="0" cellspacing="0" border="0">
  <tr valign="top"><td>
  <h3 class="epydoc"><span class="sig"><span class="sig-name">modprobe</span>(<span class="sig-arg">module</span>)</span>
  </h3>
  </td><td align="right" valign="top"
    >&nbsp;
    </td>
  </tr></table>
  
  <p>Load the specified kernel module if needed.</p>
  <dl class="fields">
    <dt>Parameters:</dt>
    <dd><ul class="nomargin-top">
        <li><strong class="pname"><code>module</code></strong> (str) - The name of the kernel module to be loaded.</li>
    </ul></dd>
  </dl>
</td></tr></table>
</div>
<a name="ignored"></a>
<div>
<table class="details" border="1" cellpadding="3"
       cellspacing="0" width="100%" bgcolor="white">
<tr><td>
  <table width="100%" cellpadding="0" cellspacing="0" border="0">
  <tr valign="top"><td>
  <h3 class="epydoc"><span class="sig"><span class="sig-name">ignored</span>(<span class="sig-arg">*args</span>,
        <span class="sig-arg">**kwds</span>)</span>
  </h3>
  </td><td align="right" valign="top"
    >&nbsp;
    </td>
  </tr></table>
  
  
  <dl class="fields">
    <dt>Decorators:</dt>
    <dd><ul class="nomargin-top">
        <li><code>@contextmanager</code></li>
    </ul></dd>
  </dl>
</td></tr></table>
</div>
<br />
<!-- ==================== NAVIGATION BAR ==================== -->
<table class="navbar" border="0" width="100%" cellpadding="0"
       bgcolor="#a0c0ff" cellspacing="0">
  <tr valign="middle">
  <!-- Home link -->
      <th>&nbsp;&nbsp;&nbsp;<a
        href="rtslib-module.html">Home</a>&nbsp;&nbsp;&nbsp;</th>

  <!-- Tree link -->
      <th>&nbsp;&nbsp;&nbsp;<a
        href="module-tree.html">Trees</a>&nbsp;&nbsp;&nbsp;</th>

  <!-- Index link -->
      <th>&nbsp;&nbsp;&nbsp;<a
        href="identifier-index.html">Indices</a>&nbsp;&nbsp;&nbsp;</th>

  <!-- Help link -->
      <th>&nbsp;&nbsp;&nbsp;<a
        href="help.html">Help</a>&nbsp;&nbsp;&nbsp;</th>

  <!-- Project homepage -->
      <th class="navbar" align="right" width="100%">
        <table border="0" cellpadding="0" cellspacing="0">
          <tr><th class="navbar" align="center"
            >rtslib</th>
          </tr></table></th>
  </tr>
</table>
<table border="0" cellpadding="0" cellspacing="0" width="100%%">
  <tr>
    <td align="left" class="footer">
    Generated by Epydoc 3.0.1 on Fri Oct 17 15:23:48 2014
    </td>
    <td align="right" class="footer">
      <a target="mainFrame" href="http://epydoc.sourceforge.net"
        >http://epydoc.sourceforge.net</a>
    </td>
  </tr>
</table>

<script type="text/javascript">
  <!--
  // Private objects are initially displayed (because if
  // javascript is turned off then we want them to be
  // visible); but by default, we want to hide them.  So hide
  // them unless we have a cookie that says to show them.
  checkCookie();
  // -->
</script>
</body>
</html>