<?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>TestON.drivers.common.api.controller.onosrestdriver.OnosRestDriver</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="TestON-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"
            >TestON</th>
          </tr></table></th>
  </tr>
</table>
<table width="100%" cellpadding="0" cellspacing="0">
  <tr valign="top">
    <td width="100%">
      <span class="breadcrumbs">
        <a href="TestON-module.html">Package&nbsp;TestON</a> ::
        <a href="TestON.drivers-module.html">Package&nbsp;drivers</a> ::
        <a href="TestON.drivers.common-module.html">Package&nbsp;common</a> ::
        <a href="TestON.drivers.common.api-module.html">Package&nbsp;api</a> ::
        <a href="TestON.drivers.common.api.controller-module.html">Package&nbsp;controller</a> ::
        <a href="TestON.drivers.common.api.controller.onosrestdriver-module.html">Module&nbsp;onosrestdriver</a> ::
        Class&nbsp;OnosRestDriver
      </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="TestON.drivers.common.api.controller.onosrestdriver.OnosRestDriver-class.html"
            target="_top">no&nbsp;frames</a>]</span></td></tr>
      </table>
    </td>
  </tr>
</table>
<!-- ==================== CLASS DESCRIPTION ==================== -->
<h1 class="epydoc">Class OnosRestDriver</h1><p class="nomargin-top"><span class="codelink"><a href="TestON.drivers.common.api.controller.onosrestdriver-pysrc.html#OnosRestDriver">source&nbsp;code</a></span></p>
<center>
<center>  <map id="class_hierarchy_for_onosrestdr" name="class_hierarchy_for_onosrestdr">
<area shape="rect" id="node1" href="TestON.drivers.common.api.controller.onosrestdriver.OnosRestDriver-class.html" title="OnosRestDriver" alt="" coords="5,6,120,31"/>
<area shape="rect" id="node2" href="TestON.drivers.common.api.controllerdriver.Controller-class.html" title="controllerdriver.Controller" alt="" coords="145,6,311,31"/>
<area shape="rect" id="node3" href="TestON.drivers.common.apidriver.API-class.html" title="apidriver.API" alt="" coords="335,6,432,31"/>
<area shape="rect" id="node4" href="javascript:void(0);" title="component.Component" alt="" coords="457,6,615,31"/>
</map>
  <img src="class_hierarchy_for_onosrestdr.gif" alt='' usemap="#class_hierarchy_for_onosrestdr" ismap="ismap" class="graph-without-title" />
