2013-12-30 15:45:08 +01:00

953 lines
76 KiB
Plaintext

<!DOCTYPE html>
<html>
<head prefix="og: http://ogp.me/ns# fb: http://ogp.me/ns/fb# githubog: http://ogp.me/ns/fb/githubog#">
<meta charset='utf-8'>
<meta http-equiv="X-UA-Compatible" content="IE=edge">
<title>openstack-resource-agents/ocf/heat-engine at master · madkiss/openstack-resource-agents · GitHub</title>
<link rel="search" type="application/opensearchdescription+xml" href="/opensearch.xml" title="GitHub" />
<link rel="fluid-icon" href="https://github.com/fluidicon.png" title="GitHub" />
<link rel="apple-touch-icon" sizes="57x57" href="/apple-touch-icon-114.png" />
<link rel="apple-touch-icon" sizes="114x114" href="/apple-touch-icon-114.png" />
<link rel="apple-touch-icon" sizes="72x72" href="/apple-touch-icon-144.png" />
<link rel="apple-touch-icon" sizes="144x144" href="/apple-touch-icon-144.png" />
<link rel="logo" type="image/svg" href="https://github-media-downloads.s3.amazonaws.com/github-logo.svg" />
<meta property="og:image" content="https://github.global.ssl.fastly.net/images/modules/logos_page/Octocat.png">
<meta name="hostname" content="github-fe130-cp1-prd.iad.github.net">
<meta name="ruby" content="ruby 1.9.3p194-tcs-github-tcmalloc (e1c0c3f392) [x86_64-linux]">
<link rel="assets" href="https://github.global.ssl.fastly.net/">
<link rel="conduit-xhr" href="https://ghconduit.com:25035/">
<link rel="xhr-socket" href="/_sockets" />
<meta name="msapplication-TileImage" content="/windows-tile.png" />
<meta name="msapplication-TileColor" content="#ffffff" />
<meta name="selected-link" value="repo_source" data-pjax-transient />
<meta content="collector.githubapp.com" name="octolytics-host" /><meta content="collector-cdn.github.com" name="octolytics-script-host" /><meta content="github" name="octolytics-app-id" /><meta content="5A28B1F7:643D:E259626:52C18631" name="octolytics-dimension-request_id" />
<link rel="icon" type="image/x-icon" href="/favicon.ico" />
<meta content="authenticity_token" name="csrf-param" />
<meta content="sbg7VbN/siqAfKCdQsV50CsXL1IrMFx3tynCWnubLN8=" name="csrf-token" />
<link href="https://github.global.ssl.fastly.net/assets/github-3944f96c1c19f752fe766b332fb7716555c8296e.css" media="all" rel="stylesheet" type="text/css" />
<link href="https://github.global.ssl.fastly.net/assets/github2-b64d0ad5fa62a30a166145ae08b8c0a6d2f7dea7.css" media="all" rel="stylesheet" type="text/css" />
<script src="https://github.global.ssl.fastly.net/assets/frameworks-29a3fb0547e33bd8d4530bbad9bae3ef00d83293.js" type="text/javascript"></script>
<script src="https://github.global.ssl.fastly.net/assets/github-3fbe2841590c916eeba07af3fc626dd593d2f5ba.js" type="text/javascript"></script>
<meta http-equiv="x-pjax-version" content="8983adfc0294e4e53e92b27093d9e927">
<link data-pjax-transient rel='permalink' href='/madkiss/openstack-resource-agents/blob/64e633d8802b960d7d30d85b8b6793fb8d851363/ocf/heat-engine'>
<meta property="og:title" content="openstack-resource-agents"/>
<meta property="og:type" content="githubog:gitrepository"/>
<meta property="og:url" content="https://github.com/madkiss/openstack-resource-agents"/>
<meta property="og:image" content="https://github.global.ssl.fastly.net/images/gravatars/gravatar-user-420.png"/>
<meta property="og:site_name" content="GitHub"/>
<meta property="og:description" content="openstack-resource-agents - Pacemaker High Availability resource agents for OpenStack"/>
<meta name="description" content="openstack-resource-agents - Pacemaker High Availability resource agents for OpenStack" />
<meta content="1589554" name="octolytics-dimension-user_id" /><meta content="madkiss" name="octolytics-dimension-user_login" /><meta content="5594232" name="octolytics-dimension-repository_id" /><meta content="madkiss/openstack-resource-agents" name="octolytics-dimension-repository_nwo" /><meta content="true" name="octolytics-dimension-repository_public" /><meta content="false" name="octolytics-dimension-repository_is_fork" /><meta content="5594232" name="octolytics-dimension-repository_network_root_id" /><meta content="madkiss/openstack-resource-agents" name="octolytics-dimension-repository_network_root_nwo" />
<link href="https://github.com/madkiss/openstack-resource-agents/commits/master.atom" rel="alternate" title="Recent Commits to openstack-resource-agents:master" type="application/atom+xml" />
</head>
<body class="logged_out env-production vis-public page-blob">
<div class="wrapper">
<div class="header header-logged-out">
<div class="container clearfix">
<a class="header-logo-wordmark" href="https://github.com/">
<span class="mega-octicon octicon-logo-github"></span>
</a>
<div class="header-actions">
<a class="button primary" href="/join">Sign up</a>
<a class="button signin" href="/login?return_to=%2Fmadkiss%2Fopenstack-resource-agents%2Fblob%2Fmaster%2Focf%2Fheat-engine">Sign in</a>
</div>
<div class="command-bar js-command-bar in-repository">
<ul class="top-nav">
<li class="explore"><a href="/explore">Explore</a></li>
<li class="features"><a href="/features">Features</a></li>
<li class="enterprise"><a href="https://enterprise.github.com/">Enterprise</a></li>
<li class="blog"><a href="/blog">Blog</a></li>
</ul>
<form accept-charset="UTF-8" action="/search" class="command-bar-form" id="top_search_form" method="get">
<input type="text" data-hotkey="/ s" name="q" id="js-command-bar-field" placeholder="Search or type a command" tabindex="1" autocapitalize="off"
data-repo="madkiss/openstack-resource-agents"
data-branch="master"
data-sha="3dc8a0b7e173afbd9c1db3f1a6be2ef6f8e97e30"
>
<input type="hidden" name="nwo" value="madkiss/openstack-resource-agents" />
<div class="select-menu js-menu-container js-select-menu search-context-select-menu">
<span class="minibutton select-menu-button js-menu-target">
<span class="js-select-button">This repository</span>
</span>
<div class="select-menu-modal-holder js-menu-content js-navigation-container">
<div class="select-menu-modal">
<div class="select-menu-item js-navigation-item js-this-repository-navigation-item selected">
<span class="select-menu-item-icon octicon octicon-check"></span>
<input type="radio" class="js-search-this-repository" name="search_target" value="repository" checked="checked" />
<div class="select-menu-item-text js-select-button-text">This repository</div>
</div> <!-- /.select-menu-item -->
<div class="select-menu-item js-navigation-item js-all-repositories-navigation-item">
<span class="select-menu-item-icon octicon octicon-check"></span>
<input type="radio" name="search_target" value="global" />
<div class="select-menu-item-text js-select-button-text">All repositories</div>
</div> <!-- /.select-menu-item -->
</div>
</div>
</div>
<span class="octicon help tooltipped downwards" title="Show command bar help">
<span class="octicon octicon-question"></span>
</span>
<input type="hidden" name="ref" value="cmdform">
</form>
</div>
</div>
</div>
<div class="site" itemscope itemtype="http://schema.org/WebPage">
<div class="pagehead repohead instapaper_ignore readability-menu">
<div class="container">
<ul class="pagehead-actions">
<li>
<a href="/login?return_to=%2Fmadkiss%2Fopenstack-resource-agents"
class="minibutton with-count js-toggler-target star-button tooltipped upwards"
title="You must be signed in to use this feature" rel="nofollow">
<span class="octicon octicon-star"></span>Star
</a>
<a class="social-count js-social-count" href="/madkiss/openstack-resource-agents/stargazers">
25
</a>
</li>
<li>
<a href="/login?return_to=%2Fmadkiss%2Fopenstack-resource-agents"
class="minibutton with-count js-toggler-target fork-button tooltipped upwards"
title="You must be signed in to fork a repository" rel="nofollow">
<span class="octicon octicon-git-branch"></span>Fork
</a>
<a href="/madkiss/openstack-resource-agents/network" class="social-count">
18
</a>
</li>
</ul>
<h1 itemscope itemtype="http://data-vocabulary.org/Breadcrumb" class="entry-title public">
<span class="repo-label"><span>public</span></span>
<span class="mega-octicon octicon-repo"></span>
<span class="author">
<a href="/madkiss" class="url fn" itemprop="url" rel="author"><span itemprop="title">madkiss</span></a>
</span>
<span class="repohead-name-divider">/</span>
<strong><a href="/madkiss/openstack-resource-agents" class="js-current-repository js-repo-home-link">openstack-resource-agents</a></strong>
<span class="page-context-loader">
<img alt="Octocat-spinner-32" height="16" src="https://github.global.ssl.fastly.net/images/spinners/octocat-spinner-32.gif" width="16" />
</span>
</h1>
</div><!-- /.container -->
</div><!-- /.repohead -->
<div class="container">
<div class="repository-with-sidebar repo-container ">
<div class="repository-sidebar">
<div class="sunken-menu vertical-right repo-nav js-repo-nav js-repository-container-pjax js-octicon-loaders">
<div class="sunken-menu-contents">
<ul class="sunken-menu-group">
<li class="tooltipped leftwards" title="Code">
<a href="/madkiss/openstack-resource-agents" aria-label="Code" class="selected js-selected-navigation-item sunken-menu-item" data-gotokey="c" data-pjax="true" data-selected-links="repo_source repo_downloads repo_commits repo_tags repo_branches /madkiss/openstack-resource-agents">
<span class="octicon octicon-code"></span> <span class="full-word">Code</span>
<img alt="Octocat-spinner-32" class="mini-loader" height="16" src="https://github.global.ssl.fastly.net/images/spinners/octocat-spinner-32.gif" width="16" />
</a> </li>
<li class="tooltipped leftwards" title="Issues">
<a href="/madkiss/openstack-resource-agents/issues" aria-label="Issues" class="js-selected-navigation-item sunken-menu-item js-disable-pjax" data-gotokey="i" data-selected-links="repo_issues /madkiss/openstack-resource-agents/issues">
<span class="octicon octicon-issue-opened"></span> <span class="full-word">Issues</span>
<span class='counter'>2</span>
<img alt="Octocat-spinner-32" class="mini-loader" height="16" src="https://github.global.ssl.fastly.net/images/spinners/octocat-spinner-32.gif" width="16" />
</a> </li>
<li class="tooltipped leftwards" title="Pull Requests">
<a href="/madkiss/openstack-resource-agents/pulls" aria-label="Pull Requests" class="js-selected-navigation-item sunken-menu-item js-disable-pjax" data-gotokey="p" data-selected-links="repo_pulls /madkiss/openstack-resource-agents/pulls">
<span class="octicon octicon-git-pull-request"></span> <span class="full-word">Pull Requests</span>
<span class='counter'>2</span>
<img alt="Octocat-spinner-32" class="mini-loader" height="16" src="https://github.global.ssl.fastly.net/images/spinners/octocat-spinner-32.gif" width="16" />
</a> </li>
</ul>
<div class="sunken-menu-separator"></div>
<ul class="sunken-menu-group">
<li class="tooltipped leftwards" title="Pulse">
<a href="/madkiss/openstack-resource-agents/pulse" aria-label="Pulse" class="js-selected-navigation-item sunken-menu-item" data-pjax="true" data-selected-links="pulse /madkiss/openstack-resource-agents/pulse">
<span class="octicon octicon-pulse"></span> <span class="full-word">Pulse</span>
<img alt="Octocat-spinner-32" class="mini-loader" height="16" src="https://github.global.ssl.fastly.net/images/spinners/octocat-spinner-32.gif" width="16" />
</a> </li>
<li class="tooltipped leftwards" title="Graphs">
<a href="/madkiss/openstack-resource-agents/graphs" aria-label="Graphs" class="js-selected-navigation-item sunken-menu-item" data-pjax="true" data-selected-links="repo_graphs repo_contributors /madkiss/openstack-resource-agents/graphs">
<span class="octicon octicon-graph"></span> <span class="full-word">Graphs</span>
<img alt="Octocat-spinner-32" class="mini-loader" height="16" src="https://github.global.ssl.fastly.net/images/spinners/octocat-spinner-32.gif" width="16" />
</a> </li>
<li class="tooltipped leftwards" title="Network">
<a href="/madkiss/openstack-resource-agents/network" aria-label="Network" class="js-selected-navigation-item sunken-menu-item js-disable-pjax" data-selected-links="repo_network /madkiss/openstack-resource-agents/network">
<span class="octicon octicon-git-branch"></span> <span class="full-word">Network</span>
<img alt="Octocat-spinner-32" class="mini-loader" height="16" src="https://github.global.ssl.fastly.net/images/spinners/octocat-spinner-32.gif" width="16" />
</a> </li>
</ul>
</div>
</div>
<div class="only-with-full-nav">
<div class="clone-url open"
data-protocol-type="http"
data-url="/users/set_protocol?protocol_selector=http&amp;protocol_type=clone">
<h3><strong>HTTPS</strong> clone URL</h3>
<div class="clone-url-box">
<input type="text" class="clone js-url-field"
value="https://github.com/madkiss/openstack-resource-agents.git" readonly="readonly">
<span class="js-zeroclipboard url-box-clippy minibutton zeroclipboard-button" data-clipboard-text="https://github.com/madkiss/openstack-resource-agents.git" data-copied-hint="copied!" title="copy to clipboard"><span class="octicon octicon-clippy"></span></span>
</div>
</div>
<div class="clone-url "
data-protocol-type="subversion"
data-url="/users/set_protocol?protocol_selector=subversion&amp;protocol_type=clone">
<h3><strong>Subversion</strong> checkout URL</h3>
<div class="clone-url-box">
<input type="text" class="clone js-url-field"
value="https://github.com/madkiss/openstack-resource-agents" readonly="readonly">
<span class="js-zeroclipboard url-box-clippy minibutton zeroclipboard-button" data-clipboard-text="https://github.com/madkiss/openstack-resource-agents" data-copied-hint="copied!" title="copy to clipboard"><span class="octicon octicon-clippy"></span></span>
</div>
</div>
<p class="clone-options">You can clone with
<a href="#" class="js-clone-selector" data-protocol="http">HTTPS</a>,
or <a href="#" class="js-clone-selector" data-protocol="subversion">Subversion</a>.
<span class="octicon help tooltipped upwards" title="Get help on which URL is right for you.">
<a href="https://help.github.com/articles/which-remote-url-should-i-use">
<span class="octicon octicon-question"></span>
</a>
</span>
</p>
<a href="/madkiss/openstack-resource-agents/archive/master.zip"
class="minibutton sidebar-button"
title="Download this repository as a zip file"
rel="nofollow">
<span class="octicon octicon-cloud-download"></span>
Download ZIP
</a>
</div>
</div><!-- /.repository-sidebar -->
<div id="js-repo-pjax-container" class="repository-content context-loader-container" data-pjax-container>
<!-- blob contrib key: blob_contributors:v21:d260c0882832e08197ef95d63d3983f8 -->
<p title="This is a placeholder element" class="js-history-link-replace hidden"></p>
<a href="/madkiss/openstack-resource-agents/find/master" data-pjax data-hotkey="t" class="js-show-file-finder" style="display:none">Show File Finder</a>
<div class="file-navigation">
<div class="select-menu js-menu-container js-select-menu" >
<span class="minibutton select-menu-button js-menu-target" data-hotkey="w"
data-master-branch="master"
data-ref="master"
role="button" aria-label="Switch branches or tags" tabindex="0">
<span class="octicon octicon-git-branch"></span>
<i>branch:</i>
<span class="js-select-button">master</span>
</span>
<div class="select-menu-modal-holder js-menu-content js-navigation-container" data-pjax>
<div class="select-menu-modal">
<div class="select-menu-header">
<span class="select-menu-title">Switch branches/tags</span>
<span class="octicon octicon-remove-close js-menu-close"></span>
</div> <!-- /.select-menu-header -->
<div class="select-menu-filters">
<div class="select-menu-text-filter">
<input type="text" aria-label="Filter branches/tags" id="context-commitish-filter-field" class="js-filterable-field js-navigation-enable" placeholder="Filter branches/tags">
</div>
<div class="select-menu-tabs">
<ul>
<li class="select-menu-tab">
<a href="#" data-tab-filter="branches" class="js-select-menu-tab">Branches</a>
</li>
<li class="select-menu-tab">
<a href="#" data-tab-filter="tags" class="js-select-menu-tab">Tags</a>
</li>
</ul>
</div><!-- /.select-menu-tabs -->
</div><!-- /.select-menu-filters -->
<div class="select-menu-list select-menu-tab-bucket js-select-menu-tab-bucket" data-tab-filter="branches">
<div data-filterable-for="context-commitish-filter-field" data-filterable-type="substring">
<div class="select-menu-item js-navigation-item selected">
<span class="select-menu-item-icon octicon octicon-check"></span>
<a href="/madkiss/openstack-resource-agents/blob/master/ocf/heat-engine"
data-name="master"
data-skip-pjax="true"
rel="nofollow"
class="js-navigation-open select-menu-item-text js-select-button-text css-truncate-target"
title="master">master</a>
</div> <!-- /.select-menu-item -->
<div class="select-menu-item js-navigation-item ">
<span class="select-menu-item-icon octicon octicon-check"></span>
<a href="/madkiss/openstack-resource-agents/blob/stable-essex/ocf/heat-engine"
data-name="stable-essex"
data-skip-pjax="true"
rel="nofollow"
class="js-navigation-open select-menu-item-text js-select-button-text css-truncate-target"
title="stable-essex">stable-essex</a>
</div> <!-- /.select-menu-item -->
<div class="select-menu-item js-navigation-item ">
<span class="select-menu-item-icon octicon octicon-check"></span>
<a href="/madkiss/openstack-resource-agents/blob/stable-folsom/ocf/heat-engine"
data-name="stable-folsom"
data-skip-pjax="true"
rel="nofollow"
class="js-navigation-open select-menu-item-text js-select-button-text css-truncate-target"
title="stable-folsom">stable-folsom</a>
</div> <!-- /.select-menu-item -->
<div class="select-menu-item js-navigation-item ">
<span class="select-menu-item-icon octicon octicon-check"></span>
<a href="/madkiss/openstack-resource-agents/blob/stable-grizzly/ocf/heat-engine"
data-name="stable-grizzly"
data-skip-pjax="true"
rel="nofollow"
class="js-navigation-open select-menu-item-text js-select-button-text css-truncate-target"
title="stable-grizzly">stable-grizzly</a>
</div> <!-- /.select-menu-item -->
</div>
<div class="select-menu-no-results">Nothing to show</div>
</div> <!-- /.select-menu-list -->
<div class="select-menu-list select-menu-tab-bucket js-select-menu-tab-bucket" data-tab-filter="tags">
<div data-filterable-for="context-commitish-filter-field" data-filterable-type="substring">
</div>
<div class="select-menu-no-results">Nothing to show</div>
</div> <!-- /.select-menu-list -->
</div> <!-- /.select-menu-modal -->
</div> <!-- /.select-menu-modal-holder -->
</div> <!-- /.select-menu -->
<div class="breadcrumb">
<span class='repo-root js-repo-root'><span itemscope="" itemtype="http://data-vocabulary.org/Breadcrumb"><a href="/madkiss/openstack-resource-agents" data-branch="master" data-direction="back" data-pjax="true" itemscope="url"><span itemprop="title">openstack-resource-agents</span></a></span></span><span class="separator"> / </span><span itemscope="" itemtype="http://data-vocabulary.org/Breadcrumb"><a href="/madkiss/openstack-resource-agents/tree/master/ocf" data-branch="master" data-direction="back" data-pjax="true" itemscope="url"><span itemprop="title">ocf</span></a></span><span class="separator"> / </span><strong class="final-path">heat-engine</strong> <span class="js-zeroclipboard minibutton zeroclipboard-button" data-clipboard-text="ocf/heat-engine" data-copied-hint="copied!" title="copy to clipboard"><span class="octicon octicon-clippy"></span></span>
</div>
</div>
<div class="commit file-history-tease">
<img class="main-avatar" height="24" src="https://2.gravatar.com/avatar/b81589743944d6e890b983f258024d10?d=https%3A%2F%2Fidenticons.github.com%2F1f980249fc81be34e97382a378274de2.png&amp;r=x&amp;s=140" width="24" />
<span class="author"><a href="/EmilienM" rel="author">EmilienM</a></span>
<time class="js-relative-date" datetime="2013-12-16T03:03:40-08:00" title="2013-12-16 03:03:40">December 16, 2013</time>
<div class="commit-title">
<a href="/madkiss/openstack-resource-agents/commit/64e633d8802b960d7d30d85b8b6793fb8d851363" class="message" data-pjax="true" title="Add heat-engine service
heat-engine is still SPOF and shoud be managed by Pacemaker / Corosync.
It should be fixed in Icehouse but during this time, this RA could be
use to ensure heat-engine is highly available.
Signed-off-by: Emilien Macchi &lt;emilien.macchi@enovance.com&gt;">Add heat-engine service</a>
</div>
<div class="participation">
<p class="quickstat"><a href="#blob_contributors_box" rel="facebox"><strong>1</strong> contributor</a></p>
</div>
<div id="blob_contributors_box" style="display:none">
<h2 class="facebox-header">Users who have contributed to this file</h2>
<ul class="facebox-user-list">
<li class="facebox-user-list-item">
<img height="24" src="https://2.gravatar.com/avatar/b81589743944d6e890b983f258024d10?d=https%3A%2F%2Fidenticons.github.com%2F1f980249fc81be34e97382a378274de2.png&amp;r=x&amp;s=140" width="24" />
<a href="/EmilienM">EmilienM</a>
</li>
</ul>
</div>
</div>
<div id="files" class="bubble">
<div class="file">
<div class="meta">
<div class="info">
<span class="icon"><b class="octicon octicon-file-text"></b></span>
<span class="mode" title="File Mode">file</span>
<span>382 lines (324 sloc)</span>
<span>15.294 kb</span>
</div>
<div class="actions">
<div class="button-group">
<a class="minibutton disabled tooltipped leftwards" href="#"
title="You must be signed in to make or propose changes">Edit</a>
<a href="/madkiss/openstack-resource-agents/raw/master/ocf/heat-engine" class="button minibutton " id="raw-url">Raw</a>
<a href="/madkiss/openstack-resource-agents/blame/master/ocf/heat-engine" class="button minibutton ">Blame</a>
<a href="/madkiss/openstack-resource-agents/commits/master/ocf/heat-engine" class="button minibutton " rel="nofollow">History</a>
</div><!-- /.button-group -->
<a class="minibutton danger disabled empty-icon tooltipped leftwards" href="#"
title="You must be signed in to make or propose changes">
Delete
</a>
</div><!-- /.actions -->
</div>
<div class="blob-wrapper data type-text js-blob-data">
<table class="file-code file-diff">
<tr class="file-code-line">
<td class="blob-line-nums">
<span id="L1" rel="#L1">1</span>
<span id="L2" rel="#L2">2</span>
<span id="L3" rel="#L3">3</span>
<span id="L4" rel="#L4">4</span>
<span id="L5" rel="#L5">5</span>
<span id="L6" rel="#L6">6</span>
<span id="L7" rel="#L7">7</span>
<span id="L8" rel="#L8">8</span>
<span id="L9" rel="#L9">9</span>
<span id="L10" rel="#L10">10</span>
<span id="L11" rel="#L11">11</span>
<span id="L12" rel="#L12">12</span>
<span id="L13" rel="#L13">13</span>
<span id="L14" rel="#L14">14</span>
<span id="L15" rel="#L15">15</span>
<span id="L16" rel="#L16">16</span>
<span id="L17" rel="#L17">17</span>
<span id="L18" rel="#L18">18</span>
<span id="L19" rel="#L19">19</span>
<span id="L20" rel="#L20">20</span>
<span id="L21" rel="#L21">21</span>
<span id="L22" rel="#L22">22</span>
<span id="L23" rel="#L23">23</span>
<span id="L24" rel="#L24">24</span>
<span id="L25" rel="#L25">25</span>
<span id="L26" rel="#L26">26</span>
<span id="L27" rel="#L27">27</span>
<span id="L28" rel="#L28">28</span>
<span id="L29" rel="#L29">29</span>
<span id="L30" rel="#L30">30</span>
<span id="L31" rel="#L31">31</span>
<span id="L32" rel="#L32">32</span>
<span id="L33" rel="#L33">33</span>
<span id="L34" rel="#L34">34</span>
<span id="L35" rel="#L35">35</span>
<span id="L36" rel="#L36">36</span>
<span id="L37" rel="#L37">37</span>
<span id="L38" rel="#L38">38</span>
<span id="L39" rel="#L39">39</span>
<span id="L40" rel="#L40">40</span>
<span id="L41" rel="#L41">41</span>
<span id="L42" rel="#L42">42</span>
<span id="L43" rel="#L43">43</span>
<span id="L44" rel="#L44">44</span>
<span id="L45" rel="#L45">45</span>
<span id="L46" rel="#L46">46</span>
<span id="L47" rel="#L47">47</span>
<span id="L48" rel="#L48">48</span>
<span id="L49" rel="#L49">49</span>
<span id="L50" rel="#L50">50</span>
<span id="L51" rel="#L51">51</span>
<span id="L52" rel="#L52">52</span>
<span id="L53" rel="#L53">53</span>
<span id="L54" rel="#L54">54</span>
<span id="L55" rel="#L55">55</span>
<span id="L56" rel="#L56">56</span>
<span id="L57" rel="#L57">57</span>
<span id="L58" rel="#L58">58</span>
<span id="L59" rel="#L59">59</span>
<span id="L60" rel="#L60">60</span>
<span id="L61" rel="#L61">61</span>
<span id="L62" rel="#L62">62</span>
<span id="L63" rel="#L63">63</span>
<span id="L64" rel="#L64">64</span>
<span id="L65" rel="#L65">65</span>
<span id="L66" rel="#L66">66</span>
<span id="L67" rel="#L67">67</span>
<span id="L68" rel="#L68">68</span>
<span id="L69" rel="#L69">69</span>
<span id="L70" rel="#L70">70</span>
<span id="L71" rel="#L71">71</span>
<span id="L72" rel="#L72">72</span>
<span id="L73" rel="#L73">73</span>
<span id="L74" rel="#L74">74</span>
<span id="L75" rel="#L75">75</span>
<span id="L76" rel="#L76">76</span>
<span id="L77" rel="#L77">77</span>
<span id="L78" rel="#L78">78</span>
<span id="L79" rel="#L79">79</span>
<span id="L80" rel="#L80">80</span>
<span id="L81" rel="#L81">81</span>
<span id="L82" rel="#L82">82</span>
<span id="L83" rel="#L83">83</span>
<span id="L84" rel="#L84">84</span>
<span id="L85" rel="#L85">85</span>
<span id="L86" rel="#L86">86</span>
<span id="L87" rel="#L87">87</span>
<span id="L88" rel="#L88">88</span>
<span id="L89" rel="#L89">89</span>
<span id="L90" rel="#L90">90</span>
<span id="L91" rel="#L91">91</span>
<span id="L92" rel="#L92">92</span>
<span id="L93" rel="#L93">93</span>
<span id="L94" rel="#L94">94</span>
<span id="L95" rel="#L95">95</span>
<span id="L96" rel="#L96">96</span>
<span id="L97" rel="#L97">97</span>
<span id="L98" rel="#L98">98</span>
<span id="L99" rel="#L99">99</span>
<span id="L100" rel="#L100">100</span>
<span id="L101" rel="#L101">101</span>
<span id="L102" rel="#L102">102</span>
<span id="L103" rel="#L103">103</span>
<span id="L104" rel="#L104">104</span>
<span id="L105" rel="#L105">105</span>
<span id="L106" rel="#L106">106</span>
<span id="L107" rel="#L107">107</span>
<span id="L108" rel="#L108">108</span>
<span id="L109" rel="#L109">109</span>
<span id="L110" rel="#L110">110</span>
<span id="L111" rel="#L111">111</span>
<span id="L112" rel="#L112">112</span>
<span id="L113" rel="#L113">113</span>
<span id="L114" rel="#L114">114</span>
<span id="L115" rel="#L115">115</span>
<span id="L116" rel="#L116">116</span>
<span id="L117" rel="#L117">117</span>
<span id="L118" rel="#L118">118</span>
<span id="L119" rel="#L119">119</span>
<span id="L120" rel="#L120">120</span>
<span id="L121" rel="#L121">121</span>
<span id="L122" rel="#L122">122</span>
<span id="L123" rel="#L123">123</span>
<span id="L124" rel="#L124">124</span>
<span id="L125" rel="#L125">125</span>
<span id="L126" rel="#L126">126</span>
<span id="L127" rel="#L127">127</span>
<span id="L128" rel="#L128">128</span>
<span id="L129" rel="#L129">129</span>
<span id="L130" rel="#L130">130</span>
<span id="L131" rel="#L131">131</span>
<span id="L132" rel="#L132">132</span>
<span id="L133" rel="#L133">133</span>
<span id="L134" rel="#L134">134</span>
<span id="L135" rel="#L135">135</span>
<span id="L136" rel="#L136">136</span>
<span id="L137" rel="#L137">137</span>
<span id="L138" rel="#L138">138</span>
<span id="L139" rel="#L139">139</span>
<span id="L140" rel="#L140">140</span>
<span id="L141" rel="#L141">141</span>
<span id="L142" rel="#L142">142</span>
<span id="L143" rel="#L143">143</span>
<span id="L144" rel="#L144">144</span>
<span id="L145" rel="#L145">145</span>
<span id="L146" rel="#L146">146</span>
<span id="L147" rel="#L147">147</span>
<span id="L148" rel="#L148">148</span>
<span id="L149" rel="#L149">149</span>
<span id="L150" rel="#L150">150</span>
<span id="L151" rel="#L151">151</span>
<span id="L152" rel="#L152">152</span>
<span id="L153" rel="#L153">153</span>
<span id="L154" rel="#L154">154</span>
<span id="L155" rel="#L155">155</span>
<span id="L156" rel="#L156">156</span>
<span id="L157" rel="#L157">157</span>
<span id="L158" rel="#L158">158</span>
<span id="L159" rel="#L159">159</span>
<span id="L160" rel="#L160">160</span>
<span id="L161" rel="#L161">161</span>
<span id="L162" rel="#L162">162</span>
<span id="L163" rel="#L163">163</span>
<span id="L164" rel="#L164">164</span>
<span id="L165" rel="#L165">165</span>
<span id="L166" rel="#L166">166</span>
<span id="L167" rel="#L167">167</span>
<span id="L168" rel="#L168">168</span>
<span id="L169" rel="#L169">169</span>
<span id="L170" rel="#L170">170</span>
<span id="L171" rel="#L171">171</span>
<span id="L172" rel="#L172">172</span>
<span id="L173" rel="#L173">173</span>
<span id="L174" rel="#L174">174</span>
<span id="L175" rel="#L175">175</span>
<span id="L176" rel="#L176">176</span>
<span id="L177" rel="#L177">177</span>
<span id="L178" rel="#L178">178</span>
<span id="L179" rel="#L179">179</span>
<span id="L180" rel="#L180">180</span>
<span id="L181" rel="#L181">181</span>
<span id="L182" rel="#L182">182</span>
<span id="L183" rel="#L183">183</span>
<span id="L184" rel="#L184">184</span>
<span id="L185" rel="#L185">185</span>
<span id="L186" rel="#L186">186</span>
<span id="L187" rel="#L187">187</span>
<span id="L188" rel="#L188">188</span>
<span id="L189" rel="#L189">189</span>
<span id="L190" rel="#L190">190</span>
<span id="L191" rel="#L191">191</span>
<span id="L192" rel="#L192">192</span>
<span id="L193" rel="#L193">193</span>
<span id="L194" rel="#L194">194</span>
<span id="L195" rel="#L195">195</span>
<span id="L196" rel="#L196">196</span>
<span id="L197" rel="#L197">197</span>
<span id="L198" rel="#L198">198</span>
<span id="L199" rel="#L199">199</span>
<span id="L200" rel="#L200">200</span>
<span id="L201" rel="#L201">201</span>
<span id="L202" rel="#L202">202</span>
<span id="L203" rel="#L203">203</span>
<span id="L204" rel="#L204">204</span>
<span id="L205" rel="#L205">205</span>
<span id="L206" rel="#L206">206</span>
<span id="L207" rel="#L207">207</span>
<span id="L208" rel="#L208">208</span>
<span id="L209" rel="#L209">209</span>
<span id="L210" rel="#L210">210</span>
<span id="L211" rel="#L211">211</span>
<span id="L212" rel="#L212">212</span>
<span id="L213" rel="#L213">213</span>
<span id="L214" rel="#L214">214</span>
<span id="L215" rel="#L215">215</span>
<span id="L216" rel="#L216">216</span>
<span id="L217" rel="#L217">217</span>
<span id="L218" rel="#L218">218</span>
<span id="L219" rel="#L219">219</span>
<span id="L220" rel="#L220">220</span>
<span id="L221" rel="#L221">221</span>
<span id="L222" rel="#L222">222</span>
<span id="L223" rel="#L223">223</span>
<span id="L224" rel="#L224">224</span>
<span id="L225" rel="#L225">225</span>
<span id="L226" rel="#L226">226</span>
<span id="L227" rel="#L227">227</span>
<span id="L228" rel="#L228">228</span>
<span id="L229" rel="#L229">229</span>
<span id="L230" rel="#L230">230</span>
<span id="L231" rel="#L231">231</span>
<span id="L232" rel="#L232">232</span>
<span id="L233" rel="#L233">233</span>
<span id="L234" rel="#L234">234</span>
<span id="L235" rel="#L235">235</span>
<span id="L236" rel="#L236">236</span>
<span id="L237" rel="#L237">237</span>
<span id="L238" rel="#L238">238</span>
<span id="L239" rel="#L239">239</span>
<span id="L240" rel="#L240">240</span>
<span id="L241" rel="#L241">241</span>
<span id="L242" rel="#L242">242</span>
<span id="L243" rel="#L243">243</span>
<span id="L244" rel="#L244">244</span>
<span id="L245" rel="#L245">245</span>
<span id="L246" rel="#L246">246</span>
<span id="L247" rel="#L247">247</span>
<span id="L248" rel="#L248">248</span>
<span id="L249" rel="#L249">249</span>
<span id="L250" rel="#L250">250</span>
<span id="L251" rel="#L251">251</span>
<span id="L252" rel="#L252">252</span>
<span id="L253" rel="#L253">253</span>
<span id="L254" rel="#L254">254</span>
<span id="L255" rel="#L255">255</span>
<span id="L256" rel="#L256">256</span>
<span id="L257" rel="#L257">257</span>
<span id="L258" rel="#L258">258</span>
<span id="L259" rel="#L259">259</span>
<span id="L260" rel="#L260">260</span>
<span id="L261" rel="#L261">261</span>
<span id="L262" rel="#L262">262</span>
<span id="L263" rel="#L263">263</span>
<span id="L264" rel="#L264">264</span>
<span id="L265" rel="#L265">265</span>
<span id="L266" rel="#L266">266</span>
<span id="L267" rel="#L267">267</span>
<span id="L268" rel="#L268">268</span>
<span id="L269" rel="#L269">269</span>
<span id="L270" rel="#L270">270</span>
<span id="L271" rel="#L271">271</span>
<span id="L272" rel="#L272">272</span>
<span id="L273" rel="#L273">273</span>
<span id="L274" rel="#L274">274</span>
<span id="L275" rel="#L275">275</span>
<span id="L276" rel="#L276">276</span>
<span id="L277" rel="#L277">277</span>
<span id="L278" rel="#L278">278</span>
<span id="L279" rel="#L279">279</span>
<span id="L280" rel="#L280">280</span>
<span id="L281" rel="#L281">281</span>
<span id="L282" rel="#L282">282</span>
<span id="L283" rel="#L283">283</span>
<span id="L284" rel="#L284">284</span>
<span id="L285" rel="#L285">285</span>
<span id="L286" rel="#L286">286</span>
<span id="L287" rel="#L287">287</span>
<span id="L288" rel="#L288">288</span>
<span id="L289" rel="#L289">289</span>
<span id="L290" rel="#L290">290</span>
<span id="L291" rel="#L291">291</span>
<span id="L292" rel="#L292">292</span>
<span id="L293" rel="#L293">293</span>
<span id="L294" rel="#L294">294</span>
<span id="L295" rel="#L295">295</span>
<span id="L296" rel="#L296">296</span>
<span id="L297" rel="#L297">297</span>
<span id="L298" rel="#L298">298</span>
<span id="L299" rel="#L299">299</span>
<span id="L300" rel="#L300">300</span>
<span id="L301" rel="#L301">301</span>
<span id="L302" rel="#L302">302</span>
<span id="L303" rel="#L303">303</span>
<span id="L304" rel="#L304">304</span>
<span id="L305" rel="#L305">305</span>
<span id="L306" rel="#L306">306</span>
<span id="L307" rel="#L307">307</span>
<span id="L308" rel="#L308">308</span>
<span id="L309" rel="#L309">309</span>
<span id="L310" rel="#L310">310</span>
<span id="L311" rel="#L311">311</span>
<span id="L312" rel="#L312">312</span>
<span id="L313" rel="#L313">313</span>
<span id="L314" rel="#L314">314</span>
<span id="L315" rel="#L315">315</span>
<span id="L316" rel="#L316">316</span>
<span id="L317" rel="#L317">317</span>
<span id="L318" rel="#L318">318</span>
<span id="L319" rel="#L319">319</span>
<span id="L320" rel="#L320">320</span>
<span id="L321" rel="#L321">321</span>
<span id="L322" rel="#L322">322</span>
<span id="L323" rel="#L323">323</span>
<span id="L324" rel="#L324">324</span>
<span id="L325" rel="#L325">325</span>
<span id="L326" rel="#L326">326</span>
<span id="L327" rel="#L327">327</span>
<span id="L328" rel="#L328">328</span>
<span id="L329" rel="#L329">329</span>
<span id="L330" rel="#L330">330</span>
<span id="L331" rel="#L331">331</span>
<span id="L332" rel="#L332">332</span>
<span id="L333" rel="#L333">333</span>
<span id="L334" rel="#L334">334</span>
<span id="L335" rel="#L335">335</span>
<span id="L336" rel="#L336">336</span>
<span id="L337" rel="#L337">337</span>
<span id="L338" rel="#L338">338</span>
<span id="L339" rel="#L339">339</span>
<span id="L340" rel="#L340">340</span>
<span id="L341" rel="#L341">341</span>
<span id="L342" rel="#L342">342</span>
<span id="L343" rel="#L343">343</span>
<span id="L344" rel="#L344">344</span>
<span id="L345" rel="#L345">345</span>
<span id="L346" rel="#L346">346</span>
<span id="L347" rel="#L347">347</span>
<span id="L348" rel="#L348">348</span>
<span id="L349" rel="#L349">349</span>
<span id="L350" rel="#L350">350</span>
<span id="L351" rel="#L351">351</span>
<span id="L352" rel="#L352">352</span>
<span id="L353" rel="#L353">353</span>
<span id="L354" rel="#L354">354</span>
<span id="L355" rel="#L355">355</span>
<span id="L356" rel="#L356">356</span>
<span id="L357" rel="#L357">357</span>
<span id="L358" rel="#L358">358</span>
<span id="L359" rel="#L359">359</span>
<span id="L360" rel="#L360">360</span>
<span id="L361" rel="#L361">361</span>
<span id="L362" rel="#L362">362</span>
<span id="L363" rel="#L363">363</span>
<span id="L364" rel="#L364">364</span>
<span id="L365" rel="#L365">365</span>
<span id="L366" rel="#L366">366</span>
<span id="L367" rel="#L367">367</span>
<span id="L368" rel="#L368">368</span>
<span id="L369" rel="#L369">369</span>
<span id="L370" rel="#L370">370</span>
<span id="L371" rel="#L371">371</span>
<span id="L372" rel="#L372">372</span>
<span id="L373" rel="#L373">373</span>
<span id="L374" rel="#L374">374</span>
<span id="L375" rel="#L375">375</span>
<span id="L376" rel="#L376">376</span>
<span id="L377" rel="#L377">377</span>
<span id="L378" rel="#L378">378</span>
<span id="L379" rel="#L379">379</span>
<span id="L380" rel="#L380">380</span>
<span id="L381" rel="#L381">381</span>
</td>
<td class="blob-line-code">
<div class="code-body highlight"><pre><div class='line' id='LC1'>#!/bin/sh</div><div class='line' id='LC2'>#</div><div class='line' id='LC3'>#</div><div class='line' id='LC4'># OpenStack Orchestration Engine Service (heat-engine)</div><div class='line' id='LC5'>#</div><div class='line' id='LC6'># Description: Manages an OpenStack Orchestration Engine Service (heat-engine) process as an HA resource</div><div class='line' id='LC7'>#</div><div class='line' id='LC8'># Authors: Emilien Macchi</div><div class='line' id='LC9'>#</div><div class='line' id='LC10'># Support: openstack@lists.launchpad.net</div><div class='line' id='LC11'># License: Apache Software License (ASL) 2.0</div><div class='line' id='LC12'>#</div><div class='line' id='LC13'>#</div><div class='line' id='LC14'># See usage() function below for more details ...</div><div class='line' id='LC15'>#</div><div class='line' id='LC16'># OCF instance parameters:</div><div class='line' id='LC17'># OCF_RESKEY_binary</div><div class='line' id='LC18'># OCF_RESKEY_config</div><div class='line' id='LC19'># OCF_RESKEY_user</div><div class='line' id='LC20'># OCF_RESKEY_pid</div><div class='line' id='LC21'># OCF_RESKEY_monitor_binary</div><div class='line' id='LC22'># OCF_RESKEY_database_server_port</div><div class='line' id='LC23'># OCF_RESKEY_amqp_server_port</div><div class='line' id='LC24'># OCF_RESKEY_zeromq</div><div class='line' id='LC25'># OCF_RESKEY_additional_parameters</div><div class='line' id='LC26'>#######################################################################</div><div class='line' id='LC27'># Initialization:</div><div class='line' id='LC28'><br/></div><div class='line' id='LC29'>: ${OCF_FUNCTIONS_DIR=${OCF_ROOT}/lib/heartbeat}</div><div class='line' id='LC30'>. ${OCF_FUNCTIONS_DIR}/ocf-shellfuncs</div><div class='line' id='LC31'><br/></div><div class='line' id='LC32'>#######################################################################</div><div class='line' id='LC33'><br/></div><div class='line' id='LC34'># Fill in some defaults if no values are specified</div><div class='line' id='LC35'><br/></div><div class='line' id='LC36'>OCF_RESKEY_binary_default=&quot;heat-engine&quot;</div><div class='line' id='LC37'>OCF_RESKEY_config_default=&quot;/etc/heat/heat.conf&quot;</div><div class='line' id='LC38'>OCF_RESKEY_user_default=&quot;heat&quot;</div><div class='line' id='LC39'>OCF_RESKEY_pid_default=&quot;$HA_RSCTMP/$OCF_RESOURCE_INSTANCE.pid&quot;</div><div class='line' id='LC40'>OCF_RESKEY_database_server_port_default=&quot;3306&quot;</div><div class='line' id='LC41'>OCF_RESKEY_amqp_server_port_default=&quot;5672&quot;</div><div class='line' id='LC42'>OCF_RESKEY_zeromq_default=&quot;false&quot;</div><div class='line' id='LC43'><br/></div><div class='line' id='LC44'>: ${OCF_RESKEY_binary=${OCF_RESKEY_binary_default}}</div><div class='line' id='LC45'>: ${OCF_RESKEY_config=${OCF_RESKEY_config_default}}</div><div class='line' id='LC46'>: ${OCF_RESKEY_user=${OCF_RESKEY_user_default}}</div><div class='line' id='LC47'>: ${OCF_RESKEY_pid=${OCF_RESKEY_pid_default}}</div><div class='line' id='LC48'>: ${OCF_RESKEY_database_server_port=${OCF_RESKEY_database_server_port_default}}</div><div class='line' id='LC49'>: ${OCF_RESKEY_amqp_server_port=${OCF_RESKEY_amqp_server_port_default}}</div><div class='line' id='LC50'>: ${OCF_RESKEY_zeromq=${OCF_RESKEY_zeromq_default}}</div><div class='line' id='LC51'><br/></div><div class='line' id='LC52'>#######################################################################</div><div class='line' id='LC53'><br/></div><div class='line' id='LC54'>usage() {</div><div class='line' id='LC55'>&nbsp;&nbsp;&nbsp;&nbsp;cat &lt;&lt;UEND</div><div class='line' id='LC56'>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;usage: $0 (start|stop|validate-all|meta-data|status|monitor)</div><div class='line' id='LC57'><br/></div><div class='line' id='LC58'>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;$0 manages an OpenStack Orchestration Engine Service (heat-engine) process as an HA resource </div><div class='line' id='LC59'><br/></div><div class='line' id='LC60'>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;The &#39;start&#39; operation starts the heat-engine service.</div><div class='line' id='LC61'>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;The &#39;stop&#39; operation stops the heat-engine service.</div><div class='line' id='LC62'>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;The &#39;validate-all&#39; operation reports whether the parameters are valid</div><div class='line' id='LC63'>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;The &#39;meta-data&#39; operation reports this RA&#39;s meta-data information</div><div class='line' id='LC64'>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;The &#39;status&#39; operation reports whether the heat-engine service is running</div><div class='line' id='LC65'>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;The &#39;monitor&#39; operation reports whether the heat-engine service seems to be working</div><div class='line' id='LC66'><br/></div><div class='line' id='LC67'>UEND</div><div class='line' id='LC68'>}</div><div class='line' id='LC69'><br/></div><div class='line' id='LC70'>meta_data() {</div><div class='line' id='LC71'>&nbsp;&nbsp;&nbsp;&nbsp;cat &lt;&lt;END</div><div class='line' id='LC72'>&lt;?xml version=&quot;1.0&quot;?&gt;</div><div class='line' id='LC73'>&lt;!DOCTYPE resource-agent SYSTEM &quot;ra-api-1.dtd&quot;&gt;</div><div class='line' id='LC74'>&lt;resource-agent name=&quot;heat-engine&quot;&gt;</div><div class='line' id='LC75'>&lt;version&gt;1.0&lt;/version&gt;</div><div class='line' id='LC76'><br/></div><div class='line' id='LC77'>&lt;longdesc lang=&quot;en&quot;&gt;</div><div class='line' id='LC78'>Resource agent for the OpenStack Orchestration Engine Service (heat-engine)</div><div class='line' id='LC79'>May manage a heat-engine instance or a clone set that </div><div class='line' id='LC80'>creates a distributed heat-engine cluster.</div><div class='line' id='LC81'>&lt;/longdesc&gt;</div><div class='line' id='LC82'>&lt;shortdesc lang=&quot;en&quot;&gt;Manages the OpenStack Orchestration Engine Service (heat-engine)&lt;/shortdesc&gt;</div><div class='line' id='LC83'>&lt;parameters&gt;</div><div class='line' id='LC84'><br/></div><div class='line' id='LC85'>&lt;parameter name=&quot;binary&quot; unique=&quot;0&quot; required=&quot;0&quot;&gt;</div><div class='line' id='LC86'>&lt;longdesc lang=&quot;en&quot;&gt;</div><div class='line' id='LC87'>Location of the OpenStack Orchestration Engine server binary (heat-engine)</div><div class='line' id='LC88'>&lt;/longdesc&gt;</div><div class='line' id='LC89'>&lt;shortdesc lang=&quot;en&quot;&gt;OpenStack Orchestration Engine server binary (heat-engine)&lt;/shortdesc&gt;</div><div class='line' id='LC90'>&lt;content type=&quot;string&quot; default=&quot;${OCF_RESKEY_binary_default}&quot; /&gt;</div><div class='line' id='LC91'>&lt;/parameter&gt;</div><div class='line' id='LC92'><br/></div><div class='line' id='LC93'>&lt;parameter name=&quot;config&quot; unique=&quot;0&quot; required=&quot;0&quot;&gt;</div><div class='line' id='LC94'>&lt;longdesc lang=&quot;en&quot;&gt;</div><div class='line' id='LC95'>Location of the OpenStack Orchestration Engine Service (heat-engine) configuration file</div><div class='line' id='LC96'>&lt;/longdesc&gt;</div><div class='line' id='LC97'>&lt;shortdesc lang=&quot;en&quot;&gt;OpenStack Orchestration Engine (heat-engine) config file&lt;/shortdesc&gt;</div><div class='line' id='LC98'>&lt;content type=&quot;string&quot; default=&quot;${OCF_RESKEY_config_default}&quot; /&gt;</div><div class='line' id='LC99'>&lt;/parameter&gt;</div><div class='line' id='LC100'><br/></div><div class='line' id='LC101'>&lt;parameter name=&quot;user&quot; unique=&quot;0&quot; required=&quot;0&quot;&gt;</div><div class='line' id='LC102'>&lt;longdesc lang=&quot;en&quot;&gt;</div><div class='line' id='LC103'>User running OpenStack Orchestration Engine Service (heat-engine)</div><div class='line' id='LC104'>&lt;/longdesc&gt;</div><div class='line' id='LC105'>&lt;shortdesc lang=&quot;en&quot;&gt;OpenStack Orchestration Engine Service (heat-engine) user&lt;/shortdesc&gt;</div><div class='line' id='LC106'>&lt;content type=&quot;string&quot; default=&quot;${OCF_RESKEY_user_default}&quot; /&gt;</div><div class='line' id='LC107'>&lt;/parameter&gt;</div><div class='line' id='LC108'><br/></div><div class='line' id='LC109'>&lt;parameter name=&quot;pid&quot; unique=&quot;0&quot; required=&quot;0&quot;&gt;</div><div class='line' id='LC110'>&lt;longdesc lang=&quot;en&quot;&gt;</div><div class='line' id='LC111'>The pid file to use for this OpenStack Orchestration Engine Service (heat-engine) instance</div><div class='line' id='LC112'>&lt;/longdesc&gt;</div><div class='line' id='LC113'>&lt;shortdesc lang=&quot;en&quot;&gt;OpenStack Orchestration Engine Service (heat-engine) pid file&lt;/shortdesc&gt;</div><div class='line' id='LC114'>&lt;content type=&quot;string&quot; default=&quot;${OCF_RESKEY_pid_default}&quot; /&gt;</div><div class='line' id='LC115'>&lt;/parameter&gt;</div><div class='line' id='LC116'><br/></div><div class='line' id='LC117'>&lt;parameter name=&quot;database_server_port&quot; unique=&quot;0&quot; required=&quot;0&quot;&gt; </div><div class='line' id='LC118'>&lt;longdesc lang=&quot;en&quot;&gt; </div><div class='line' id='LC119'>The listening port number of the database server. Use for monitoring purposes </div><div class='line' id='LC120'>&lt;/longdesc&gt; </div><div class='line' id='LC121'>&lt;shortdesc lang=&quot;en&quot;&gt;Database listening port&lt;/shortdesc&gt; </div><div class='line' id='LC122'>&lt;content type=&quot;integer&quot; default=&quot;${OCF_RESKEY_database_server_port_default}&quot; /&gt; </div><div class='line' id='LC123'>&lt;/parameter&gt; </div><div class='line' id='LC124'><br/></div><div class='line' id='LC125'>&lt;parameter name=&quot;amqp_server_port&quot; unique=&quot;0&quot; required=&quot;0&quot;&gt; </div><div class='line' id='LC126'>&lt;longdesc lang=&quot;en&quot;&gt; </div><div class='line' id='LC127'>The listening port number of the AMQP server. Use for monitoring purposes </div><div class='line' id='LC128'>&lt;/longdesc&gt; </div><div class='line' id='LC129'>&lt;shortdesc lang=&quot;en&quot;&gt;AMQP listening port&lt;/shortdesc&gt; </div><div class='line' id='LC130'>&lt;content type=&quot;integer&quot; default=&quot;${OCF_RESKEY_amqp_server_port_default}&quot; /&gt; </div><div class='line' id='LC131'>&lt;/parameter&gt; </div><div class='line' id='LC132'><br/></div><div class='line' id='LC133'>&lt;parameter name=&quot;zeromq&quot; unique=&quot;0&quot; required=&quot;0&quot;&gt; </div><div class='line' id='LC134'>&lt;longdesc lang=&quot;en&quot;&gt; </div><div class='line' id='LC135'>If zeromq is used, this will disable the connection test to the AMQP server. Use for monitoring purposes </div><div class='line' id='LC136'>&lt;/longdesc&gt; </div><div class='line' id='LC137'>&lt;shortdesc lang=&quot;en&quot;&gt;Zero-MQ usage&lt;/shortdesc&gt; </div><div class='line' id='LC138'>&lt;content type=&quot;boolean&quot; default=&quot;${OCF_RESKEY_zeromq_default}&quot; /&gt; </div><div class='line' id='LC139'>&lt;/parameter&gt; </div><div class='line' id='LC140'><br/></div><div class='line' id='LC141'>&lt;parameter name=&quot;additional_parameters&quot; unique=&quot;0&quot; required=&quot;0&quot;&gt;</div><div class='line' id='LC142'>&lt;longdesc lang=&quot;en&quot;&gt;</div><div class='line' id='LC143'>Additional parameters to pass on to the OpenStack Orchestration Engine Service (heat-engine)</div><div class='line' id='LC144'>&lt;/longdesc&gt;</div><div class='line' id='LC145'>&lt;shortdesc lang=&quot;en&quot;&gt;Additional parameters for heat-engine&lt;/shortdesc&gt;</div><div class='line' id='LC146'>&lt;content type=&quot;string&quot; /&gt;</div><div class='line' id='LC147'>&lt;/parameter&gt;</div><div class='line' id='LC148'><br/></div><div class='line' id='LC149'>&lt;/parameters&gt;</div><div class='line' id='LC150'><br/></div><div class='line' id='LC151'>&lt;actions&gt;</div><div class='line' id='LC152'>&lt;action name=&quot;start&quot; timeout=&quot;20&quot; /&gt;</div><div class='line' id='LC153'>&lt;action name=&quot;stop&quot; timeout=&quot;20&quot; /&gt;</div><div class='line' id='LC154'>&lt;action name=&quot;status&quot; timeout=&quot;20&quot; /&gt;</div><div class='line' id='LC155'>&lt;action name=&quot;monitor&quot; timeout=&quot;30&quot; interval=&quot;20&quot; /&gt;</div><div class='line' id='LC156'>&lt;action name=&quot;validate-all&quot; timeout=&quot;5&quot; /&gt;</div><div class='line' id='LC157'>&lt;action name=&quot;meta-data&quot; timeout=&quot;5&quot; /&gt;</div><div class='line' id='LC158'>&lt;/actions&gt;</div><div class='line' id='LC159'>&lt;/resource-agent&gt;</div><div class='line' id='LC160'>END</div><div class='line' id='LC161'>}</div><div class='line' id='LC162'><br/></div><div class='line' id='LC163'>#######################################################################</div><div class='line' id='LC164'># Functions invoked by resource manager actions</div><div class='line' id='LC165'><br/></div><div class='line' id='LC166'>heat_engine_check_port() {</div><div class='line' id='LC167'># This function has been taken from the squid RA and improved a bit</div><div class='line' id='LC168'># The length of the integer must be 4</div><div class='line' id='LC169'># Examples of valid port: &quot;1080&quot;, &quot;0080&quot;</div><div class='line' id='LC170'># Examples of invalid port: &quot;1080bad&quot;, &quot;0&quot;, &quot;0000&quot;, &quot;&quot;</div><div class='line' id='LC171'><br/></div><div class='line' id='LC172'>&nbsp;&nbsp;&nbsp;&nbsp;local int</div><div class='line' id='LC173'>&nbsp;&nbsp;&nbsp;&nbsp;local cnt</div><div class='line' id='LC174'>&nbsp;&nbsp;&nbsp;&nbsp;</div><div class='line' id='LC175'>&nbsp;&nbsp;&nbsp;&nbsp;int=&quot;$1&quot;</div><div class='line' id='LC176'>&nbsp;&nbsp;&nbsp;&nbsp;cnt=${#int}</div><div class='line' id='LC177'>&nbsp;&nbsp;&nbsp;&nbsp;echo $int |egrep -qx &#39;[0-9]+(:[0-9]+)?(,[0-9]+(:[0-9]+)?)*&#39;</div><div class='line' id='LC178'><br/></div><div class='line' id='LC179'>&nbsp;&nbsp;&nbsp;&nbsp;if [ $? -ne 0 ] || [ $cnt -ne 4 ]; then</div><div class='line' id='LC180'>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;ocf_log err &quot;Invalid port number: $1&quot;</div><div class='line' id='LC181'>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;exit $OCF_ERR_CONFIGURED</div><div class='line' id='LC182'>&nbsp;&nbsp;&nbsp;&nbsp;fi</div><div class='line' id='LC183'>}</div><div class='line' id='LC184'><br/></div><div class='line' id='LC185'>heat_engine_validate() {</div><div class='line' id='LC186'>&nbsp;&nbsp;&nbsp;&nbsp;local rc</div><div class='line' id='LC187'><br/></div><div class='line' id='LC188'>&nbsp;&nbsp;&nbsp;&nbsp;check_binary $OCF_RESKEY_binary</div><div class='line' id='LC189'>&nbsp;&nbsp;&nbsp;&nbsp;check_binary netstat</div><div class='line' id='LC190'>&nbsp;&nbsp;&nbsp;&nbsp;heat_engine_check_port $OCF_RESKEY_database_server_port</div><div class='line' id='LC191'>&nbsp;&nbsp;&nbsp;&nbsp;heat_engine_check_port $OCF_RESKEY_amqp_server_port</div><div class='line' id='LC192'>&nbsp;&nbsp;&nbsp;&nbsp;</div><div class='line' id='LC193'>&nbsp;&nbsp;&nbsp;&nbsp;# A config file on shared storage that is not available</div><div class='line' id='LC194'>&nbsp;&nbsp;&nbsp;&nbsp;# during probes is OK.</div><div class='line' id='LC195'>&nbsp;&nbsp;&nbsp;&nbsp;if [ ! -f $OCF_RESKEY_config ]; then</div><div class='line' id='LC196'>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;if ! ocf_is_probe; then</div><div class='line' id='LC197'>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;ocf_log err &quot;Config $OCF_RESKEY_config doesn&#39;t exist&quot;</div><div class='line' id='LC198'>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;return $OCF_ERR_INSTALLED</div><div class='line' id='LC199'>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;fi</div><div class='line' id='LC200'>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;ocf_log_warn &quot;Config $OCF_RESKEY_config not available during a probe&quot;</div><div class='line' id='LC201'>&nbsp;&nbsp;&nbsp;&nbsp;fi</div><div class='line' id='LC202'><br/></div><div class='line' id='LC203'>&nbsp;&nbsp;&nbsp;&nbsp;getent passwd $OCF_RESKEY_user &gt;/dev/null 2&gt;&amp;1</div><div class='line' id='LC204'>&nbsp;&nbsp;&nbsp;&nbsp;rc=$?</div><div class='line' id='LC205'>&nbsp;&nbsp;&nbsp;&nbsp;if [ $rc -ne 0 ]; then</div><div class='line' id='LC206'>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;ocf_log err &quot;User $OCF_RESKEY_user doesn&#39;t exist&quot;</div><div class='line' id='LC207'>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;return $OCF_ERR_INSTALLED</div><div class='line' id='LC208'>&nbsp;&nbsp;&nbsp;&nbsp;fi</div><div class='line' id='LC209'><br/></div><div class='line' id='LC210'>&nbsp;&nbsp;&nbsp;&nbsp;true</div><div class='line' id='LC211'>}</div><div class='line' id='LC212'><br/></div><div class='line' id='LC213'>heat_engine_status() {</div><div class='line' id='LC214'>&nbsp;&nbsp;&nbsp;&nbsp;local pid</div><div class='line' id='LC215'>&nbsp;&nbsp;&nbsp;&nbsp;local rc</div><div class='line' id='LC216'><br/></div><div class='line' id='LC217'>&nbsp;&nbsp;&nbsp;&nbsp;if [ ! -f $OCF_RESKEY_pid ]; then</div><div class='line' id='LC218'>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;ocf_log info &quot;OpenStack Orchestration Engine (heat-engine) is not running&quot;</div><div class='line' id='LC219'>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;return $OCF_NOT_RUNNING</div><div class='line' id='LC220'>&nbsp;&nbsp;&nbsp;&nbsp;else</div><div class='line' id='LC221'>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;pid=`cat $OCF_RESKEY_pid`</div><div class='line' id='LC222'>&nbsp;&nbsp;&nbsp;&nbsp;fi</div><div class='line' id='LC223'><br/></div><div class='line' id='LC224'>&nbsp;&nbsp;&nbsp;&nbsp;ocf_run -warn kill -s 0 $pid</div><div class='line' id='LC225'>&nbsp;&nbsp;&nbsp;&nbsp;rc=$?</div><div class='line' id='LC226'>&nbsp;&nbsp;&nbsp;&nbsp;if [ $rc -eq 0 ]; then</div><div class='line' id='LC227'>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;return $OCF_SUCCESS</div><div class='line' id='LC228'>&nbsp;&nbsp;&nbsp;&nbsp;else</div><div class='line' id='LC229'>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;ocf_log info &quot;Old PID file found, but OpenStack Orchestration Engine (heat-engine) is not running&quot;</div><div class='line' id='LC230'>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;return $OCF_NOT_RUNNING</div><div class='line' id='LC231'>&nbsp;&nbsp;&nbsp;&nbsp;fi</div><div class='line' id='LC232'>}</div><div class='line' id='LC233'><br/></div><div class='line' id='LC234'>heat_engine_monitor() {</div><div class='line' id='LC235'>&nbsp;&nbsp;&nbsp;&nbsp;local rc</div><div class='line' id='LC236'>&nbsp;&nbsp;&nbsp;&nbsp;local pid</div><div class='line' id='LC237'>&nbsp;&nbsp;&nbsp;&nbsp;local rc_db</div><div class='line' id='LC238'>&nbsp;&nbsp;&nbsp;&nbsp;local rc_amqp</div><div class='line' id='LC239'>&nbsp;&nbsp;&nbsp;&nbsp;local engine_db_check</div><div class='line' id='LC240'>&nbsp;&nbsp;&nbsp;&nbsp;local engine_amqp_check</div><div class='line' id='LC241'><br/></div><div class='line' id='LC242'>&nbsp;&nbsp;&nbsp;&nbsp;heat_engine_status</div><div class='line' id='LC243'>&nbsp;&nbsp;&nbsp;&nbsp;rc=$?</div><div class='line' id='LC244'><br/></div><div class='line' id='LC245'>&nbsp;&nbsp;&nbsp;&nbsp;# If status returned anything but success, return that immediately</div><div class='line' id='LC246'>&nbsp;&nbsp;&nbsp;&nbsp;if [ $rc -ne $OCF_SUCCESS ]; then</div><div class='line' id='LC247'>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;return $rc</div><div class='line' id='LC248'>&nbsp;&nbsp;&nbsp;&nbsp;fi</div><div class='line' id='LC249'><br/></div><div class='line' id='LC250'>&nbsp;&nbsp;&nbsp;&nbsp;# Check the connections according to the PID.</div><div class='line' id='LC251'>&nbsp;&nbsp;&nbsp;&nbsp;# We are sure to hit the heat-engine process and not other heat process with the same connection behavior (for example heat-api)</div><div class='line' id='LC252'>&nbsp;&nbsp;&nbsp;&nbsp;if ocf_is_true &quot;$OCF_RESKEY_zeromq&quot;; then</div><div class='line' id='LC253'>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; pid=`cat $OCF_RESKEY_pid`</div><div class='line' id='LC254'>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; engine_db_check=`netstat -punt | grep -s &quot;$OCF_RESKEY_database_server_port&quot; | grep -s &quot;$pid&quot; | grep -qs &quot;ESTABLISHED&quot;`</div><div class='line' id='LC255'>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; rc_db=$?</div><div class='line' id='LC256'>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; if [ $rc_db -ne 0 ]; then</div><div class='line' id='LC257'>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; ocf_log err &quot;heat-engine is not connected to the database server: $rc_db&quot;</div><div class='line' id='LC258'>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; return $OCF_NOT_RUNNING</div><div class='line' id='LC259'>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; fi</div><div class='line' id='LC260'>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;else</div><div class='line' id='LC261'>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;pid=`cat $OCF_RESKEY_pid`</div><div class='line' id='LC262'>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;engine_db_check=`netstat -punt | grep -s &quot;$OCF_RESKEY_database_server_port&quot; | grep -s &quot;$pid&quot; | grep -qs &quot;ESTABLISHED&quot;`</div><div class='line' id='LC263'>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;rc_db=$?</div><div class='line' id='LC264'>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;engine_amqp_check=`netstat -punt | grep -s &quot;$OCF_RESKEY_amqp_server_port&quot; | grep -s &quot;$pid&quot; | grep -qs &quot;ESTABLISHED&quot;`</div><div class='line' id='LC265'>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;rc_amqp=$?</div><div class='line' id='LC266'>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; if [ $rc_amqp -ne 0 ] || [ $rc_db -ne 0 ]; then</div><div class='line' id='LC267'>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; ocf_log err &quot;Heat Engine is not connected to the AMQP server and/or the database server: AMQP connection test returned $rc_amqp and database connection test returned $rc_db&quot;</div><div class='line' id='LC268'>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; return $OCF_NOT_RUNNING</div><div class='line' id='LC269'>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; fi</div><div class='line' id='LC270'>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;fi</div><div class='line' id='LC271'><br/></div><div class='line' id='LC272'>&nbsp;&nbsp;&nbsp;&nbsp;ocf_log debug &quot;OpenStack Orchestration Engine (heat-engine) monitor succeeded&quot;</div><div class='line' id='LC273'>&nbsp;&nbsp;&nbsp;&nbsp;return $OCF_SUCCESS</div><div class='line' id='LC274'>}</div><div class='line' id='LC275'><br/></div><div class='line' id='LC276'>heat_engine_start() {</div><div class='line' id='LC277'>&nbsp;&nbsp;&nbsp;&nbsp;local rc</div><div class='line' id='LC278'><br/></div><div class='line' id='LC279'>&nbsp;&nbsp;&nbsp;&nbsp;heat_engine_status</div><div class='line' id='LC280'>&nbsp;&nbsp;&nbsp;&nbsp;rc=$?</div><div class='line' id='LC281'>&nbsp;&nbsp;&nbsp;&nbsp;if [ $rc -eq $OCF_SUCCESS ]; then</div><div class='line' id='LC282'>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;ocf_log info &quot;OpenStack Orchestration Engine (heat-engine) already running&quot;</div><div class='line' id='LC283'>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;return $OCF_SUCCESS</div><div class='line' id='LC284'>&nbsp;&nbsp;&nbsp;&nbsp;fi</div><div class='line' id='LC285'><br/></div><div class='line' id='LC286'>&nbsp;&nbsp;&nbsp;&nbsp;# run the actual heat-engine daemon. Don&#39;t use ocf_run as we&#39;re sending the tool&#39;s output</div><div class='line' id='LC287'>&nbsp;&nbsp;&nbsp;&nbsp;# straight to /dev/null anyway and using ocf_run would break stdout-redirection here.</div><div class='line' id='LC288'>&nbsp;&nbsp;&nbsp;&nbsp;su ${OCF_RESKEY_user} -s /bin/sh -c &quot;${OCF_RESKEY_binary} --config-file=$OCF_RESKEY_config \</div><div class='line' id='LC289'>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;$OCF_RESKEY_additional_parameters&quot;&#39; &gt;&gt; /dev/null 2&gt;&amp;1 &amp; echo $!&#39; &gt; $OCF_RESKEY_pid</div><div class='line' id='LC290'><br/></div><div class='line' id='LC291'>&nbsp;&nbsp;&nbsp;&nbsp;# Spin waiting for the server to come up.</div><div class='line' id='LC292'>&nbsp;&nbsp;&nbsp;&nbsp;while true; do</div><div class='line' id='LC293'>&nbsp;&nbsp;&nbsp;&nbsp;heat_engine_monitor</div><div class='line' id='LC294'>&nbsp;&nbsp;&nbsp;&nbsp;rc=$?</div><div class='line' id='LC295'>&nbsp;&nbsp;&nbsp;&nbsp;[ $rc -eq $OCF_SUCCESS ] &amp;&amp; break</div><div class='line' id='LC296'>&nbsp;&nbsp;&nbsp;&nbsp;if [ $rc -ne $OCF_NOT_RUNNING ]; then</div><div class='line' id='LC297'>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;ocf_log err &quot;OpenStack Orchestration Engine (heat-engine) start failed&quot;</div><div class='line' id='LC298'>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;exit $OCF_ERR_GENERIC</div><div class='line' id='LC299'>&nbsp;&nbsp;&nbsp;&nbsp;fi</div><div class='line' id='LC300'>&nbsp;&nbsp;&nbsp;&nbsp;sleep 1</div><div class='line' id='LC301'>&nbsp;&nbsp;&nbsp;&nbsp;done</div><div class='line' id='LC302'><br/></div><div class='line' id='LC303'>&nbsp;&nbsp;&nbsp;&nbsp;ocf_log info &quot;OpenStack Orchestration Engine (heat-engine) started&quot;</div><div class='line' id='LC304'>&nbsp;&nbsp;&nbsp;&nbsp;return $OCF_SUCCESS</div><div class='line' id='LC305'>}</div><div class='line' id='LC306'><br/></div><div class='line' id='LC307'>heat_engine_stop() {</div><div class='line' id='LC308'>&nbsp;&nbsp;&nbsp;&nbsp;local rc</div><div class='line' id='LC309'>&nbsp;&nbsp;&nbsp;&nbsp;local pid</div><div class='line' id='LC310'><br/></div><div class='line' id='LC311'>&nbsp;&nbsp;&nbsp;&nbsp;heat_engine_status</div><div class='line' id='LC312'>&nbsp;&nbsp;&nbsp;&nbsp;rc=$?</div><div class='line' id='LC313'>&nbsp;&nbsp;&nbsp;&nbsp;if [ $rc -eq $OCF_NOT_RUNNING ]; then</div><div class='line' id='LC314'>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;ocf_log info &quot;OpenStack Orchestration Engine (heat-engine) already stopped&quot;</div><div class='line' id='LC315'>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;return $OCF_SUCCESS</div><div class='line' id='LC316'>&nbsp;&nbsp;&nbsp;&nbsp;fi</div><div class='line' id='LC317'><br/></div><div class='line' id='LC318'>&nbsp;&nbsp;&nbsp;&nbsp;# Try SIGTERM</div><div class='line' id='LC319'>&nbsp;&nbsp;&nbsp;&nbsp;pid=`cat $OCF_RESKEY_pid`</div><div class='line' id='LC320'>&nbsp;&nbsp;&nbsp;&nbsp;ocf_run kill -s TERM $pid</div><div class='line' id='LC321'>&nbsp;&nbsp;&nbsp;&nbsp;rc=$?</div><div class='line' id='LC322'>&nbsp;&nbsp;&nbsp;&nbsp;if [ $rc -ne 0 ]; then</div><div class='line' id='LC323'>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;ocf_log err &quot;OpenStack Orchestration Engine (heat-engine) couldn&#39;t be stopped&quot;</div><div class='line' id='LC324'>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;exit $OCF_ERR_GENERIC</div><div class='line' id='LC325'>&nbsp;&nbsp;&nbsp;&nbsp;fi</div><div class='line' id='LC326'><br/></div><div class='line' id='LC327'>&nbsp;&nbsp;&nbsp;&nbsp;# stop waiting</div><div class='line' id='LC328'>&nbsp;&nbsp;&nbsp;&nbsp;shutdown_timeout=15</div><div class='line' id='LC329'>&nbsp;&nbsp;&nbsp;&nbsp;if [ -n &quot;$OCF_RESKEY_CRM_meta_timeout&quot; ]; then</div><div class='line' id='LC330'>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;shutdown_timeout=$((($OCF_RESKEY_CRM_meta_timeout/1000)-5))</div><div class='line' id='LC331'>&nbsp;&nbsp;&nbsp;&nbsp;fi</div><div class='line' id='LC332'>&nbsp;&nbsp;&nbsp;&nbsp;count=0</div><div class='line' id='LC333'>&nbsp;&nbsp;&nbsp;&nbsp;while [ $count -lt $shutdown_timeout ]; do</div><div class='line' id='LC334'>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;heat_engine_status</div><div class='line' id='LC335'>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;rc=$?</div><div class='line' id='LC336'>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;if [ $rc -eq $OCF_NOT_RUNNING ]; then</div><div class='line' id='LC337'>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;break</div><div class='line' id='LC338'>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;fi</div><div class='line' id='LC339'>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;count=`expr $count + 1`</div><div class='line' id='LC340'>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;sleep 1</div><div class='line' id='LC341'>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;ocf_log debug &quot;OpenStack Orchestration Engine (heat-engine) still hasn&#39;t stopped yet. Waiting ...&quot;</div><div class='line' id='LC342'>&nbsp;&nbsp;&nbsp;&nbsp;done</div><div class='line' id='LC343'><br/></div><div class='line' id='LC344'>&nbsp;&nbsp;&nbsp;&nbsp;heat_engine_status</div><div class='line' id='LC345'>&nbsp;&nbsp;&nbsp;&nbsp;rc=$?</div><div class='line' id='LC346'>&nbsp;&nbsp;&nbsp;&nbsp;if [ $rc -ne $OCF_NOT_RUNNING ]; then</div><div class='line' id='LC347'>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;# SIGTERM didn&#39;t help either, try SIGKILL</div><div class='line' id='LC348'>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;ocf_log info &quot;OpenStack Orchestration Engine (heat-engine) failed to stop after ${shutdown_timeout}s \</div><div class='line' id='LC349'>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;using SIGTERM. Trying SIGKILL ...&quot;</div><div class='line' id='LC350'>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;ocf_run kill -s KILL $pid</div><div class='line' id='LC351'>&nbsp;&nbsp;&nbsp;&nbsp;fi</div><div class='line' id='LC352'><br/></div><div class='line' id='LC353'>&nbsp;&nbsp;&nbsp;&nbsp;ocf_log info &quot;OpenStack Orchestration Engine (heat-engine) stopped&quot;</div><div class='line' id='LC354'><br/></div><div class='line' id='LC355'>&nbsp;&nbsp;&nbsp;&nbsp;rm -f $OCF_RESKEY_pid</div><div class='line' id='LC356'><br/></div><div class='line' id='LC357'>&nbsp;&nbsp;&nbsp;&nbsp;return $OCF_SUCCESS</div><div class='line' id='LC358'>}</div><div class='line' id='LC359'><br/></div><div class='line' id='LC360'>#######################################################################</div><div class='line' id='LC361'><br/></div><div class='line' id='LC362'>case &quot;$1&quot; in</div><div class='line' id='LC363'>&nbsp;&nbsp;meta-data) meta_data</div><div class='line' id='LC364'>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;exit $OCF_SUCCESS;;</div><div class='line' id='LC365'>&nbsp;&nbsp;usage|help) usage</div><div class='line' id='LC366'>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;exit $OCF_SUCCESS;;</div><div class='line' id='LC367'>esac</div><div class='line' id='LC368'><br/></div><div class='line' id='LC369'># Anything except meta-data and help must pass validation</div><div class='line' id='LC370'>heat_engine_validate || exit $?</div><div class='line' id='LC371'><br/></div><div class='line' id='LC372'># What kind of method was invoked?</div><div class='line' id='LC373'>case &quot;$1&quot; in</div><div class='line' id='LC374'>&nbsp;&nbsp;start) heat_engine_start;;</div><div class='line' id='LC375'>&nbsp;&nbsp;stop) heat_engine_stop;;</div><div class='line' id='LC376'>&nbsp;&nbsp;status) heat_engine_status;;</div><div class='line' id='LC377'>&nbsp;&nbsp;monitor) heat_engine_monitor;;</div><div class='line' id='LC378'>&nbsp;&nbsp;validate-all) ;;</div><div class='line' id='LC379'>&nbsp;&nbsp;*) usage</div><div class='line' id='LC380'>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;exit $OCF_ERR_UNIMPLEMENTED;;</div><div class='line' id='LC381'>esac</div></pre></div>
</td>
</tr>
</table>
</div>
</div>
</div>
<a href="#jump-to-line" rel="facebox[.linejump]" data-hotkey="l" class="js-jump-to-line" style="display:none">Jump to Line</a>
<div id="jump-to-line" style="display:none">
<form accept-charset="UTF-8" class="js-jump-to-line-form">
<input class="linejump-input js-jump-to-line-field" type="text" placeholder="Jump to line&hellip;" autofocus>
<button type="submit" class="button">Go</button>
</form>
</div>
</div>
</div><!-- /.repo-container -->
<div class="modal-backdrop"></div>
</div><!-- /.container -->
</div><!-- /.site -->
</div><!-- /.wrapper -->
<div class="container">
<div class="site-footer">
<ul class="site-footer-links right">
<li><a href="https://status.github.com/">Status</a></li>
<li><a href="http://developer.github.com">API</a></li>
<li><a href="http://training.github.com">Training</a></li>
<li><a href="http://shop.github.com">Shop</a></li>
<li><a href="/blog">Blog</a></li>
<li><a href="/about">About</a></li>
</ul>
<a href="/">
<span class="mega-octicon octicon-mark-github"></span>
</a>
<ul class="site-footer-links">
<li>&copy; 2013 <span title="0.02763s from github-fe130-cp1-prd.iad.github.net">GitHub</span>, Inc.</li>
<li><a href="/site/terms">Terms</a></li>
<li><a href="/site/privacy">Privacy</a></li>
<li><a href="/security">Security</a></li>
<li><a href="/contact">Contact</a></li>
</ul>
</div><!-- /.site-footer -->
</div><!-- /.container -->
<div class="fullscreen-overlay js-fullscreen-overlay" id="fullscreen_overlay">
<div class="fullscreen-container js-fullscreen-container">
<div class="textarea-wrap">
<textarea name="fullscreen-contents" id="fullscreen-contents" class="js-fullscreen-contents" placeholder="" data-suggester="fullscreen_suggester"></textarea>
<div class="suggester-container">
<div class="suggester fullscreen-suggester js-navigation-container" id="fullscreen_suggester"
data-url="/madkiss/openstack-resource-agents/suggestions/commit">
</div>
</div>
</div>
</div>
<div class="fullscreen-sidebar">
<a href="#" class="exit-fullscreen js-exit-fullscreen tooltipped leftwards" title="Exit Zen Mode">
<span class="mega-octicon octicon-screen-normal"></span>
</a>
<a href="#" class="theme-switcher js-theme-switcher tooltipped leftwards"
title="Switch themes">
<span class="octicon octicon-color-mode"></span>
</a>
</div>
</div>
<div id="ajax-error-message" class="flash flash-error">
<span class="octicon octicon-alert"></span>
<a href="#" class="octicon octicon-remove-close close ajax-error-dismiss"></a>
Something went wrong with that request. Please try again.
</div>
</body>
</html>