blob: 825497c99a606bf034a1fd178b46048b54fbc405 [file] [log] [blame]
<!DOCTYPE HTML>
<!-- NewPage -->
<html lang="en">
<head>
<!-- Generated by javadoc (11.0.18) on Wed Mar 01 02:01:42 GMT 2023 -->
<title>SchedulerUtils (Heron Java API)</title>
<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
<meta name="dc.created" content="2023-03-01">
<link rel="stylesheet" type="text/css" href="../../../../../stylesheet.css" title="Style">
<link rel="stylesheet" type="text/css" href="../../../../../jquery/jquery-ui.min.css" title="Style">
<link rel="stylesheet" type="text/css" href="../../../../../jquery-ui.overrides.css" title="Style">
<script type="text/javascript" src="../../../../../script.js"></script>
<script type="text/javascript" src="../../../../../jquery/jszip/dist/jszip.min.js"></script>
<script type="text/javascript" src="../../../../../jquery/jszip-utils/dist/jszip-utils.min.js"></script>
<!--[if IE]>
<script type="text/javascript" src="../../../../../jquery/jszip-utils/dist/jszip-utils-ie.min.js"></script>
<![endif]-->
<script type="text/javascript" src="../../../../../jquery/jquery-3.6.0.min.js"></script>
<script type="text/javascript" src="../../../../../jquery/jquery-ui.min.js"></script>
</head>
<body>
<script type="text/javascript"><!--
try {
if (location.href.indexOf('is-external=true') == -1) {
parent.document.title="SchedulerUtils (Heron Java API)";
}
}
catch(err) {
}
//-->
var data = {"i0":9,"i1":9,"i2":9,"i3":9,"i4":9,"i5":9,"i6":9,"i7":9,"i8":9,"i9":9,"i10":9,"i11":9,"i12":9,"i13":9,"i14":9,"i15":9,"i16":9,"i17":9};
var tabs = {65535:["t0","All Methods"],1:["t1","Static Methods"],8:["t4","Concrete Methods"]};
var altColor = "altColor";
var rowColor = "rowColor";
var tableTab = "tableTab";
var activeTableTab = "activeTableTab";
var pathtoroot = "../../../../../";
var useModuleDirectories = true;
loadScripts(document, 'script');</script>
<noscript>
<div>JavaScript is disabled on your browser.</div>
</noscript>
<header role="banner">
<nav role="navigation">
<div class="fixedNav">
<!-- ========= START OF TOP NAVBAR ======= -->
<div class="topNav"><a id="navbar.top">
<!-- -->
</a>
<div class="skipNav"><a href="#skip.navbar.top" title="Skip navigation links">Skip navigation links</a></div>
<a id="navbar.top.firstrow">
<!-- -->
</a>
<ul class="navList" title="Navigation">
<li><a href="../../../../../index.html">Overview</a></li>
<li><a href="package-summary.html">Package</a></li>
<li class="navBarCell1Rev">Class</li>
<li><a href="package-tree.html">Tree</a></li>
<li><a href="../../../../../deprecated-list.html">Deprecated</a></li>
<li><a href="../../../../../index-all.html">Index</a></li>
<li><a href="../../../../../help-doc.html">Help</a></li>
</ul>
</div>
<div class="subNav">
<ul class="navList" id="allclasses_navbar_top">
<li><a href="../../../../../allclasses.html">All&nbsp;Classes</a></li>
</ul>
<ul class="navListSearch">
<li><label for="search">SEARCH:</label>
<input type="text" id="search" value="search" disabled="disabled">
<input type="reset" id="reset" value="reset" disabled="disabled">
</li>
</ul>
<div>
<script type="text/javascript"><!--
allClassesLink = document.getElementById("allclasses_navbar_top");
if(window==top) {
allClassesLink.style.display = "block";
}
else {
allClassesLink.style.display = "none";
}
//-->
</script>
<noscript>
<div>JavaScript is disabled on your browser.</div>
</noscript>
</div>
<div>
<ul class="subNavList">
<li>Summary:&nbsp;</li>
<li><a href="#nested.class.summary">Nested</a>&nbsp;|&nbsp;</li>
<li><a href="#field.summary">Field</a>&nbsp;|&nbsp;</li>
<li>Constr&nbsp;|&nbsp;</li>
<li><a href="#method.summary">Method</a></li>
</ul>
<ul class="subNavList">
<li>Detail:&nbsp;</li>
<li><a href="#field.detail">Field</a>&nbsp;|&nbsp;</li>
<li>Constr&nbsp;|&nbsp;</li>
<li><a href="#method.detail">Method</a></li>
</ul>
</div>
<a id="skip.navbar.top">
<!-- -->
</a></div>
<!-- ========= END OF TOP NAVBAR ========= -->
</div>
<div class="navPadding">&nbsp;</div>
<script type="text/javascript"><!--
$('.navPadding').css('padding-top', $('.fixedNav').css("height"));
//-->
</script>
</nav>
</header>
<!-- ======== START OF CLASS DATA ======== -->
<main role="main">
<div class="header">
<div class="subTitle"><span class="packageLabelInType">Package</span>&nbsp;<a href="package-summary.html">org.apache.heron.scheduler.utils</a></div>
<h2 title="Class SchedulerUtils" class="title">Class SchedulerUtils</h2>
</div>
<div class="contentContainer">
<ul class="inheritance">
<li>java.lang.Object</li>
<li>
<ul class="inheritance">
<li>org.apache.heron.scheduler.utils.SchedulerUtils</li>
</ul>
</li>
</ul>
<div class="description">
<ul class="blockList">
<li class="blockList">
<hr>
<pre>public final class <span class="typeNameLabel">SchedulerUtils</span>
extends java.lang.Object</pre>
</li>
</ul>
</div>
<div class="summary">
<ul class="blockList">
<li class="blockList">
<!-- ======== NESTED CLASS SUMMARY ======== -->
<section>
<ul class="blockList">
<li class="blockList"><a id="nested.class.summary">
<!-- -->
</a>
<h3>Nested Class Summary</h3>
<table class="memberSummary">
<caption><span>Nested Classes</span><span class="tabEnd">&nbsp;</span></caption>
<tr>
<th class="colFirst" scope="col">Modifier and Type</th>
<th class="colSecond" scope="col">Class</th>
<th class="colLast" scope="col">Description</th>
</tr>
<tr class="altColor">
<td class="colFirst"><code>static class&nbsp;</code></td>
<th class="colSecond" scope="row"><code><span class="memberNameLink"><a href="SchedulerUtils.ExecutorPort.html" title="enum in org.apache.heron.scheduler.utils">SchedulerUtils.ExecutorPort</a></span></code></th>
<td class="colLast">
<div class="block">Enum that defines the type of ports that an heron executor needs</div>
</td>
</tr>
</table>
</li>
</ul>
</section>
<!-- =========== FIELD SUMMARY =========== -->
<section>
<ul class="blockList">
<li class="blockList"><a id="field.summary">
<!-- -->
</a>
<h3>Field Summary</h3>
<table class="memberSummary">
<caption><span>Fields</span><span class="tabEnd">&nbsp;</span></caption>
<tr>
<th class="colFirst" scope="col">Modifier and Type</th>
<th class="colSecond" scope="col">Field</th>
<th class="colLast" scope="col">Description</th>
</tr>
<tr class="altColor">
<td class="colFirst"><code>static int</code></td>
<th class="colSecond" scope="row"><code><span class="memberNameLink"><a href="#PORTS_REQUIRED_FOR_SCHEDULER">PORTS_REQUIRED_FOR_SCHEDULER</a></span></code></th>
<td class="colLast">&nbsp;</td>
</tr>
<tr class="rowColor">
<td class="colFirst"><code>static java.lang.String</code></td>
<th class="colSecond" scope="row"><code><span class="memberNameLink"><a href="#SCHEDULER_COMMAND_LINE_PROPERTIES_OVERRIDE_OPTION">SCHEDULER_COMMAND_LINE_PROPERTIES_OVERRIDE_OPTION</a></span></code></th>
<td class="colLast">&nbsp;</td>
</tr>
</table>
</li>
</ul>
</section>
<!-- ========== METHOD SUMMARY =========== -->
<section>
<ul class="blockList">
<li class="blockList"><a id="method.summary">
<!-- -->
</a>
<h3>Method Summary</h3>
<table class="memberSummary">
<caption><span id="t0" class="activeTableTab"><span>All Methods</span><span class="tabEnd">&nbsp;</span></span><span id="t1" class="tableTab"><span><a href="javascript:show(1);">Static Methods</a></span><span class="tabEnd">&nbsp;</span></span><span id="t4" class="tableTab"><span><a href="javascript:show(8);">Concrete Methods</a></span><span class="tabEnd">&nbsp;</span></span></caption>
<tr>
<th class="colFirst" scope="col">Modifier and Type</th>
<th class="colSecond" scope="col">Method</th>
<th class="colLast" scope="col">Description</th>
</tr>
<tr id="i0" class="altColor">
<td class="colFirst"><code>static void</code></td>
<th class="colSecond" scope="row"><code><span class="memberNameLink"><a href="#addExecutorContainerArgs(java.util.List,java.util.Map,java.lang.String)">addExecutorContainerArgs</a></span>&#8203;(java.util.List&lt;java.lang.String&gt;&nbsp;args,
java.util.Map&lt;<a href="SchedulerUtils.ExecutorPort.html" title="enum in org.apache.heron.scheduler.utils">SchedulerUtils.ExecutorPort</a>,&#8203;java.lang.String&gt;&nbsp;ports,
java.lang.String&nbsp;containerIndex)</code></th>
<td class="colLast">
<div class="block">Util method to parse port map and container id and translate them into arguments to be used
by executor</div>
</td>
</tr>
<tr id="i1" class="rowColor">
<td class="colFirst"><code>static void</code></td>
<th class="colSecond" scope="row"><code><span class="memberNameLink"><a href="#addExecutorTopologyArgs(java.util.List,org.apache.heron.spi.common.Config,org.apache.heron.spi.common.Config)">addExecutorTopologyArgs</a></span>&#8203;(java.util.List&lt;java.lang.String&gt;&nbsp;args,
<a href="../../spi/common/Config.html" title="class in org.apache.heron.spi.common">Config</a>&nbsp;config,
<a href="../../spi/common/Config.html" title="class in org.apache.heron.spi.common">Config</a>&nbsp;runtime)</code></th>
<td class="colLast">
<div class="block">Util method to parse configs and translate them into topology configs to be used by executor</div>
</td>
</tr>
<tr id="i2" class="altColor">
<td class="colFirst"><code>static <a href="../../proto/scheduler/Scheduler.SchedulerResponse.html" title="class in org.apache.heron.proto.scheduler">Scheduler.SchedulerResponse</a></code></td>
<th class="colSecond" scope="row"><code><span class="memberNameLink"><a href="#constructSchedulerResponse(boolean)">constructSchedulerResponse</a></span>&#8203;(boolean&nbsp;isOK)</code></th>
<td class="colLast">
<div class="block">construct heron scheduler response basing on the given result</div>
</td>
</tr>
<tr id="i3" class="rowColor">
<td class="colFirst"><code>static java.lang.String</code></td>
<th class="colSecond" scope="row"><code><span class="memberNameLink"><a href="#createCommandArg(org.apache.heron.scheduler.ExecutorFlag,java.lang.String)">createCommandArg</a></span>&#8203;(<a href="../ExecutorFlag.html" title="enum in org.apache.heron.scheduler">ExecutorFlag</a>&nbsp;flag,
java.lang.String&nbsp;value)</code></th>
<td class="colLast">&nbsp;</td>
</tr>
<tr id="i4" class="altColor">
<td class="colFirst"><code>static boolean</code></td>
<th class="colSecond" scope="row"><code><span class="memberNameLink"><a href="#createOrCleanDirectory(java.lang.String)">createOrCleanDirectory</a></span>&#8203;(java.lang.String&nbsp;directory)</code></th>
<td class="colLast">
<div class="block">Create the directory if it does not exist otherwise clean the directory.</div>
</td>
</tr>
<tr id="i5" class="rowColor">
<td class="colFirst"><code>static boolean</code></td>
<th class="colSecond" scope="row"><code><span class="memberNameLink"><a href="#curlAndExtractPackage(java.lang.String,java.lang.String,java.lang.String,boolean,boolean)">curlAndExtractPackage</a></span>&#8203;(java.lang.String&nbsp;workingDirectory,
java.lang.String&nbsp;packageURI,
java.lang.String&nbsp;packageDestination,
boolean&nbsp;isDeletePackage,
boolean&nbsp;isVerbose)</code></th>
<td class="colLast">
<div class="block">Curl a package, extract it to working directory</div>
</td>
</tr>
<tr id="i6" class="altColor">
<td class="colFirst"><code>static java.lang.String</code></td>
<th class="colSecond" scope="row"><code><span class="memberNameLink"><a href="#decodeJavaOpts(java.lang.String)">decodeJavaOpts</a></span>&#8203;(java.lang.String&nbsp;encodedJavaOpts)</code></th>
<td class="colLast">
<div class="block">Decode the JVM options
<br> 1.</div>
</td>
</tr>
<tr id="i7" class="rowColor">
<td class="colFirst"><code>static java.lang.String</code></td>
<th class="colSecond" scope="row"><code><span class="memberNameLink"><a href="#encodeJavaOpts(java.lang.String)">encodeJavaOpts</a></span>&#8203;(java.lang.String&nbsp;javaOpts)</code></th>
<td class="colLast">
<div class="block">Encode the JVM options
<br> 1.</div>
</td>
</tr>
<tr id="i8" class="altColor">
<td class="colFirst"><code>static java.lang.String[]</code></td>
<th class="colSecond" scope="row"><code><span class="memberNameLink"><a href="#executorCommandArgs(org.apache.heron.spi.common.Config,org.apache.heron.spi.common.Config,java.util.Map,java.lang.String)">executorCommandArgs</a></span>&#8203;(<a href="../../spi/common/Config.html" title="class in org.apache.heron.spi.common">Config</a>&nbsp;config,
<a href="../../spi/common/Config.html" title="class in org.apache.heron.spi.common">Config</a>&nbsp;runtime,
java.util.Map&lt;<a href="SchedulerUtils.ExecutorPort.html" title="enum in org.apache.heron.scheduler.utils">SchedulerUtils.ExecutorPort</a>,&#8203;java.lang.String&gt;&nbsp;ports,
java.lang.String&nbsp;containerIndex)</code></th>
<td class="colLast">
<div class="block">Util method to get the arguments to the heron executor.</div>
</td>
</tr>
<tr id="i9" class="rowColor">
<td class="colFirst"><code>static boolean</code></td>
<th class="colSecond" scope="row"><code><span class="memberNameLink"><a href="#extractPackage(java.lang.String,java.lang.String,java.lang.String,boolean,boolean)">extractPackage</a></span>&#8203;(java.lang.String&nbsp;workingDirectory,
java.lang.String&nbsp;packageURI,
java.lang.String&nbsp;packageDestination,
boolean&nbsp;deletePackage,
boolean&nbsp;verbose)</code></th>
<td class="colLast">&nbsp;</td>
</tr>
<tr id="i10" class="altColor">
<td class="colFirst"><code>static java.lang.String[]</code></td>
<th class="colSecond" scope="row"><code><span class="memberNameLink"><a href="#getExecutorCommand(org.apache.heron.spi.common.Config,org.apache.heron.spi.common.Config,int,java.util.Map)">getExecutorCommand</a></span>&#8203;(<a href="../../spi/common/Config.html" title="class in org.apache.heron.spi.common">Config</a>&nbsp;config,
<a href="../../spi/common/Config.html" title="class in org.apache.heron.spi.common">Config</a>&nbsp;runtime,
int&nbsp;shardId,
java.util.Map&lt;<a href="SchedulerUtils.ExecutorPort.html" title="enum in org.apache.heron.scheduler.utils">SchedulerUtils.ExecutorPort</a>,&#8203;java.lang.String&gt;&nbsp;ports)</code></th>
<td class="colLast">
<div class="block">Utils method to construct the command to start heron-executor</div>
</td>
</tr>
<tr id="i11" class="rowColor">
<td class="colFirst"><code>static java.lang.String[]</code></td>
<th class="colSecond" scope="row"><code><span class="memberNameLink"><a href="#getExecutorCommand(org.apache.heron.spi.common.Config,org.apache.heron.spi.common.Config,java.lang.String,java.util.Map)">getExecutorCommand</a></span>&#8203;(<a href="../../spi/common/Config.html" title="class in org.apache.heron.spi.common">Config</a>&nbsp;config,
<a href="../../spi/common/Config.html" title="class in org.apache.heron.spi.common">Config</a>&nbsp;runtime,
java.lang.String&nbsp;shardId,
java.util.Map&lt;<a href="SchedulerUtils.ExecutorPort.html" title="enum in org.apache.heron.scheduler.utils">SchedulerUtils.ExecutorPort</a>,&#8203;java.lang.String&gt;&nbsp;ports)</code></th>
<td class="colLast">
<div class="block">Utils method to construct the command to start heron-executor</div>
</td>
</tr>
<tr id="i12" class="altColor">
<td class="colFirst"><code>static void</code></td>
<th class="colSecond" scope="row"><code><span class="memberNameLink"><a href="#persistUpdatedPackingPlan(java.lang.String,org.apache.heron.spi.packing.PackingPlan,org.apache.heron.spi.statemgr.SchedulerStateManagerAdaptor)">persistUpdatedPackingPlan</a></span>&#8203;(java.lang.String&nbsp;topologyName,
<a href="../../spi/packing/PackingPlan.html" title="class in org.apache.heron.spi.packing">PackingPlan</a>&nbsp;updatedPackingPlan,
<a href="../../spi/statemgr/SchedulerStateManagerAdaptor.html" title="class in org.apache.heron.spi.statemgr">SchedulerStateManagerAdaptor</a>&nbsp;stateManager)</code></th>
<td class="colLast">
<div class="block">Replaces persisted packing plan in state manager.</div>
</td>
</tr>
<tr id="i13" class="rowColor">
<td class="colFirst"><code>static java.lang.String[]</code></td>
<th class="colSecond" scope="row"><code><span class="memberNameLink"><a href="#schedulerCommand(org.apache.heron.spi.common.Config,org.apache.heron.spi.common.Config,java.util.List)">schedulerCommand</a></span>&#8203;(<a href="../../spi/common/Config.html" title="class in org.apache.heron.spi.common">Config</a>&nbsp;config,
<a href="../../spi/common/Config.html" title="class in org.apache.heron.spi.common">Config</a>&nbsp;runtime,
java.util.List&lt;java.lang.Integer&gt;&nbsp;freePorts)</code></th>
<td class="colLast">
<div class="block">Utils method to construct the command to start heron-scheduler</div>
</td>
</tr>
<tr id="i14" class="altColor">
<td class="colFirst"><code>static java.lang.String[]</code></td>
<th class="colSecond" scope="row"><code><span class="memberNameLink"><a href="#schedulerCommandArgs(org.apache.heron.spi.common.Config,org.apache.heron.spi.common.Config,java.util.List)">schedulerCommandArgs</a></span>&#8203;(<a href="../../spi/common/Config.html" title="class in org.apache.heron.spi.common">Config</a>&nbsp;config,
<a href="../../spi/common/Config.html" title="class in org.apache.heron.spi.common">Config</a>&nbsp;runtime,
java.util.List&lt;java.lang.Integer&gt;&nbsp;freePorts)</code></th>
<td class="colLast">
<div class="block">Util method to get the arguments to the heron scheduler.</div>
</td>
</tr>
<tr id="i15" class="rowColor">
<td class="colFirst"><code>static boolean</code></td>
<th class="colSecond" scope="row"><code><span class="memberNameLink"><a href="#setLibSchedulerLocation(org.apache.heron.spi.common.Config,org.apache.heron.spi.scheduler.IScheduler,boolean)">setLibSchedulerLocation</a></span>&#8203;(<a href="../../spi/common/Config.html" title="class in org.apache.heron.spi.common">Config</a>&nbsp;runtime,
<a href="../../spi/scheduler/IScheduler.html" title="interface in org.apache.heron.spi.scheduler">IScheduler</a>&nbsp;scheduler,
boolean&nbsp;isService)</code></th>
<td class="colLast">
<div class="block">Set the location of scheduler for other processes to discover,
when invoke IScheduler as a library on client side</div>
</td>
</tr>
<tr id="i16" class="altColor">
<td class="colFirst"><code>static boolean</code></td>
<th class="colSecond" scope="row"><code><span class="memberNameLink"><a href="#setSchedulerLocation(org.apache.heron.spi.common.Config,java.lang.String,org.apache.heron.spi.scheduler.IScheduler)">setSchedulerLocation</a></span>&#8203;(<a href="../../spi/common/Config.html" title="class in org.apache.heron.spi.common">Config</a>&nbsp;runtime,
java.lang.String&nbsp;schedulerEndpoint,
<a href="../../spi/scheduler/IScheduler.html" title="interface in org.apache.heron.spi.scheduler">IScheduler</a>&nbsp;scheduler)</code></th>
<td class="colLast">
<div class="block">Set the location of scheduler for other processes to discover</div>
</td>
</tr>
<tr id="i17" class="rowColor">
<td class="colFirst"><code>static java.lang.String[]</code></td>
<th class="colSecond" scope="row"><code><span class="memberNameLink"><a href="#splitCommandArg(java.lang.String)">splitCommandArg</a></span>&#8203;(java.lang.String&nbsp;command)</code></th>
<td class="colLast">&nbsp;</td>
</tr>
</table>
<ul class="blockList">
<li class="blockList"><a id="methods.inherited.from.class.java.lang.Object">
<!-- -->
</a>
<h3>Methods inherited from class&nbsp;java.lang.Object</h3>
<code>clone, equals, finalize, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait</code></li>
</ul>
</li>
</ul>
</section>
</li>
</ul>
</div>
<div class="details">
<ul class="blockList">
<li class="blockList">
<!-- ============ FIELD DETAIL =========== -->
<section>
<ul class="blockList">
<li class="blockList"><a id="field.detail">
<!-- -->
</a>
<h3>Field Detail</h3>
<a id="PORTS_REQUIRED_FOR_SCHEDULER">
<!-- -->
</a>
<ul class="blockList">
<li class="blockList">
<h4>PORTS_REQUIRED_FOR_SCHEDULER</h4>
<pre>public static final&nbsp;int PORTS_REQUIRED_FOR_SCHEDULER</pre>
<dl>
<dt><span class="seeLabel">See Also:</span></dt>
<dd><a href="../../../../../constant-values.html#org.apache.heron.scheduler.utils.SchedulerUtils.PORTS_REQUIRED_FOR_SCHEDULER">Constant Field Values</a></dd>
</dl>
</li>
</ul>
<a id="SCHEDULER_COMMAND_LINE_PROPERTIES_OVERRIDE_OPTION">
<!-- -->
</a>
<ul class="blockListLast">
<li class="blockList">
<h4>SCHEDULER_COMMAND_LINE_PROPERTIES_OVERRIDE_OPTION</h4>
<pre>public static final&nbsp;java.lang.String SCHEDULER_COMMAND_LINE_PROPERTIES_OVERRIDE_OPTION</pre>
<dl>
<dt><span class="seeLabel">See Also:</span></dt>
<dd><a href="../../../../../constant-values.html#org.apache.heron.scheduler.utils.SchedulerUtils.SCHEDULER_COMMAND_LINE_PROPERTIES_OVERRIDE_OPTION">Constant Field Values</a></dd>
</dl>
</li>
</ul>
</li>
</ul>
</section>
<!-- ============ METHOD DETAIL ========== -->
<section>
<ul class="blockList">
<li class="blockList"><a id="method.detail">
<!-- -->
</a>
<h3>Method Detail</h3>
<a id="schedulerCommand(org.apache.heron.spi.common.Config,org.apache.heron.spi.common.Config,java.util.List)">
<!-- -->
</a>
<ul class="blockList">
<li class="blockList">
<h4>schedulerCommand</h4>
<pre class="methodSignature">public static&nbsp;java.lang.String[]&nbsp;schedulerCommand&#8203;(<a href="../../spi/common/Config.html" title="class in org.apache.heron.spi.common">Config</a>&nbsp;config,
<a href="../../spi/common/Config.html" title="class in org.apache.heron.spi.common">Config</a>&nbsp;runtime,
java.util.List&lt;java.lang.Integer&gt;&nbsp;freePorts)</pre>
<div class="block">Utils method to construct the command to start heron-scheduler</div>
<dl>
<dt><span class="paramLabel">Parameters:</span></dt>
<dd><code>config</code> - The static Config</dd>
<dd><code>runtime</code> - The runtime Config</dd>
<dd><code>freePorts</code> - list of free ports</dd>
<dt><span class="returnLabel">Returns:</span></dt>
<dd>String[] representing the command to start heron-scheduler</dd>
</dl>
</li>
</ul>
<a id="schedulerCommandArgs(org.apache.heron.spi.common.Config,org.apache.heron.spi.common.Config,java.util.List)">
<!-- -->
</a>
<ul class="blockList">
<li class="blockList">
<h4>schedulerCommandArgs</h4>
<pre class="methodSignature">public static&nbsp;java.lang.String[]&nbsp;schedulerCommandArgs&#8203;(<a href="../../spi/common/Config.html" title="class in org.apache.heron.spi.common">Config</a>&nbsp;config,
<a href="../../spi/common/Config.html" title="class in org.apache.heron.spi.common">Config</a>&nbsp;runtime,
java.util.List&lt;java.lang.Integer&gt;&nbsp;freePorts)</pre>
<div class="block">Util method to get the arguments to the heron scheduler.</div>
<dl>
<dt><span class="paramLabel">Parameters:</span></dt>
<dd><code>config</code> - The static Config</dd>
<dd><code>runtime</code> - The runtime Config</dd>
<dd><code>freePorts</code> - list of free ports</dd>
<dt><span class="returnLabel">Returns:</span></dt>
<dd>String[] representing the arguments to start heron-scheduler</dd>
</dl>
</li>
</ul>
<a id="getExecutorCommand(org.apache.heron.spi.common.Config,org.apache.heron.spi.common.Config,int,java.util.Map)">
<!-- -->
</a>
<ul class="blockList">
<li class="blockList">
<h4>getExecutorCommand</h4>
<pre class="methodSignature">public static&nbsp;java.lang.String[]&nbsp;getExecutorCommand&#8203;(<a href="../../spi/common/Config.html" title="class in org.apache.heron.spi.common">Config</a>&nbsp;config,
<a href="../../spi/common/Config.html" title="class in org.apache.heron.spi.common">Config</a>&nbsp;runtime,
int&nbsp;shardId,
java.util.Map&lt;<a href="SchedulerUtils.ExecutorPort.html" title="enum in org.apache.heron.scheduler.utils">SchedulerUtils.ExecutorPort</a>,&#8203;java.lang.String&gt;&nbsp;ports)</pre>
<div class="block">Utils method to construct the command to start heron-executor</div>
<dl>
<dt><span class="paramLabel">Parameters:</span></dt>
<dd><code>config</code> - The static config</dd>
<dd><code>runtime</code> - The runtime config</dd>
<dd><code>shardId</code> - the executor/container index</dd>
<dd><code>ports</code> - a map of ports to use where the key indicate the port type and the
value is the port</dd>
<dt><span class="returnLabel">Returns:</span></dt>
<dd>String[] representing the command to start heron-executor</dd>
</dl>
</li>
</ul>
<a id="getExecutorCommand(org.apache.heron.spi.common.Config,org.apache.heron.spi.common.Config,java.lang.String,java.util.Map)">
<!-- -->
</a>
<ul class="blockList">
<li class="blockList">
<h4>getExecutorCommand</h4>
<pre class="methodSignature">public static&nbsp;java.lang.String[]&nbsp;getExecutorCommand&#8203;(<a href="../../spi/common/Config.html" title="class in org.apache.heron.spi.common">Config</a>&nbsp;config,
<a href="../../spi/common/Config.html" title="class in org.apache.heron.spi.common">Config</a>&nbsp;runtime,
java.lang.String&nbsp;shardId,
java.util.Map&lt;<a href="SchedulerUtils.ExecutorPort.html" title="enum in org.apache.heron.scheduler.utils">SchedulerUtils.ExecutorPort</a>,&#8203;java.lang.String&gt;&nbsp;ports)</pre>
<div class="block">Utils method to construct the command to start heron-executor</div>
<dl>
<dt><span class="paramLabel">Parameters:</span></dt>
<dd><code>config</code> - The static config</dd>
<dd><code>runtime</code> - The runtime config</dd>
<dd><code>shardId</code> - the executor/container index</dd>
<dd><code>ports</code> - a map of ports to use where the key indicate the port type and the
value is the port</dd>
<dt><span class="returnLabel">Returns:</span></dt>
<dd>String[] representing the command to start heron-executor</dd>
</dl>
</li>
</ul>
<a id="executorCommandArgs(org.apache.heron.spi.common.Config,org.apache.heron.spi.common.Config,java.util.Map,java.lang.String)">
<!-- -->
</a>
<ul class="blockList">
<li class="blockList">
<h4>executorCommandArgs</h4>
<pre class="methodSignature">public static&nbsp;java.lang.String[]&nbsp;executorCommandArgs&#8203;(<a href="../../spi/common/Config.html" title="class in org.apache.heron.spi.common">Config</a>&nbsp;config,
<a href="../../spi/common/Config.html" title="class in org.apache.heron.spi.common">Config</a>&nbsp;runtime,
java.util.Map&lt;<a href="SchedulerUtils.ExecutorPort.html" title="enum in org.apache.heron.scheduler.utils">SchedulerUtils.ExecutorPort</a>,&#8203;java.lang.String&gt;&nbsp;ports,
java.lang.String&nbsp;containerIndex)</pre>
<div class="block">Util method to get the arguments to the heron executor. This method creates the arguments
without the container index, which is the first argument to the executor</div>
<dl>
<dt><span class="paramLabel">Parameters:</span></dt>
<dd><code>config</code> - The static Config</dd>
<dd><code>runtime</code> - The runtime Config</dd>
<dd><code>ports</code> - a map of ports to use where the key indicate the port type and the
value is the port</dd>
<dd><code>containerIndex</code> - The index of the current container</dd>
<dt><span class="returnLabel">Returns:</span></dt>
<dd>String[] representing the arguments to start heron-executor</dd>
</dl>
</li>
</ul>
<a id="addExecutorTopologyArgs(java.util.List,org.apache.heron.spi.common.Config,org.apache.heron.spi.common.Config)">
<!-- -->
</a>
<ul class="blockList">
<li class="blockList">
<h4>addExecutorTopologyArgs</h4>
<pre class="methodSignature">public static&nbsp;void&nbsp;addExecutorTopologyArgs&#8203;(java.util.List&lt;java.lang.String&gt;&nbsp;args,
<a href="../../spi/common/Config.html" title="class in org.apache.heron.spi.common">Config</a>&nbsp;config,
<a href="../../spi/common/Config.html" title="class in org.apache.heron.spi.common">Config</a>&nbsp;runtime)</pre>
<div class="block">Util method to parse configs and translate them into topology configs to be used by executor</div>
<dl>
<dt><span class="paramLabel">Parameters:</span></dt>
<dd><code>args</code> - The list to accept new topology arguments</dd>
<dd><code>config</code> - The static Config</dd>
<dd><code>runtime</code> - The runtime Config</dd>
</dl>
</li>
</ul>
<a id="addExecutorContainerArgs(java.util.List,java.util.Map,java.lang.String)">
<!-- -->
</a>
<ul class="blockList">
<li class="blockList">
<h4>addExecutorContainerArgs</h4>
<pre class="methodSignature">public static&nbsp;void&nbsp;addExecutorContainerArgs&#8203;(java.util.List&lt;java.lang.String&gt;&nbsp;args,
java.util.Map&lt;<a href="SchedulerUtils.ExecutorPort.html" title="enum in org.apache.heron.scheduler.utils">SchedulerUtils.ExecutorPort</a>,&#8203;java.lang.String&gt;&nbsp;ports,
java.lang.String&nbsp;containerIndex)</pre>
<div class="block">Util method to parse port map and container id and translate them into arguments to be used
by executor</div>
<dl>
<dt><span class="paramLabel">Parameters:</span></dt>
<dd><code>args</code> - The list to accept new topology arguments</dd>
<dd><code>ports</code> - a map of ports to use where the key indicate the port type and the
value is the port</dd>
<dd><code>containerIndex</code> - The index of the current container</dd>
</dl>
</li>
</ul>
<a id="createCommandArg(org.apache.heron.scheduler.ExecutorFlag,java.lang.String)">
<!-- -->
</a>
<ul class="blockList">
<li class="blockList">
<h4>createCommandArg</h4>
<pre class="methodSignature">public static&nbsp;java.lang.String&nbsp;createCommandArg&#8203;(<a href="../ExecutorFlag.html" title="enum in org.apache.heron.scheduler">ExecutorFlag</a>&nbsp;flag,
java.lang.String&nbsp;value)</pre>
</li>
</ul>
<a id="splitCommandArg(java.lang.String)">
<!-- -->
</a>
<ul class="blockList">
<li class="blockList">
<h4>splitCommandArg</h4>
<pre class="methodSignature">public static&nbsp;java.lang.String[]&nbsp;splitCommandArg&#8203;(java.lang.String&nbsp;command)</pre>
</li>
</ul>
<a id="setLibSchedulerLocation(org.apache.heron.spi.common.Config,org.apache.heron.spi.scheduler.IScheduler,boolean)">
<!-- -->
</a>
<ul class="blockList">
<li class="blockList">
<h4>setLibSchedulerLocation</h4>
<pre class="methodSignature">public static&nbsp;boolean&nbsp;setLibSchedulerLocation&#8203;(<a href="../../spi/common/Config.html" title="class in org.apache.heron.spi.common">Config</a>&nbsp;runtime,
<a href="../../spi/scheduler/IScheduler.html" title="interface in org.apache.heron.spi.scheduler">IScheduler</a>&nbsp;scheduler,
boolean&nbsp;isService)</pre>
<div class="block">Set the location of scheduler for other processes to discover,
when invoke IScheduler as a library on client side</div>
<dl>
<dt><span class="paramLabel">Parameters:</span></dt>
<dd><code>runtime</code> - the runtime configuration</dd>
<dd><code>scheduler</code> - the IScheduler to provide more info</dd>
<dd><code>isService</code> - true if the scheduler is a service; false otherwise</dd>
</dl>
</li>
</ul>
<a id="setSchedulerLocation(org.apache.heron.spi.common.Config,java.lang.String,org.apache.heron.spi.scheduler.IScheduler)">
<!-- -->
</a>
<ul class="blockList">
<li class="blockList">
<h4>setSchedulerLocation</h4>
<pre class="methodSignature">public static&nbsp;boolean&nbsp;setSchedulerLocation&#8203;(<a href="../../spi/common/Config.html" title="class in org.apache.heron.spi.common">Config</a>&nbsp;runtime,
java.lang.String&nbsp;schedulerEndpoint,
<a href="../../spi/scheduler/IScheduler.html" title="interface in org.apache.heron.spi.scheduler">IScheduler</a>&nbsp;scheduler)</pre>
<div class="block">Set the location of scheduler for other processes to discover</div>
<dl>
<dt><span class="paramLabel">Parameters:</span></dt>
<dd><code>runtime</code> - the runtime configuration</dd>
<dd><code>schedulerEndpoint</code> - the endpoint that scheduler listens for receives requests</dd>
<dd><code>scheduler</code> - the IScheduler to provide more info</dd>
</dl>
</li>
</ul>
<a id="constructSchedulerResponse(boolean)">
<!-- -->
</a>
<ul class="blockList">
<li class="blockList">
<h4>constructSchedulerResponse</h4>
<pre class="methodSignature">public static&nbsp;<a href="../../proto/scheduler/Scheduler.SchedulerResponse.html" title="class in org.apache.heron.proto.scheduler">Scheduler.SchedulerResponse</a>&nbsp;constructSchedulerResponse&#8203;(boolean&nbsp;isOK)</pre>
<div class="block">construct heron scheduler response basing on the given result</div>
<dl>
<dt><span class="paramLabel">Parameters:</span></dt>
<dd><code>isOK</code> - whether the request successful</dd>
</dl>
</li>
</ul>
<a id="encodeJavaOpts(java.lang.String)">
<!-- -->
</a>
<ul class="blockList">
<li class="blockList">
<h4>encodeJavaOpts</h4>
<pre class="methodSignature">public static&nbsp;java.lang.String&nbsp;encodeJavaOpts&#8203;(java.lang.String&nbsp;javaOpts)</pre>
<div class="block">Encode the JVM options
<br> 1. Convert it into Base64 format
<br> 2. Add \" at the start and at the end
<br> 3. replace "=" with "(61)" and "&amp;equals;"
'=' can be parsed in a wrong way by some schedulers (aurora) hence it needs to be escaped.</div>
<dl>
<dt><span class="returnLabel">Returns:</span></dt>
<dd>encoded string</dd>
</dl>
</li>
</ul>
<a id="decodeJavaOpts(java.lang.String)">
<!-- -->
</a>
<ul class="blockList">
<li class="blockList">
<h4>decodeJavaOpts</h4>
<pre class="methodSignature">public static&nbsp;java.lang.String&nbsp;decodeJavaOpts&#8203;(java.lang.String&nbsp;encodedJavaOpts)</pre>
<div class="block">Decode the JVM options
<br> 1. strip \" at the start and at the end
<br> 2. replace "(61)" and "&amp;equals;" with "="
<br> 3. Revert from Base64 format
Note that '=' is escaped in two different ways. '(61)' is the new escaping.
'&amp;equals;' was the original replacement but it is not friendly to bash and
was causing issues. The original escaping is still left there for reference
and backward compatibility purposes (to be removed after no topology needs
it)</div>
<dl>
<dt><span class="returnLabel">Returns:</span></dt>
<dd>decoded string</dd>
</dl>
</li>
</ul>
<a id="createOrCleanDirectory(java.lang.String)">
<!-- -->
</a>
<ul class="blockList">
<li class="blockList">
<h4>createOrCleanDirectory</h4>
<pre class="methodSignature">public static&nbsp;boolean&nbsp;createOrCleanDirectory&#8203;(java.lang.String&nbsp;directory)</pre>
<div class="block">Create the directory if it does not exist otherwise clean the directory.</div>
<dl>
<dt><span class="paramLabel">Parameters:</span></dt>
<dd><code>directory</code> - the working directory to setup</dd>
<dt><span class="returnLabel">Returns:</span></dt>
<dd>true if successful</dd>
</dl>
</li>
</ul>
<a id="extractPackage(java.lang.String,java.lang.String,java.lang.String,boolean,boolean)">
<!-- -->
</a>
<ul class="blockList">
<li class="blockList">
<h4>extractPackage</h4>
<pre class="methodSignature">public static&nbsp;boolean&nbsp;extractPackage&#8203;(java.lang.String&nbsp;workingDirectory,
java.lang.String&nbsp;packageURI,
java.lang.String&nbsp;packageDestination,
boolean&nbsp;deletePackage,
boolean&nbsp;verbose)</pre>
</li>
</ul>
<a id="curlAndExtractPackage(java.lang.String,java.lang.String,java.lang.String,boolean,boolean)">
<!-- -->
</a>
<ul class="blockList">
<li class="blockList">
<h4>curlAndExtractPackage</h4>
<pre class="methodSignature">public static&nbsp;boolean&nbsp;curlAndExtractPackage&#8203;(java.lang.String&nbsp;workingDirectory,
java.lang.String&nbsp;packageURI,
java.lang.String&nbsp;packageDestination,
boolean&nbsp;isDeletePackage,
boolean&nbsp;isVerbose)</pre>
<div class="block">Curl a package, extract it to working directory</div>
<dl>
<dt><span class="paramLabel">Parameters:</span></dt>
<dd><code>workingDirectory</code> - the working directory to setup</dd>
<dd><code>packageURI</code> - the URL of core release package</dd>
<dd><code>packageDestination</code> - the destination of the core release package fetched</dd>
<dd><code>isDeletePackage</code> - delete the package curled or not</dd>
<dd><code>isVerbose</code> - display verbose output or not</dd>
<dt><span class="returnLabel">Returns:</span></dt>
<dd>true if successful</dd>
</dl>
</li>
</ul>
<a id="persistUpdatedPackingPlan(java.lang.String,org.apache.heron.spi.packing.PackingPlan,org.apache.heron.spi.statemgr.SchedulerStateManagerAdaptor)">
<!-- -->
</a>
<ul class="blockListLast">
<li class="blockList">
<h4>persistUpdatedPackingPlan</h4>
<pre class="methodSignature">public static&nbsp;void&nbsp;persistUpdatedPackingPlan&#8203;(java.lang.String&nbsp;topologyName,
<a href="../../spi/packing/PackingPlan.html" title="class in org.apache.heron.spi.packing">PackingPlan</a>&nbsp;updatedPackingPlan,
<a href="../../spi/statemgr/SchedulerStateManagerAdaptor.html" title="class in org.apache.heron.spi.statemgr">SchedulerStateManagerAdaptor</a>&nbsp;stateManager)</pre>
<div class="block">Replaces persisted packing plan in state manager.</div>
</li>
</ul>
</li>
</ul>
</section>
</li>
</ul>
</div>
</div>
</main>
<!-- ========= END OF CLASS DATA ========= -->
<footer role="contentinfo">
<nav role="navigation">
<!-- ======= START OF BOTTOM NAVBAR ====== -->
<div class="bottomNav"><a id="navbar.bottom">
<!-- -->
</a>
<div class="skipNav"><a href="#skip.navbar.bottom" title="Skip navigation links">Skip navigation links</a></div>
<a id="navbar.bottom.firstrow">
<!-- -->
</a>
<ul class="navList" title="Navigation">
<li><a href="../../../../../index.html">Overview</a></li>
<li><a href="package-summary.html">Package</a></li>
<li class="navBarCell1Rev">Class</li>
<li><a href="package-tree.html">Tree</a></li>
<li><a href="../../../../../deprecated-list.html">Deprecated</a></li>
<li><a href="../../../../../index-all.html">Index</a></li>
<li><a href="../../../../../help-doc.html">Help</a></li>
</ul>
</div>
<div class="subNav">
<ul class="navList" id="allclasses_navbar_bottom">
<li><a href="../../../../../allclasses.html">All&nbsp;Classes</a></li>
</ul>
<div>
<script type="text/javascript"><!--
allClassesLink = document.getElementById("allclasses_navbar_bottom");
if(window==top) {
allClassesLink.style.display = "block";
}
else {
allClassesLink.style.display = "none";
}
//-->
</script>
<noscript>
<div>JavaScript is disabled on your browser.</div>
</noscript>
</div>
<div>
<ul class="subNavList">
<li>Summary:&nbsp;</li>
<li><a href="#nested.class.summary">Nested</a>&nbsp;|&nbsp;</li>
<li><a href="#field.summary">Field</a>&nbsp;|&nbsp;</li>
<li>Constr&nbsp;|&nbsp;</li>
<li><a href="#method.summary">Method</a></li>
</ul>
<ul class="subNavList">
<li>Detail:&nbsp;</li>
<li><a href="#field.detail">Field</a>&nbsp;|&nbsp;</li>
<li>Constr&nbsp;|&nbsp;</li>
<li><a href="#method.detail">Method</a></li>
</ul>
</div>
<a id="skip.navbar.bottom">
<!-- -->
</a></div>
<!-- ======== END OF BOTTOM NAVBAR ======= -->
</nav>
</footer>
</body>
</html>