</center>
</center>
<hr />
<!-- ==================== INSTANCE METHODS ==================== -->
<a name="section-InstanceMethods"></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">Instance Methods</span></td>
        <td align="right" valign="top"
         ><span class="options">[<a href="#section-InstanceMethods"
         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="TestON.drivers.common.api.controller.onosrestdriver.OnosRestDriver-class.html#__init__" class="summary-sig-name">__init__</a>(<span class="summary-sig-arg">self</span>)</span><br />
      x.__init__(...) initializes x; see help(type(x)) for signature</td>
          <td align="right" valign="top">
            <span class="codelink"><a href="TestON.drivers.common.api.controller.onosrestdriver-pysrc.html#OnosRestDriver.__init__">source&nbsp;code</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="TestON.drivers.common.api.controller.onosrestdriver.OnosRestDriver-class.html#connect" class="summary-sig-name">connect</a>(<span class="summary-sig-arg">self</span>,
        <span class="summary-sig-arg">**connectargs</span>)</span><br />
      Connection will establish to the remote host using ssh.</td>
          <td align="right" valign="top">
            <span class="codelink"><a href="TestON.drivers.common.api.controller.onosrestdriver-pysrc.html#OnosRestDriver.connect">source&nbsp;code</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="TestON.drivers.common.api.controller.onosrestdriver.OnosRestDriver-class.html#send" class="summary-sig-name">send</a>(<span class="summary-sig-arg">self</span>,
        <span class="summary-sig-arg">ip</span>,
        <span class="summary-sig-arg">port</span>,
        <span class="summary-sig-arg">url</span>,
        <span class="summary-sig-arg">base</span>=<span class="summary-sig-default">&quot;/onos/v1&quot;</span>,
        <span class="summary-sig-arg">method</span>=<span class="summary-sig-default">&quot;GET&quot;</span>,
        <span class="summary-sig-arg">query</span>=<span class="summary-sig-default">None</span>,
        <span class="summary-sig-arg">data</span>=<span class="summary-sig-default">None</span>)</span><br />
      Arguments:
    str ip: ONOS IP Address
    str port: ONOS REST Port
    str url: ONOS REST url path.</td>
          <td align="right" valign="top">
            <span class="codelink"><a href="TestON.drivers.common.api.controller.onosrestdriver-pysrc.html#OnosRestDriver.send">source&nbsp;code</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="TestON.drivers.common.api.controller.onosrestdriver.OnosRestDriver-class.html#intents" class="summary-sig-name">intents</a>(<span class="summary-sig-arg">self</span>,
        <span class="summary-sig-arg">ip</span>=<span class="summary-sig-default">&quot;DEFAULT&quot;</span>,
        <span class="summary-sig-arg">port</span>=<span class="summary-sig-default">&quot;DEFAULT&quot;</span>)</span><br />
      Description:...</td>
          <td align="right" valign="top">
            <span class="codelink"><a href="TestON.drivers.common.api.controller.onosrestdriver-pysrc.html#OnosRestDriver.intents">source&nbsp;code</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="TestON.drivers.common.api.controller.onosrestdriver.OnosRestDriver-class.html#intent" class="summary-sig-name">intent</a>(<span class="summary-sig-arg">self</span>,
        <span class="summary-sig-arg">intentId</span>,
        <span class="summary-sig-arg">appId</span>=<span class="summary-sig-default">&quot;org.onosproject.cli&quot;</span>,
        <span class="summary-sig-arg">ip</span>=<span class="summary-sig-default">&quot;DEFAULT&quot;</span>,
        <span class="summary-sig-arg">port</span>=<span class="summary-sig-default">&quot;DEFAULT&quot;</span>)</span><br />
      Description:...</td>
          <td align="right" valign="top">
            <span class="codelink"><a href="TestON.drivers.common.api.controller.onosrestdriver-pysrc.html#OnosRestDriver.intent">source&nbsp;code</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="TestON.drivers.common.api.controller.onosrestdriver.OnosRestDriver-class.html#apps" class="summary-sig-name">apps</a>(<span class="summary-sig-arg">self</span>,
        <span class="summary-sig-arg">ip</span>=<span class="summary-sig-default">&quot;DEFAULT&quot;</span>,
        <span class="summary-sig-arg">port</span>=<span class="summary-sig-default">&quot;DEFAULT&quot;</span>)</span><br />
      Description:...</td>
          <td align="right" valign="top">
            <span class="codelink"><a href="TestON.drivers.common.api.controller.onosrestdriver-pysrc.html#OnosRestDriver.apps">source&nbsp;code</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="TestON.drivers.common.api.controller.onosrestdriver.OnosRestDriver-class.html#activateApp" class="summary-sig-name">activateApp</a>(<span class="summary-sig-arg">self</span>,
        <span class="summary-sig-arg">appName</span>,
        <span class="summary-sig-arg">ip</span>=<span class="summary-sig-default">&quot;DEFAULT&quot;</span>,
        <span class="summary-sig-arg">port</span>=<span class="summary-sig-default">&quot;DEFAULT&quot;</span>,
        <span class="summary-sig-arg">check</span>=<span class="summary-sig-default">True</span>)</span><br />
      Decription:...</td>
          <td align="right" valign="top">
            <span class="codelink"><a href="TestON.drivers.common.api.controller.onosrestdriver-pysrc.html#OnosRestDriver.activateApp">source&nbsp;code</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="TestON.drivers.common.api.controller.onosrestdriver.OnosRestDriver-class.html#deactivateApp" class="summary-sig-name">deactivateApp</a>(<span class="summary-sig-arg">self</span>,
        <span class="summary-sig-arg">appName</span>,
        <span class="summary-sig-arg">ip</span>=<span class="summary-sig-default">&quot;DEFAULT&quot;</span>,
        <span class="summary-sig-arg">port</span>=<span class="summary-sig-default">&quot;DEFAULT&quot;</span>,
        <span class="summary-sig-arg">check</span>=<span class="summary-sig-default">True</span>)</span><br />
      Required:...</td>
          <td align="right" valign="top">
            <span class="codelink"><a href="TestON.drivers.common.api.controller.onosrestdriver-pysrc.html#OnosRestDriver.deactivateApp">source&nbsp;code</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="TestON.drivers.common.api.controller.onosrestdriver.OnosRestDriver-class.html#getApp" class="summary-sig-name">getApp</a>(<span class="summary-sig-arg">self</span>,
        <span class="summary-sig-arg">appName</span>,
        <span class="summary-sig-arg">project</span>=<span class="summary-sig-default">&quot;org.onosproject.&quot;</span>,
        <span class="summary-sig-arg">ip</span>=<span class="summary-sig-default">&quot;DEFAULT&quot;</span>,
        <span class="summary-sig-arg">port</span>=<span class="summary-sig-default">&quot;DEFAULT&quot;</span>)</span><br />
      Decription:...</td>
          <td align="right" valign="top">
            <span class="codelink"><a href="TestON.drivers.common.api.controller.onosrestdriver-pysrc.html#OnosRestDriver.getApp">source&nbsp;code</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="TestON.drivers.common.api.controller.onosrestdriver.OnosRestDriver-class.html#addHostIntent" class="summary-sig-name">addHostIntent</a>(<span class="summary-sig-arg">self</span>,
        <span class="summary-sig-arg">hostIdOne</span>,
        <span class="summary-sig-arg">hostIdTwo</span>,
        <span class="summary-sig-arg">appId</span>=<span class="summary-sig-default">'org.onosproject.cli'</span>,
        <span class="summary-sig-arg">ip</span>=<span class="summary-sig-default">&quot;DEFAULT&quot;</span>,
        <span class="summary-sig-arg">port</span>=<span class="summary-sig-default">&quot;DEFAULT&quot;</span>)</span><br />
      Description:
    Adds a host-to-host intent ( bidirectional ) by
    specifying the two hosts.</td>
          <td align="right" valign="top">
            <span class="codelink"><a href="TestON.drivers.common.api.controller.onosrestdriver-pysrc.html#OnosRestDriver.addHostIntent">source&nbsp;code</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="TestON.drivers.common.api.controller.onosrestdriver.OnosRestDriver-class.html#addPointIntent" class="summary-sig-name">addPointIntent</a>(<span class="summary-sig-arg">self</span>,
        <span class="summary-sig-arg">ingressDevice</span>,
        <span class="summary-sig-arg">egressDevice</span>,
        <span class="summary-sig-arg">appId</span>=<span class="summary-sig-default">'org.onosproject.cli'</span>,
        <span class="summary-sig-arg">ingressPort</span>=<span class="summary-sig-default">&quot;&quot;</span>,
        <span class="summary-sig-arg">egressPort</span>=<span class="summary-sig-default">&quot;&quot;</span>,
        <span class="summary-sig-arg">ethType</span>=<span class="summary-sig-default">&quot;&quot;</span>,
        <span class="summary-sig-arg">ethSrc</span>=<span class="summary-sig-default">&quot;&quot;</span>,
        <span class="summary-sig-arg">ethDst</span>=<span class="summary-sig-default">&quot;&quot;</span>,
        <span class="summary-sig-arg">bandwidth</span>=<span class="summary-sig-default">&quot;&quot;</span>,
        <span class="summary-sig-arg">lambdaAlloc</span>=<span class="summary-sig-default">False</span>,
        <span class="summary-sig-arg">ipProto</span>=<span class="summary-sig-default">&quot;&quot;</span>,
        <span class="summary-sig-arg">ipSrc</span>=<span class="summary-sig-default">&quot;&quot;</span>,
        <span class="summary-sig-arg">ipDst</span>=<span class="summary-sig-default">&quot;&quot;</span>,
        <span class="summary-sig-arg">tcpSrc</span>=<span class="summary-sig-default">&quot;&quot;</span>,
        <span class="summary-sig-arg">tcpDst</span>=<span class="summary-sig-default">&quot;&quot;</span>,
        <span class="summary-sig-arg">ip</span>=<span class="summary-sig-default">&quot;DEFAULT&quot;</span>,
        <span class="summary-sig-arg">port</span>=<span class="summary-sig-default">&quot;DEFAULT&quot;</span>)</span><br />
      Description:
    Adds a point-to-point intent ( uni-directional ) by
    specifying device id's and optional fields
Required:
    * ingressDevice: device id of ingress device
    * egressDevice: device id of egress device
Optional:
    * ethType: specify ethType
    * ethSrc: specify ethSrc ( i.e.</td>
          <td align="right" valign="top">
            <span class="codelink"><a href="TestON.drivers.common.api.controller.onosrestdriver-pysrc.html#OnosRestDriver.addPointIntent">source&nbsp;code</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 name="removeIntent"></a><span class="summary-sig-name">removeIntent</span>(<span class="summary-sig-arg">self</span>,
        <span class="summary-sig-arg">intentId</span>,
        <span class="summary-sig-arg">appId</span>=<span class="summary-sig-default">'org.onosproject.cli'</span>,
        <span class="summary-sig-arg">ip</span>=<span class="summary-sig-default">&quot;DEFAULT&quot;</span>,
        <span class="summary-sig-arg">port</span>=<span class="summary-sig-default">&quot;DEFAULT&quot;</span>)</span><br />
      Remove intent for specified application id and intent id; Returns 
      None for exception</td>
          <td align="right" valign="top">
            <span class="codelink"><a href="TestON.drivers.common.api.controller.onosrestdriver-pysrc.html#OnosRestDriver.removeIntent">source&nbsp;code</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 name="getIntentsId"></a><span class="summary-sig-name">getIntentsId</span>(<span class="summary-sig-arg">self</span>,
        <span class="summary-sig-arg">ip</span>=<span class="summary-sig-default">&quot;DEFAULT&quot;</span>,
        <span class="summary-sig-arg">port</span>=<span class="summary-sig-default">&quot;DEFAULT&quot;</span>)</span><br />
      Returns a list of intents id; Returns None for exception</td>
          <td align="right" valign="top">
            <span class="codelink"><a href="TestON.drivers.common.api.controller.onosrestdriver-pysrc.html#OnosRestDriver.getIntentsId">source&nbsp;code</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="TestON.drivers.common.api.controller.onosrestdriver.OnosRestDriver-class.html#removeAllIntents" class="summary-sig-name">removeAllIntents</a>(<span class="summary-sig-arg">self</span>,
        <span class="summary-sig-arg">intentIdList</span>=<span class="summary-sig-default">'ALL'</span>,
        <span class="summary-sig-arg">appId</span>=<span class="summary-sig-default">'org.onosproject.cli'</span>,
        <span class="summary-sig-arg">ip</span>=<span class="summary-sig-default">&quot;DEFAULT&quot;</span>,
        <span class="summary-sig-arg">port</span>=<span class="summary-sig-default">&quot;DEFAULT&quot;</span>,
        <span class="summary-sig-arg">delay</span>=<span class="summary-sig-default">5</span>)</span><br />
      Description:...</td>
          <td align="right" valign="top">
            <span class="codelink"><a href="TestON.drivers.common.api.controller.onosrestdriver-pysrc.html#OnosRestDriver.removeAllIntents">source&nbsp;code</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="TestON.drivers.common.api.controller.onosrestdriver.OnosRestDriver-class.html#hosts" class="summary-sig-name">hosts</a>(<span class="summary-sig-arg">self</span>,
        <span class="summary-sig-arg">ip</span>=<span class="summary-sig-default">&quot;DEFAULT&quot;</span>,
        <span class="summary-sig-arg">port</span>=<span class="summary-sig-default">&quot;DEFAULT&quot;</span>)</span><br />
      Description:...</td>
          <td align="right" valign="top">
            <span class="codelink"><a href="TestON.drivers.common.api.controller.onosrestdriver-pysrc.html#OnosRestDriver.hosts">source&nbsp;code</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="TestON.drivers.common.api.controller.onosrestdriver.OnosRestDriver-class.html#getHost" class="summary-sig-name">getHost</a>(<span class="summary-sig-arg">self</span>,
        <span class="summary-sig-arg">mac</span>,
        <span class="summary-sig-arg">vlan</span>=<span class="summary-sig-default">&quot;-1&quot;</span>,
        <span class="summary-sig-arg">ip</span>=<span class="summary-sig-default">&quot;DEFAULT&quot;</span>,
        <span class="summary-sig-arg">port</span>=<span class="summary-sig-default">&quot;DEFAULT&quot;</span>)</span><br />
      Description:
    Gets the information from the given host
Required:
    str mac - MAC address of the host
Optional:
    str vlan - VLAN tag of the host, defaults to -1
Returns:
    Return the host id from the hosts/mac/vlan output in REST api
    whose 'id' contains mac/vlan; Returns None for exception;
    Returns main.FALSE if error on requests</td>
          <td align="right" valign="top">
            <span class="codelink"><a href="TestON.drivers.common.api.controller.onosrestdriver-pysrc.html#OnosRestDriver.getHost">source&nbsp;code</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="TestON.drivers.common.api.controller.onosrestdriver.OnosRestDriver-class.html#topology" class="summary-sig-name">topology</a>(<span class="summary-sig-arg">self</span>,
        <span class="summary-sig-arg">ip</span>=<span class="summary-sig-default">&quot;DEFAULT&quot;</span>,
        <span class="summary-sig-arg">port</span>=<span class="summary-sig-default">&quot;DEFAULT&quot;</span>)</span><br />
      Description:...</td>
          <td align="right" valign="top">
            <span class="codelink"><a href="TestON.drivers.common.api.controller.onosrestdriver-pysrc.html#OnosRestDriver.topology">source&nbsp;code</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="TestON.drivers.common.api.controller.onosrestdriver.OnosRestDriver-class.html#getIntentState" class="summary-sig-name">getIntentState</a>(<span class="summary-sig-arg">self</span>,
        <span class="summary-sig-arg">intentsId</span>,
        <span class="summary-sig-arg">intentsJson</span>=<span class="summary-sig-default">None</span>,
        <span class="summary-sig-arg">ip</span>=<span class="summary-sig-default">&quot;DEFAULT&quot;</span>,
        <span class="summary-sig-arg">port</span>=<span class="summary-sig-default">&quot;DEFAULT&quot;</span>)</span><br />
      Description:
    Get intent state.</td>
          <td align="right" valign="top">
            <span class="codelink"><a href="TestON.drivers.common.api.controller.onosrestdriver-pysrc.html#OnosRestDriver.getIntentState">source&nbsp;code</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="TestON.drivers.common.api.controller.onosrestdriver.OnosRestDriver-class.html#checkIntentState" class="summary-sig-name">checkIntentState</a>(<span class="summary-sig-arg">self</span>,
        <span class="summary-sig-arg">intentsId</span>=<span class="summary-sig-default">&quot;ALL&quot;</span>,
        <span class="summary-sig-arg">expectedState</span>=<span class="summary-sig-default">'INSTALLED'</span>,
        <span class="summary-sig-arg">ip</span>=<span class="summary-sig-default">&quot;DEFAULT&quot;</span>,
        <span class="summary-sig-arg">port</span>=<span class="summary-sig-default">&quot;DEFAULT&quot;</span>)</span><br />
      Description:
    Check intents state based on expected state which defaults to
    INSTALLED state
Required:
    intentsId - List of intents ID to be checked
Optional:
    expectedState - Check the expected state(s) of each intents
                    state in the list.</td>
          <td align="right" valign="top">
            <span class="codelink"><a href="TestON.drivers.common.api.controller.onosrestdriver-pysrc.html#OnosRestDriver.checkIntentState">source&nbsp;code</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="TestON.drivers.common.api.controller.onosrestdriver.OnosRestDriver-class.html#flows" class="summary-sig-name">flows</a>(<span class="summary-sig-arg">self</span>,
        <span class="summary-sig-arg">ip</span>=<span class="summary-sig-default">&quot;DEFAULT&quot;</span>,
        <span class="summary-sig-arg">port</span>=<span class="summary-sig-default">&quot;DEFAULT&quot;</span>)</span><br />
      Description:...</td>
          <td align="right" valign="top">
            <span class="codelink"><a href="TestON.drivers.common.api.controller.onosrestdriver-pysrc.html#OnosRestDriver.flows">source&nbsp;code</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="TestON.drivers.common.api.controller.onosrestdriver.OnosRestDriver-class.html#getFlows" class="summary-sig-name">getFlows</a>(<span class="summary-sig-arg">self</span>,
        <span class="summary-sig-arg">device</span>,
        <span class="summary-sig-arg">flowId</span>=<span class="summary-sig-default">0</span>,
        <span class="summary-sig-arg">ip</span>=<span class="summary-sig-default">&quot;DEFAULT&quot;</span>,
        <span class="summary-sig-arg">port</span>=<span class="summary-sig-default">&quot;DEFAULT&quot;</span>)</span><br />
      Description:...</td>
          <td align="right" valign="top">
            <span class="codelink"><a href="TestON.drivers.common.api.controller.onosrestdriver-pysrc.html#OnosRestDriver.getFlows">source&nbsp;code</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="TestON.drivers.common.api.controller.onosrestdriver.OnosRestDriver-class.html#addFlow" class="summary-sig-name">addFlow</a>(<span class="summary-sig-arg">self</span>,
        <span class="summary-sig-arg">deviceId</span>,
        <span class="summary-sig-arg">appId</span>=<span class="summary-sig-default">0</span>,
        <span class="summary-sig-arg">ingressPort</span>=<span class="summary-sig-default">&quot;&quot;</span>,
        <span class="summary-sig-arg">egressPort</span>=<span class="summary-sig-default">&quot;&quot;</span>,
        <span class="summary-sig-arg">ethType</span>=<span class="summary-sig-default">&quot;&quot;</span>,
        <span class="summary-sig-arg">ethSrc</span>=<span class="summary-sig-default">&quot;&quot;</span>,
        <span class="summary-sig-arg">ethDst</span>=<span class="summary-sig-default">&quot;&quot;</span>,
        <span class="summary-sig-arg">bandwidth</span>=<span class="summary-sig-default">&quot;&quot;</span>,
        <span class="summary-sig-arg">lambdaAlloc</span>=<span class="summary-sig-default">False</span>,
        <span class="summary-sig-arg">ipProto</span>=<span class="summary-sig-default">&quot;&quot;</span>,
        <span class="summary-sig-arg">ipSrc</span>=<span class="summary-sig-default">&quot;&quot;</span>,
        <span class="summary-sig-arg">ipDst</span>=<span class="summary-sig-default">&quot;&quot;</span>,
        <span class="summary-sig-arg">tcpSrc</span>=<span class="summary-sig-default">&quot;&quot;</span>,
        <span class="summary-sig-arg">tcpDst</span>=<span class="summary-sig-default">&quot;&quot;</span>,
        <span class="summary-sig-arg">ip</span>=<span class="summary-sig-default">&quot;DEFAULT&quot;</span>,
        <span class="summary-sig-arg">port</span>=<span class="summary-sig-default">&quot;DEFAULT&quot;</span>)</span><br />
      Description:
    Creates a single flow in the specified device
Required:
    * deviceId: id of the device
Optional:
    * ingressPort: port ingress device
    * egressPort: port  of egress device
    * ethType: specify ethType
    * ethSrc: specify ethSrc ( i.e.</td>
          <td align="right" valign="top">
            <span class="codelink"><a href="TestON.drivers.common.api.controller.onosrestdriver-pysrc.html#OnosRestDriver.addFlow">source&nbsp;code</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="TestON.drivers.common.api.controller.onosrestdriver.OnosRestDriver-class.html#removeFlow" class="summary-sig-name">removeFlow</a>(<span class="summary-sig-arg">self</span>,
        <span class="summary-sig-arg">deviceId</span>,
        <span class="summary-sig-arg">flowId</span>,
        <span class="summary-sig-arg">ip</span>=<span class="summary-sig-default">&quot;DEFAULT&quot;</span>,
        <span class="summary-sig-arg">port</span>=<span class="summary-sig-default">&quot;DEFAULT&quot;</span>)</span><br />
      Description:...</td>
          <td align="right" valign="top">
            <span class="codelink"><a href="TestON.drivers.common.api.controller.onosrestdriver-pysrc.html#OnosRestDriver.removeFlow">source&nbsp;code</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="TestON.drivers.common.api.controller.onosrestdriver.OnosRestDriver-class.html#checkFlowsState" class="summary-sig-name">checkFlowsState</a>(<span class="summary-sig-arg">self</span>,
        <span class="summary-sig-arg">ip</span>=<span class="summary-sig-default">&quot;DEFAULT&quot;</span>,
        <span class="summary-sig-arg">port</span>=<span class="summary-sig-default">&quot;DEFAULT&quot;</span>)</span><br />
      Description:...</td>
          <td align="right" valign="top">
            <span class="codelink"><a href="TestON.drivers.common.api.controller.onosrestdriver-pysrc.html#OnosRestDriver.checkFlowsState">source&nbsp;code</a></span>
            
          </td>
        </tr>
      </table>
      
    </td>
  </tr>
  <tr>
    <td colspan="2" class="summary">
    <p class="indent-wrapped-lines"><b>Inherited from <code>component.Component</code></b>:
      <code>__getattr__</code>,
      <code>cleanup</code>,
      <code>close_log_handles</code>,
      <code>config</code>,
      <code>disconnect</code>,
      <code>execute</code>,
      <code>experimentRun</code>,
      <code>get_version</code>,
      <code>log</code>
      </p>
    <p class="indent-wrapped-lines"><b>Inherited from <code>object</code></b>:
      <code>__delattr__</code>,
      <code>__format__</code>,
      <code>__getattribute__</code>,
      <code>__hash__</code>,
      <code>__new__</code>,
      <code>__reduce__</code>,
      <code>__reduce_ex__</code>,
      <code>__repr__</code>,
      <code>__setattr__</code>,
      <code>__sizeof__</code>,
      <code>__str__</code>,
      <code>__subclasshook__</code>
      </p>
    </td>
  </tr>
</table>
<!-- ==================== PROPERTIES ==================== -->
<a name="section-Properties"></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">Properties</span></td>
        <td align="right" valign="top"
         ><span class="options">[<a href="#section-Properties"
         class="privatelink" onclick="toggle_private();"
         >hide private</a>]</span></td>
      </tr>
    </table>
  </td>
</tr>
  <tr>
    <td colspan="2" class="summary">
    <p class="indent-wrapped-lines"><b>Inherited from <code>object</code></b>:
      <code>__class__</code>
      </p>
    </td>
  </tr>
</table>
<!-- ==================== METHOD DETAILS ==================== -->
<a name="section-MethodDetails"></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">Method Details</span></td>
        <td align="right" valign="top"
         ><span class="options">[<a href="#section-MethodDetails"
         class="privatelink" onclick="toggle_private();"
         >hide private</a>]</span></td>
      </tr>
    </table>
  </td>
</tr>
</table>
<a name="__init__"></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">__init__</span>(<span class="sig-arg">self</span>)</span>
    <br /><em class="fname">(Constructor)</em>
  </h3>
  </td><td align="right" valign="top"
    ><span class="codelink"><a href="TestON.drivers.common.api.controller.onosrestdriver-pysrc.html#OnosRestDriver.__init__">source&nbsp;code</a></span>&nbsp;
    </td>
  </tr></table>
  
  <p>x.__init__(...) initializes x; see help(type(x)) for signature</p>
  <dl class="fields">
    <dt>Overrides:
        object.__init__
        <dd><em class="note">(inherited documentation)</em></dd>
    </dt>
  </dl>
</td></tr></table>
</div>
<a name="connect"></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">connect</span>(<span class="sig-arg">self</span>,
        <span class="sig-arg">**connectargs</span>)</span>
  </h3>
  </td><td align="right" valign="top"
    ><span class="codelink"><a href="TestON.drivers.common.api.controller.onosrestdriver-pysrc.html#OnosRestDriver.connect">source&nbsp;code</a></span>&nbsp;
    </td>
  </tr></table>
  
  <p>Connection will establish to the remote host using ssh. It will take 
  user_name ,ip_address and password as arguments&lt;br&gt; and will return
  the handle.</p>
  <dl class="fields">
    <dt>Overrides:
        component.Component.connect
    </dt>
  </dl>
</td></tr></table>
</div>
<a name="send"></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">send</span>(<span class="sig-arg">self</span>,
        <span class="sig-arg">ip</span>,
        <span class="sig-arg">port</span>,
        <span class="sig-arg">url</span>,
        <span class="sig-arg">base</span>=<span class="sig-default">&quot;/onos/v1&quot;</span>,
        <span class="sig-arg">method</span>=<span class="sig-default">&quot;GET&quot;</span>,
        <span class="sig-arg">query</span>=<span class="sig-default">None</span>,
        <span class="sig-arg">data</span>=<span class="sig-default">None</span>)</span>
  </h3>
  </td><td align="right" valign="top"
    ><span class="codelink"><a href="TestON.drivers.common.api.controller.onosrestdriver-pysrc.html#OnosRestDriver.send">source&nbsp;code</a></span>&nbsp;
    </td>
  </tr></table>
  
  <pre class="literalblock">

Arguments:
    str ip: ONOS IP Address
    str port: ONOS REST Port
    str url: ONOS REST url path.
             NOTE that this is is only the relative path. IE &quot;/devices&quot;
    str base: The base url for the given REST api. Applications could
              potentially have their own base url
    str method: HTTP method type
    dict query: Dictionary to be sent in the query string for
                 the request
    dict data: Dictionary to be sent in the body of the request

</pre>
  <dl class="fields">
  </dl>
</td></tr></table>
</div>
<a name="intents"></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">intents</span>(<span class="sig-arg">self</span>,
        <span class="sig-arg">ip</span>=<span class="sig-default">&quot;DEFAULT&quot;</span>,
        <span class="sig-arg">port</span>=<span class="sig-default">&quot;DEFAULT&quot;</span>)</span>
  </h3>
  </td><td align="right" valign="top"
    ><span class="codelink"><a href="TestON.drivers.common.api.controller.onosrestdriver-pysrc.html#OnosRestDriver.intents">source&nbsp;code</a></span>&nbsp;
    </td>
  </tr></table>
  
  <pre class="literalblock">

