Versions Compared

Key

  • This line was added.
  • This line was removed.
  • Formatting was changed.


Classes

class UniversalExtension

Base class for Stonebranch Universal Extension module implementations

Instance variables

uip

can be used to access the following properties of an Extension task instance:

  • task_variables : dict
  • is_triggered : bool
  • trigger_id : str
  • instance_id : str
  • monitor_id : str
>>>
Code Block
languagepy
themeEmacs
titleExample
Html bobswift
<!doctype html>
<html lang="en">
<body>
<meta charset="utf-8">
<meta name="viewport" content="width=device-width, initial-scale=1, minimum-scale=1" />
<meta name="generator" content="pdoc 0.10.0" />
<title>universal_extension.universal_extension API documentation</title>
<meta name="description" content="" />
<link rel="preload stylesheet" as="style" href="https://cdnjs.cloudflare.com/ajax/libs/10up-sanitize.css/11.0.1/sanitize.min.css" integrity="sha256-PK9q560IAAa6WVRRh76LtCaI8pjTJ2z11v0miyNNjrs=" crossorigin>
<link rel="preload stylesheet" as="style" href="https://cdnjs.cloudflare.com/ajax/libs/10up-sanitize.css/11.0.1/typography.min.css" integrity="sha256-7l/o7C8jubJiy74VsKTidCy1yBkRtiUGbVkYBylBqUg=" crossorigin>
<link rel="stylesheet preload" as="style" href="https://cdnjs.cloudflare.com/ajax/libs/highlight.js/10.1.1/styles/github.min.css" crossorigin>
<style>:root{--highlight-color:#fe9}.flex{display:flex !important}body{line-height:1.5em}#content{padding:20px}#sidebar{padding:30px;overflow:hidden}#sidebar > *:last-child{margin-bottom:2cm}.http-server-breadcrumbs{font-size:130%;margin:0 0 15px 0}#footer{font-size:.75em;padding:5px 30px;border-top:1px solid #ddd;text-align:right}#footer p{margin:0 0 0 1em;display:inline-block}#footer p:last-child{margin-right:30px}h1,h2,h3,h4,h5{font-weight:300}h1{font-size:2.5em;line-height:1.1em}h2{font-size:1.75em;margin:1em 0 .50em 0}h3{font-size:1.4em;padding:0em 0em 0.75em 0em !important}h4{margin:0;font-size:105%}h1:target,h2:target,h3:target,h4:target,h5:target,h6:target{background:var(--highlight-color);padding:.2em 0}a{color:#058;text-decoration:none;transition:color .3s ease-in-out}a:hover{color:#e82}.title code{font-weight:bold;font-size:1.5em !important}.classes-title{padding:1em 0em 0em 0em !important;font-weight:bold !important}h2[id^="header-"]{margin-top:2em}.ident{color:#900}pre code{background:#f8f8f8;padding: 0px;font-size:.8em;line-height:1.4em}code{padding:1px 4px;overflow-wrap:break-word}h1 code{background:transparent}pre{background:#f8f8f8;border:0;border-top:1px solid #ccc;border-bottom:1px solid #ccc;margin:1em 0;padding:1ex}#http-server-module-list{display:flex;flex-flow:column}#http-server-module-list div{display:flex}#http-server-module-list dt{min-width:10%}#http-server-module-list p{margin-top:0}.toc ul,#index{list-style-type:none;margin:0;padding:0}#index code{background:transparent}#index h3{border-bottom:1px solid #ddd}#index ul{padding:0}#index h4{margin-top:.6em;font-weight:bold}@media (min-width:200ex){#index .two-column{column-count:2}}@media (min-width:300ex){#index .two-column{column-count:3}}dl{margin-bottom:2em}dl dl:last-child{margin-bottom:4em}dd{margin:0 0 1em 3em}#header-classes + dl > dd{margin-bottom:3em}dd dd{margin-left:2em}dd p{margin:10px 0}.name{background:none;font-weight:500;font-size:1.1em;padding:5px 10px;display:inline-block;min-width:40%}dt:target .name{background:var(--highlight-color)}.name > span:first-child{white-space:nowrap}.name.class > span:nth-child(2){margin-left:.4em}.inherited{color:#999;border-left:5px solid #eee;padding-left:1em}.inheritance em{font-style:normal;font-weight:bold}.desc h2{font-weight:400;font-size:1.25em}.desc h3{font-size:1em}.desc dt code{background:inherit}.source summary,.git-link-div{color:#666;text-align:right;font-weight:400;font-size:.8em;text-transform:uppercase}.source summary > *{white-space:nowrap;cursor:pointer}.git-link{color:inherit;margin-left:1em}.source pre{max-height:500px;overflow:auto;margin:0}.source pre code{font-size:12px;overflow:visible}.hlist{list-style:none}.hlist li{display:inline}.hlist li:after{content:',\2002'}.hlist li:last-child:after{content:none}.hlist .hlist{display:inline;padding-left:1em}img{max-width:100%}td{padding:0 .5em}admonition{padding:.1em .5em;margin-bottom:1em}.admonition-title{font-weight:bold}.admonition.note,.admonition.info,.admonition.important{color:#00529B;background-color:#BDE5F8;border-left:solid 4px #3498db;line-height:18px;padding:5px;margin:0.5em 0em}.admonition.todo,.admonition.versionadded,.admonition.tip,.admonition.hint{background:#dfd}.admonition.warning,.admonition.versionchanged,.admonition.deprecated{color:#9F6000;background-color:#FEEFB3;border-left:solid 4px #ec8e00;line-height:18px;padding:5px;margin:0.5em 0em}.admonition.error,.admonition.danger,.admonition.caution{color:#D8000C;background-color:#FFD2D2;border-left:solid 4px #DB1924;line-height:18px;padding:5px;margin:0.5em 0em}pre{background-color:#eeffcc;word-wrap:break-word;border:1px solid #ac9;padding:5px}pre code{background:none}hr{width:95%}.thick-line{height:2.5px;border-width:0;color:gray;background-color:gray}</style>
<style media="screen and (min-width: 700px)">@media screen and (min-width:700px){#sidebar{width:30%;height:100vh;overflow:auto;position:sticky;top:0}#content{width:100%;padding:0em}pre code{font-size:1em}.item .name{font-size:1em}main{display:flex;flex-direction:row-reverse;justify-content:flex-end}.toc ul ul,#index ul{padding-left:1.5em}.toc > ul > li{margin-top:.5em}}</style>
<style media="print">@media print{#sidebar h1{page-break-before:always}.source{display:none}}@media print{*{background:transparent !important;color:#000 !important;box-shadow:none !important;text-shadow:none !important}a[href]:after{content:" (" attr(href) ")";font-size:90%}a[href][title]:after{content:none}abbr[title]:after{content:" (" attr(title) ")"}.ir a:after,a[href^="javascript:"]:after,a[href^="#"]:after{content:""}pre,blockquote{border:1px solid #999;page-break-inside:avoid}thead{display:table-header-group}tr,img{page-break-inside:avoid}img{max-width:100% !important}@page{margin:0.5cm}p,h2,h3{orphans:3;widows:3}h1,h2,h3,h4,h5,h6{page-break-after:avoid}}</style>
<main>
<article id="content">
<section id="section-intro">
</section>
<section>
</section>
<section>
</section>
<section>
</section>
<section>
<h1 class="classes-title">Classes</h1>
<dl>
<dt id="universal_extension.universal_extension.UniversalExtension"><code class="flex name class">
<span>class <span class="ident">UniversalExtension</span></span>
</code></dt>
<dd>
<div class="desc"><p>Base class for Stonebranch Universal Extension module implementations</p></div>
</dd>
<dd>
<h3>Instance variables</h3>
<dl>
<dt id="universal_extension.universal_extension.UniversalExtension.uip"><code class="name"><span class="ident">uip</span></code></dt>
<dd>
<div class="desc"><p>can be used to access the following properties of an Extension task instance:</p>
<ul>
<li><strong><code>task_variables</code></strong> : <code>dict</code></li>
<li><strong><code>is_triggered</code></strong> : <code>bool</code></li>
<li><strong><code>trigger_id</code></strong> : <code>str</code></li>
<li><strong><code>instance_id</code></strong> : <code>str</code></li>
<li><strong><code>monitor_id</code></strong>
: <code>str</code></li>
</ul>
<h2 id="examples">Examples</h2>
<pre><code>>>> ops_task_id = self.uip.task_variables['ops_task_id']
>>> is_triggered = self.uip.is_triggered
>>> trigger_id = self.uip.trigger_id
>>> instance_id = self.uip.instance_id
>>> monitor_id = self.uip.monitor_id

Methods

extension_start (self, fields)

Serves as the starting point for work that will be performed for a task instance. It must be implemented in the derived class.

Parameters

fields : dict

populated with field values from the associated task instance launched in the Controller

Returns

ExtensionResult

once the work is done, an instance of ExtensionResult must be returned. See the ExtensionResult documentation for a full list of parameters that can be passed to the class constructor

extension_cancel (self)

Optional method that allows the Extension to do any cleanup work before terminating. To use it, implement in the derived class.

Parameters

None

Returns

None

update_extension_status (self, fields)

Propagate state changes back to the associated extension instance in the Controller.

  • Can be called at any time by an Extension instance.
  • Any/all output fields defined in the associated Extension Template can be updated using this method.

Parameters

fields : dict

The fields parameter expects a dictionary of output fields to be sent back to the controller for the associated Extension instance. Field names are implementation dependent and correlate with the Universal Template field names in the Controller's Template definition for the associated task.

Returns

None

Code Block
languagepy
titleExample
>>>id
</code></pre></div>
</dd>
<hr>
</dl>
<h3>Methods</h3>
<dl>
<dt id="universal_extension.universal_extension.UniversalExtension.extension_start"><code class="name flex">
<span> <span class="ident">extension_start</span></span>(<span>self, fields)</span>
</code></dt>
<dd>
<div class="desc"><p>Serves as the starting point for work that will be performed for a task
instance. It must be implemented in the derived class.</p>
<h2 id="parameters">Parameters</h2>
<dl>
<dt><strong><code>fields</code></strong> : <code>dict</code></dt>
<dd>populated with field values from the associated task instance
launched in the Controller</dd>
</dl>
<h2 id="returns">Returns</h2>
<dl>
<dt><code>ExtensionResult</code></dt>
<dd>once the work is done, an instance of ExtensionResult must be
returned. See the ExtensionResult documentation for a full list of
parameters that can be passed to the class constructor</dd>
</dl></div>
</dd>
<hr>
<dt id="universal_extension.universal_extension.UniversalExtension.extension_cancel"><code class="name flex">
<span> <span class="ident">extension_cancel</span></span>(<span>self)</span>
</code></dt>
<dd>
<div class="desc"><p>Optional method that allows the Extension to do any cleanup work
before terminating. To use it, implement in the derived class.</p>
<h2 id="parameters">Parameters</h2>
<p>None </p>
<h2 id="returns">Returns</h2>
<dl>
<dt><code>None</code></dt>
</dl></div>
</dd>
<hr>
<dt id="universal_extension.universal_extension.UniversalExtension.update_extension_status"><code class="name flex">
<span> <span class="ident">update_extension_status</span></span>(<span>self, fields)</span>
</code></dt>
<dd>
<div class="desc"><p>Propagate state changes back to the associated extension instance in
the Controller.</p>
<ul>
<li>Can be called at any time by an Extension instance.
</li>
<li>Any/all output fields defined in the associated Extension Template
can be updated using this method.</li>
</ul>
<h2 id="parameters">Parameters</h2>
<dl>
<dt><strong><code>fields</code></strong> : <code>dict
</code></dt>
<dd>The fields parameter expects a dictionary of output fields to be
sent back to the controller for the associated Extension instance.
Field names are implementation dependent and correlate with the
Universal Template field names in the Controller's Template
definition for the associated task.</dd>
</dl>
<h2 id="returns">Returns</h2>
<dl>
<dt><code>None </code></dt>
</dl>
<h2 id="examples">Examples</h2>
<pre><code>>>> fields = {"foo": "bar"}
>>> self.update_extension_status(fields)
</code></pre></div>
</dd>
<hr>
</dl>
</dd>
<hr class="thick-line">
</dl>
</section>
</article>
</main>
</body>
</html>