Description:
    Gets a list of dictionary of all intents in the system
Returns:
    A list of dictionary of intents in string type to match the cli
    version for now; Returns main.FALSE if error on request;
    Returns None for exception

</pre>
  <dl class="fields">
  </dl>
</td></tr></table>
</div>
<a name="intent"></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">intent</span>(<span class="sig-arg">self</span>,
        <span class="sig-arg">intentId</span>,
        <span class="sig-arg">appId</span>=<span class="sig-default">&quot;org.onosproject.cli&quot;</span>,
        <span class="sig-arg">ip</span>=<span class="sig-default">&quot;DEFAULT&quot;</span>,
        <span class="sig-arg">port</span>=<span class="sig-default">&quot;DEFAULT&quot;</span>)</span>
  </h3>
  </td><td align="right" valign="top"
    ><span class="codelink"><a href="TestON.drivers.common.api.controller.onosrestdriver-pysrc.html#OnosRestDriver.intent">source&nbsp;code</a></span>&nbsp;
    </td>
  </tr></table>
  
  <pre class="literalblock">

Description:
    Get the specific intent information of the given application ID and
    intent ID
Required:
    str intentId - Intent id in hexadecimal form
Optional:
    str appId - application id of intent
Returns:
    Returns an information dictionary of the given intent;
    Returns main.FALSE if error on requests; Returns None for exception
NOTE:
    The GET /intents REST api command accepts  application id but the
    api will get updated to accept application name instead

</pre>
  <dl class="fields">
  </dl>
</td></tr></table>
</div>
<a name="apps"></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">apps</span>(<span class="sig-arg">self</span>,
        <span class="sig-arg">ip</span>=<span class="sig-default">&quot;DEFAULT&quot;</span>,
        <span class="sig-arg">port</span>=<span class="sig-default">&quot;DEFAULT&quot;</span>)</span>
  </h3>
  </td><td align="right" valign="top"
    ><span class="codelink"><a href="TestON.drivers.common.api.controller.onosrestdriver-pysrc.html#OnosRestDriver.apps">source&nbsp;code</a></span>&nbsp;
    </td>
  </tr></table>
  
  <pre class="literalblock">

Description:
    Returns all the current application installed in the system
Returns:
    List of dictionary of installed application; Returns main.FALSE for
    error on request; Returns None for exception

</pre>
  <dl class="fields">
  </dl>
</td></tr></table>
</div>
<a name="activateApp"></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">activateApp</span>(<span class="sig-arg">self</span>,
        <span class="sig-arg">appName</span>,
        <span class="sig-arg">ip</span>=<span class="sig-default">&quot;DEFAULT&quot;</span>,
        <span class="sig-arg">port</span>=<span class="sig-default">&quot;DEFAULT&quot;</span>,
        <span class="sig-arg">check</span>=<span class="sig-default">True</span>)</span>
  </h3>
  </td><td align="right" valign="top"
    ><span class="codelink"><a href="TestON.drivers.common.api.controller.onosrestdriver-pysrc.html#OnosRestDriver.activateApp">source&nbsp;code</a></span>&nbsp;
    </td>
  </tr></table>
  
  <pre class="literalblock">

Decription:
    Activate an app that is already installed in ONOS
Optional:
    bool check - If check is True, method will check the status
                 of the app after the command is issued
Returns:
    Returns main.TRUE if the command was successfully or main.FALSE
    if the REST responded with an error or given incorrect input;
    Returns None for exception

</pre>
  <dl class="fields">
  </dl>
</td></tr></table>
</div>
<a name="deactivateApp"></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">deactivateApp</span>(<span class="sig-arg">self</span>,
        <span class="sig-arg">appName</span>,
        <span class="sig-arg">ip</span>=<span class="sig-default">&quot;DEFAULT&quot;</span>,
        <span class="sig-arg">port</span>=<span class="sig-default">&quot;DEFAULT&quot;</span>,
        <span class="sig-arg">check</span>=<span class="sig-default">True</span>)</span>
  </h3>
  </td><td align="right" valign="top"
    ><span class="codelink"><a href="TestON.drivers.common.api.controller.onosrestdriver-pysrc.html#OnosRestDriver.deactivateApp">source&nbsp;code</a></span>&nbsp;
    </td>
  </tr></table>
  
  <pre class="literalblock">

Required:
    Deactivate an app that is already activated in ONOS
Optional:
    bool check - If check is True, method will check the status of the
    app after the command is issued
Returns:
    Returns main.TRUE if the command was successfully sent
    main.FALSE if the REST responded with an error or given
    incorrect input; Returns None for exception

</pre>
  <dl class="fields">
  </dl>
</td></tr></table>
</div>
<a name="getApp"></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">getApp</span>(<span class="sig-arg">self</span>,
        <span class="sig-arg">appName</span>,
        <span class="sig-arg">project</span>=<span class="sig-default">&quot;org.onosproject.&quot;</span>,
        <span class="sig-arg">ip</span>=<span class="sig-default">&quot;DEFAULT&quot;</span>,
        <span class="sig-arg">port</span>=<span class="sig-default">&quot;DEFAULT&quot;</span>)</span>
  </h3>
  </td><td align="right" valign="top"
    ><span class="codelink"><a href="TestON.drivers.common.api.controller.onosrestdriver-pysrc.html#OnosRestDriver.getApp">source&nbsp;code</a></span>&nbsp;
    </td>
  </tr></table>
  
  <pre class="literalblock">

Decription:
    Gets the informaion of the given application
Required:
    str name - Name of onos application
Returns:
    Returns a dictionary of information ONOS application in string type;
    Returns main.FALSE if error on requests; Returns None for exception

</pre>
  <dl class="fields">
  </dl>
</td></tr></table>
</div>
<a name="addHostIntent"></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">addHostIntent</span>(<span class="sig-arg">self</span>,
        <span class="sig-arg">hostIdOne</span>,
        <span class="sig-arg">hostIdTwo</span>,
        <span class="sig-arg">appId</span>=<span class="sig-default">'org.onosproject.cli'</span>,
        <span class="sig-arg">ip</span>=<span class="sig-default">&quot;DEFAULT&quot;</span>,
        <span class="sig-arg">port</span>=<span class="sig-default">&quot;DEFAULT&quot;</span>)</span>
  </h3>
  </td><td align="right" valign="top"
    ><span class="codelink"><a href="TestON.drivers.common.api.controller.onosrestdriver-pysrc.html#OnosRestDriver.addHostIntent">source&nbsp;code</a></span>&nbsp;
    </td>
  </tr></table>
  
  <pre class="literalblock">

Description:
    Adds a host-to-host intent ( bidirectional ) by
    specifying the two hosts.
Required:
    * hostIdOne: ONOS host id for host1
    * hostIdTwo: ONOS host id for host2
Optional:
    str appId - Application name of intent identifier
Returns:
    Returns main.TRUE for successful requests; Returns main.FALSE if
    error on requests; Returns None for exceptions

</pre>
  <dl class="fields">
  </dl>
</td></tr></table>
</div>
<a name="addPointIntent"></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">addPointIntent</span>(<span class="sig-arg">self</span>,
        <span class="sig-arg">ingressDevice</span>,
        <span class="sig-arg">egressDevice</span>,
        <span class="sig-arg">appId</span>=<span class="sig-default">'org.onosproject.cli'</span>,
        <span class="sig-arg">ingressPort</span>=<span class="sig-default">&quot;&quot;</span>,
        <span class="sig-arg">egressPort</span>=<span class="sig-default">&quot;&quot;</span>,
        <span class="sig-arg">ethType</span>=<span class="sig-default">&quot;&quot;</span>,
        <span class="sig-arg">ethSrc</span>=<span class="sig-default">&quot;&quot;</span>,
        <span class="sig-arg">ethDst</span>=<span class="sig-default">&quot;&quot;</span>,
        <span class="sig-arg">bandwidth</span>=<span class="sig-default">&quot;&quot;</span>,
        <span class="sig-arg">lambdaAlloc</span>=<span class="sig-default">False</span>,
        <span class="sig-arg">ipProto</span>=<span class="sig-default">&quot;&quot;</span>,
        <span class="sig-arg">ipSrc</span>=<span class="sig-default">&quot;&quot;</span>,
        <span class="sig-arg">ipDst</span>=<span class="sig-default">&quot;&quot;</span>,
        <span class="sig-arg">tcpSrc</span>=<span class="sig-default">&quot;&quot;</span>,
        <span class="sig-arg">tcpDst</span>=<span class="sig-default">&quot;&quot;</span>,
        <span class="sig-arg">ip</span>=<span class="sig-default">&quot;DEFAULT&quot;</span>,
        <span class="sig-arg">port</span>=<span class="sig-default">&quot;DEFAULT&quot;</span>)</span>
  </h3>
  </td><td align="right" valign="top"
    ><span class="codelink"><a href="TestON.drivers.common.api.controller.onosrestdriver-pysrc.html#OnosRestDriver.addPointIntent">source&nbsp;code</a></span>&nbsp;
    </td>
  </tr></table>
  
  <pre class="literalblock">

Description:
    Adds a point-to-point intent ( uni-directional ) by
    specifying device id's and optional fields
Required:
    * ingressDevice: device id of ingress device
    * egressDevice: device id of egress device
Optional:
    * ethType: specify ethType
    * ethSrc: specify ethSrc ( i.e. src mac addr )
    * ethDst: specify ethDst ( i.e. dst mac addr )
    * bandwidth: specify bandwidth capacity of link (TODO)
    * lambdaAlloc: if True, intent will allocate lambda
      for the specified intent (TODO)
    * ipProto: specify ip protocol
    * ipSrc: specify ip source address with mask eg. ip#/24
    * ipDst: specify ip destination address eg. ip#/24
    * tcpSrc: specify tcp source port
    * tcpDst: specify tcp destination port
Returns:
    Returns main.TRUE for successful requests; Returns main.FALSE if
    no ingress|egress port found and if error on requests;
    Returns None for exceptions
NOTE:
    The ip and port option are for the requests input's ip and port
    of the ONOS node

</pre>
  <dl class="fields">
  </dl>
</td></tr></table>
</div>
<a name="removeAllIntents"></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">removeAllIntents</span>(<span class="sig-arg">self</span>,
        <span class="sig-arg">intentIdList</span>=<span class="sig-default">'ALL'</span>,
        <span class="sig-arg">appId</span>=<span class="sig-default">'org.onosproject.cli'</span>,
        <span class="sig-arg">ip</span>=<span class="sig-default">&quot;DEFAULT&quot;</span>,
        <span class="sig-arg">port</span>=<span class="sig-default">&quot;DEFAULT&quot;</span>,
        <span class="sig-arg">delay</span>=<span class="sig-default">5</span>)</span>
  </h3>
  </td><td align="right" valign="top"
    ><span class="codelink"><a href="TestON.drivers.common.api.controller.onosrestdriver-pysrc.html#OnosRestDriver.removeAllIntents">source&nbsp;code</a></span>&nbsp;
    </td>
  </tr></table>
  
  <pre class="literalblock">

Description:
    Remove all the intents
Returns:
    Returns main.TRUE if all intents are removed, otherwise returns
    main.FALSE; Returns None for exception

</pre>
  <dl class="fields">
  </dl>
</td></tr></table>
</div>
<a name="hosts"></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">hosts</span>(<span class="sig-arg">self</span>,
        <span class="sig-arg">ip</span>=<span class="sig-default">&quot;DEFAULT&quot;</span>,
        <span class="sig-arg">port</span>=<span class="sig-default">&quot;DEFAULT&quot;</span>)</span>
  </h3>
  </td><td align="right" valign="top"
    ><span class="codelink"><a href="TestON.drivers.common.api.controller.onosrestdriver-pysrc.html#OnosRestDriver.hosts">source&nbsp;code</a></span>&nbsp;
    </td>
  </tr></table>
  
  <pre class="literalblock">

Description:
    Get a list of dictionary of all discovered hosts
Returns:
    Returns a list of dictionary of information of the hosts currently
    discovered by ONOS; Returns main.FALSE if error on requests;
    Returns None for exception

</pre>
  <dl class="fields">
  </dl>
</td></tr></table>
</div>
<a name="getHost"></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">getHost</span>(<span class="sig-arg">self</span>,
        <span class="sig-arg">mac</span>,
        <span class="sig-arg">vlan</span>=<span class="sig-default">&quot;-1&quot;</span>,
        <span class="sig-arg">ip</span>=<span class="sig-default">&quot;DEFAULT&quot;</span>,
        <span class="sig-arg">port</span>=<span class="sig-default">&quot;DEFAULT&quot;</span>)</span>
  </h3>
  </td><td align="right" valign="top"
    ><span class="codelink"><a href="TestON.drivers.common.api.controller.onosrestdriver-pysrc.html#OnosRestDriver.getHost">source&nbsp;code</a></span>&nbsp;
    </td>
  </tr></table>
  
  <pre class="literalblock">

Description:
    Gets the information from the given host
Required:
    str mac - MAC address of the host
Optional:
    str vlan - VLAN tag of the host, defaults to -1
Returns:
    Return the host id from the hosts/mac/vlan output in REST api
    whose 'id' contains mac/vlan; Returns None for exception;
    Returns main.FALSE if error on requests

NOTE:
    Not sure what this function should do, any suggestion?

</pre>
  <dl class="fields">
  </dl>
</td></tr></table>
</div>
<a name="topology"></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">topology</span>(<span class="sig-arg">self</span>,
        <span class="sig-arg">ip</span>=<span class="sig-default">&quot;DEFAULT&quot;</span>,
        <span class="sig-arg">port</span>=<span class="sig-default">&quot;DEFAULT&quot;</span>)</span>
  </h3>
  </td><td align="right" valign="top"
    ><span class="codelink"><a href="TestON.drivers.common.api.controller.onosrestdriver-pysrc.html#OnosRestDriver.topology">source&nbsp;code</a></span>&nbsp;
    </td>
  </tr></table>
  
  <pre class="literalblock">

Description:
    Gets the overview of network topology
Returns:
    Returns a dictionary containing information about network topology;
    Returns None for exception

</pre>
  <dl class="fields">
  </dl>
</td></tr></table>
</div>
<a name="getIntentState"></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">getIntentState</span>(<span class="sig-arg">self</span>,
        <span class="sig-arg">intentsId</span>,
        <span class="sig-arg">intentsJson</span>=<span class="sig-default">None</span>,
        <span class="sig-arg">ip</span>=<span class="sig-default">&quot;DEFAULT&quot;</span>,
        <span class="sig-arg">port</span>=<span class="sig-default">&quot;DEFAULT&quot;</span>)</span>
  </h3>
  </td><td align="right" valign="top"
    ><span class="codelink"><a href="TestON.drivers.common.api.controller.onosrestdriver-pysrc.html#OnosRestDriver.getIntentState">source&nbsp;code</a></span>&nbsp;
    </td>
  </tr></table>
  
  <pre class="literalblock">

Description:
    Get intent state.
    Accepts a single intent ID (string type) or a list of intent IDs.
    Returns the state(string type) of the id if a single intent ID is
    accepted.
Required:
    intentId: intent ID (string type)
    intentsJson: parsed json object from the onos:intents api
Returns:
    Returns a dictionary with intent IDs as the key and its
    corresponding states as the values; Returns None for invalid IDs or
    Type error and any exceptions
NOTE:
    An intent's state consist of INSTALLED,WITHDRAWN etc.

</pre>
  <dl class="fields">
  </dl>
</td></tr></table>
</div>
<a name="checkIntentState"></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">checkIntentState</span>(<span class="sig-arg">self</span>,
        <span class="sig-arg">intentsId</span>=<span class="sig-default">&quot;ALL&quot;</span>,
        <span class="sig-arg">expectedState</span>=<span class="sig-default">'INSTALLED'</span>,
        <span class="sig-arg">ip</span>=<span class="sig-default">&quot;DEFAULT&quot;</span>,
        <span class="sig-arg">port</span>=<span class="sig-default">&quot;DEFAULT&quot;</span>)</span>
  </h3>
  </td><td align="right" valign="top"
    ><span class="codelink"><a href="TestON.drivers.common.api.controller.onosrestdriver-pysrc.html#OnosRestDriver.checkIntentState">source&nbsp;code</a></span>&nbsp;
    </td>
  </tr></table>
  
  <pre class="literalblock">

Description:
    Check intents state based on expected state which defaults to
    INSTALLED state
Required:
    intentsId - List of intents ID to be checked
Optional:
    expectedState - Check the expected state(s) of each intents
                    state in the list.
                    *NOTE: You can pass in a list of expected state,
                    Eg: expectedState = [ 'INSTALLED' , 'INSTALLING' ]
Return:
    Returns main.TRUE only if all intent are the same as expected states
    , otherwise, returns main.FALSE; Returns None for general exception

</pre>
  <dl class="fields">
  </dl>
</td></tr></table>
</div>
<a name="flows"></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">flows</span>(<span class="sig-arg">self</span>,
        <span class="sig-arg">ip</span>=<span class="sig-default">&quot;DEFAULT&quot;</span>,
        <span class="sig-arg">port</span>=<span class="sig-default">&quot;DEFAULT&quot;</span>)</span>
  </h3>
  </td><td align="right" valign="top"
    ><span class="codelink"><a href="TestON.drivers.common.api.controller.onosrestdriver-pysrc.html#OnosRestDriver.flows">source&nbsp;code</a></span>&nbsp;
    </td>
  </tr></table>
  
  <pre class="literalblock">

Description:
    Get flows currently added to the system
NOTE:
    The flows -j cli command has completely different format than
    the REST output; Returns None for exception

</pre>
  <dl class="fields">
  </dl>
</td></tr></table>
</div>
<a name="getFlows"></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">getFlows</span>(<span class="sig-arg">self</span>,
        <span class="sig-arg">device</span>,
        <span class="sig-arg">flowId</span>=<span class="sig-default">0</span>,
        <span class="sig-arg">ip</span>=<span class="sig-default">&quot;DEFAULT&quot;</span>,
        <span class="sig-arg">port</span>=<span class="sig-default">&quot;DEFAULT&quot;</span>)</span>
  </h3>
  </td><td align="right" valign="top"
    ><span class="codelink"><a href="TestON.drivers.common.api.controller.onosrestdriver-pysrc.html#OnosRestDriver.getFlows">source&nbsp;code</a></span>&nbsp;
    </td>
  </tr></table>
  
  <pre class="literalblock">

Description:
    Gets all the flows of the device or get a specific flow in the
    device by giving its flow ID
Required:
    str device - device/switch Id
Optional:
    int/hex flowId - ID of the flow

</pre>
  <dl class="fields">
  </dl>
</td></tr></table>
</div>
<a name="addFlow"></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">addFlow</span>(<span class="sig-arg">self</span>,
        <span class="sig-arg">deviceId</span>,
        <span class="sig-arg">appId</span>=<span class="sig-default">0</span>,
        <span class="sig-arg">ingressPort</span>=<span class="sig-default">&quot;&quot;</span>,
        <span class="sig-arg">egressPort</span>=<span class="sig-default">&quot;&quot;</span>,
        <span class="sig-arg">ethType</span>=<span class="sig-default">&quot;&quot;</span>,
        <span class="sig-arg">ethSrc</span>=<span class="sig-default">&quot;&quot;</span>,
        <span class="sig-arg">ethDst</span>=<span class="sig-default">&quot;&quot;</span>,
        <span class="sig-arg">bandwidth</span>=<span class="sig-default">&quot;&quot;</span>,
        <span class="sig-arg">lambdaAlloc</span>=<span class="sig-default">False</span>,
        <span class="sig-arg">ipProto</span>=<span class="sig-default">&quot;&quot;</span>,
        <span class="sig-arg">ipSrc</span>=<span class="sig-default">&quot;&quot;</span>,
        <span class="sig-arg">ipDst</span>=<span class="sig-default">&quot;&quot;</span>,
        <span class="sig-arg">tcpSrc</span>=<span class="sig-default">&quot;&quot;</span>,
        <span class="sig-arg">tcpDst</span>=<span class="sig-default">&quot;&quot;</span>,
        <span class="sig-arg">ip</span>=<span class="sig-default">&quot;DEFAULT&quot;</span>,
        <span class="sig-arg">port</span>=<span class="sig-default">&quot;DEFAULT&quot;</span>)</span>
  </h3>
  </td><td align="right" valign="top"
    ><span class="codelink"><a href="TestON.drivers.common.api.controller.onosrestdriver-pysrc.html#OnosRestDriver.addFlow">source&nbsp;code</a></span>&nbsp;
    </td>
  </tr></table>
  
  <pre class="literalblock">

Description:
    Creates a single flow in the specified device
Required:
    * deviceId: id of the device
Optional:
    * ingressPort: port ingress device
    * egressPort: port  of egress device
    * ethType: specify ethType
    * ethSrc: specify ethSrc ( i.e. src mac addr )
    * ethDst: specify ethDst ( i.e. dst mac addr )
    * ipProto: specify ip protocol
    * ipSrc: specify ip source address with mask eg. ip#/24
    * ipDst: specify ip destination address eg. ip#/24
    * tcpSrc: specify tcp source port
    * tcpDst: specify tcp destination port
Returns:
    Returns main.TRUE for successful requests; Returns main.FALSE
    if error on requests;
    Returns None for exceptions
NOTE:
    The ip and port option are for the requests input's ip and port
    of the ONOS node

</pre>
  <dl class="fields">
  </dl>
</td></tr></table>
</div>
<a name="removeFlow"></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">removeFlow</span>(<span class="sig-arg">self</span>,
        <span class="sig-arg">deviceId</span>,
        <span class="sig-arg">flowId</span>,
        <span class="sig-arg">ip</span>=<span class="sig-default">&quot;DEFAULT&quot;</span>,
        <span class="sig-arg">port</span>=<span class="sig-default">&quot;DEFAULT&quot;</span>)</span>
  </h3>
  </td><td align="right" valign="top"
    ><span class="codelink"><a href="TestON.drivers.common.api.controller.onosrestdriver-pysrc.html#OnosRestDriver.removeFlow">source&nbsp;code</a></span>&nbsp;
    </td>
  </tr></table>
  
  <pre class="literalblock">

Description:
    Remove specific device flow
Required:
    str deviceId - id of the device
    str flowId - id of the flow
Return:
    Returns main.TRUE if successfully deletes flows, otherwise
    Returns main.FALSE, Returns None on error

</pre>
  <dl class="fields">
  </dl>
</td></tr></table>
</div>
<a name="checkFlowsState"></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">checkFlowsState</span>(<span class="sig-arg">self</span>,
        <span class="sig-arg">ip</span>=<span class="sig-default">&quot;DEFAULT&quot;</span>,
        <span class="sig-arg">port</span>=<span class="sig-default">&quot;DEFAULT&quot;</span>)</span>
  </h3>
  </td><td align="right" valign="top"
    ><span class="codelink"><a href="TestON.drivers.common.api.controller.onosrestdriver-pysrc.html#OnosRestDriver.checkFlowsState">source&nbsp;code</a></span>&nbsp;
    </td>
  </tr></table>
  
  <pre class="literalblock">

Description:
    Check if all the current flows are in ADDED state
Return:
    returnValue - Returns main.TRUE only if all flows are in
                  return main.FALSE otherwise;
                  Returns None for exception

</pre>
  <dl class="fields">
  </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="TestON-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"
            >TestON</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 Mon Aug 10 11:12:35 2015
    </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>
