<?xml version="1.0" encoding="utf-8" standalone="yes"?><rss version="2.0" xmlns:atom="http://www.w3.org/2005/Atom"><channel><title>cc-node-controller on ClusterCockpit</title><link>/docs/reference/cc-node-controller/</link><description>Recent content in cc-node-controller on ClusterCockpit</description><generator>Hugo</generator><language>en</language><atom:link href="/docs/reference/cc-node-controller/index.xml" rel="self" type="application/rss+xml"/><item><title>Commands</title><link>/docs/reference/cc-node-controller/ccnc-commands/</link><pubDate>Mon, 01 Jan 0001 00:00:00 +0000</pubDate><guid>/docs/reference/cc-node-controller/ccnc-commands/</guid><description>&lt;h2 id="server-daemon">Server Daemon&lt;/h2>
&lt;h3 id="build">Build&lt;/h3>
&lt;div class="highlight">&lt;pre tabindex="0" style="background-color:#f8f8f8;-moz-tab-size:4;-o-tab-size:4;tab-size:4;">&lt;code class="language-bash" data-lang="bash">&lt;span style="display:flex;">&lt;span>make
&lt;/span>&lt;/span>&lt;/code>&lt;/pre>&lt;/div>&lt;p>Produces the &lt;code>cc-node-controller&lt;/code> binary in the repository root. Debian and RPM packages can be built with &lt;code>make DEB&lt;/code> and &lt;code>make RPM&lt;/code> respectively.&lt;/p>
&lt;h3 id="run">Run&lt;/h3>
&lt;div class="highlight">&lt;pre tabindex="0" style="background-color:#f8f8f8;-moz-tab-size:4;-o-tab-size:4;tab-size:4;">&lt;code class="language-bash" data-lang="bash">&lt;span style="display:flex;">&lt;span>./cc-node-controller &lt;span style="color:#ce5c00;font-weight:bold">[&lt;/span>options&lt;span style="color:#ce5c00;font-weight:bold">]&lt;/span>
&lt;/span>&lt;/span>&lt;/code>&lt;/pre>&lt;/div>&lt;p>The daemon must run on the compute node it controls (it only processes messages matching its own hostname) and requires access to &lt;code>liblikwid.so&lt;/code>.&lt;/p>
&lt;h3 id="options">Options&lt;/h3>
&lt;table>
 &lt;thead>
 &lt;tr>
 &lt;th>Flag&lt;/th>
 &lt;th>Default&lt;/th>
 &lt;th>Description&lt;/th>
 &lt;/tr>
 &lt;/thead>
 &lt;tbody>
 &lt;tr>
 &lt;td>&lt;code>-config &amp;lt;path&amp;gt;&lt;/code>&lt;/td>
 &lt;td>&lt;code>./config.json&lt;/code>&lt;/td>
 &lt;td>Path to the JSON configuration file&lt;/td>
 &lt;/tr>
 &lt;tr>
 &lt;td>&lt;code>-loglevel &amp;lt;level&amp;gt;&lt;/code>&lt;/td>
 &lt;td>&lt;code>warn&lt;/code>&lt;/td>
 &lt;td>Log verbosity: &lt;code>debug&lt;/code>, &lt;code>info&lt;/code>, &lt;code>warn&lt;/code>, &lt;code>error&lt;/code>&lt;/td>
 &lt;/tr>
 &lt;tr>
 &lt;td>&lt;code>-pretend&lt;/code>&lt;/td>
 &lt;td>&lt;code>false&lt;/code>&lt;/td>
 &lt;td>Dry-run mode — process messages and log what would happen, but do not apply any hardware changes&lt;/td>
 &lt;/tr>
 &lt;/tbody>
&lt;/table>
&lt;h3 id="example">Example&lt;/h3>
&lt;div class="highlight">&lt;pre tabindex="0" style="background-color:#f8f8f8;-moz-tab-size:4;-o-tab-size:4;tab-size:4;">&lt;code class="language-bash" data-lang="bash">&lt;span style="display:flex;">&lt;span>./cc-node-controller -config /etc/cc-node-controller/config.json -loglevel info
&lt;/span>&lt;/span>&lt;/code>&lt;/pre>&lt;/div>&lt;h3 id="signals">Signals&lt;/h3>
&lt;p>&lt;code>cc-node-controller&lt;/code> handles the following UNIX signals for graceful shutdown:&lt;/p></description></item><item><title>Configuration</title><link>/docs/reference/cc-node-controller/ccnc-configuration/</link><pubDate>Mon, 01 Jan 0001 00:00:00 +0000</pubDate><guid>/docs/reference/cc-node-controller/ccnc-configuration/</guid><description>&lt;p>Configuration is provided as a flat JSON file. The default path is &lt;code>./config.json&lt;/code> in the working directory; an alternative path can be specified with the &lt;code>-config&lt;/code> flag.&lt;/p>
&lt;h2 id="fields">Fields&lt;/h2>
&lt;table>
 &lt;thead>
 &lt;tr>
 &lt;th>Field&lt;/th>
 &lt;th>Type&lt;/th>
 &lt;th>Required&lt;/th>
 &lt;th>Default&lt;/th>
 &lt;th>Description&lt;/th>
 &lt;/tr>
 &lt;/thead>
 &lt;tbody>
 &lt;tr>
 &lt;td>&lt;code>server&lt;/code>&lt;/td>
 &lt;td>string&lt;/td>
 &lt;td>yes&lt;/td>
 &lt;td>—&lt;/td>
 &lt;td>IP address or hostname of the NATS server&lt;/td>
 &lt;/tr>
 &lt;tr>
 &lt;td>&lt;code>port&lt;/code>&lt;/td>
 &lt;td>integer&lt;/td>
 &lt;td>yes&lt;/td>
 &lt;td>—&lt;/td>
 &lt;td>Port of the NATS server&lt;/td>
 &lt;/tr>
 &lt;tr>
 &lt;td>&lt;code>requestSubject&lt;/code>&lt;/td>
 &lt;td>string&lt;/td>
 &lt;td>yes&lt;/td>
 &lt;td>—&lt;/td>
 &lt;td>NATS subject to subscribe to for incoming control requests. All &lt;code>cc-node-controller&lt;/code> instances in a cluster can share the same subject; each daemon only processes messages directed at its own hostname.&lt;/td>
 &lt;/tr>
 &lt;tr>
 &lt;td>&lt;code>user&lt;/code>&lt;/td>
 &lt;td>string&lt;/td>
 &lt;td>no&lt;/td>
 &lt;td>—&lt;/td>
 &lt;td>Username for NATS basic authentication&lt;/td>
 &lt;/tr>
 &lt;tr>
 &lt;td>&lt;code>password&lt;/code>&lt;/td>
 &lt;td>string&lt;/td>
 &lt;td>no&lt;/td>
 &lt;td>—&lt;/td>
 &lt;td>Password for NATS basic authentication&lt;/td>
 &lt;/tr>
 &lt;tr>
 &lt;td>&lt;code>credsFile&lt;/code>&lt;/td>
 &lt;td>string&lt;/td>
 &lt;td>no&lt;/td>
 &lt;td>—&lt;/td>
 &lt;td>Path to a NATS credentials file (for NKey/JWT-based authentication)&lt;/td>
 &lt;/tr>
 &lt;tr>
 &lt;td>&lt;code>nkeySeedFile&lt;/code>&lt;/td>
 &lt;td>string&lt;/td>
 &lt;td>no&lt;/td>
 &lt;td>—&lt;/td>
 &lt;td>Path to an NKey seed file&lt;/td>
 &lt;/tr>
 &lt;tr>
 &lt;td>&lt;code>outstandingMessagesInQueue&lt;/code>&lt;/td>
 &lt;td>integer&lt;/td>
 &lt;td>no&lt;/td>
 &lt;td>&lt;code>1000&lt;/code>&lt;/td>
 &lt;td>Size of the internal channel buffer for incoming NATS messages&lt;/td>
 &lt;/tr>
 &lt;/tbody>
&lt;/table>
&lt;h2 id="minimal-example">Minimal Example&lt;/h2>
&lt;div class="highlight">&lt;pre tabindex="0" style="background-color:#f8f8f8;-moz-tab-size:4;-o-tab-size:4;tab-size:4;">&lt;code class="language-json" data-lang="json">&lt;span style="display:flex;">&lt;span>&lt;span style="color:#000;font-weight:bold">{&lt;/span>
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> &lt;span style="color:#204a87;font-weight:bold">&amp;#34;server&amp;#34;&lt;/span>&lt;span style="color:#000;font-weight:bold">:&lt;/span> &lt;span style="color:#4e9a06">&amp;#34;127.0.0.1&amp;#34;&lt;/span>&lt;span style="color:#000;font-weight:bold">,&lt;/span>
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> &lt;span style="color:#204a87;font-weight:bold">&amp;#34;port&amp;#34;&lt;/span>&lt;span style="color:#000;font-weight:bold">:&lt;/span> &lt;span style="color:#0000cf;font-weight:bold">4222&lt;/span>&lt;span style="color:#000;font-weight:bold">,&lt;/span>
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> &lt;span style="color:#204a87;font-weight:bold">&amp;#34;requestSubject&amp;#34;&lt;/span>&lt;span style="color:#000;font-weight:bold">:&lt;/span> &lt;span style="color:#4e9a06">&amp;#34;cc-control&amp;#34;&lt;/span>
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>&lt;span style="color:#000;font-weight:bold">}&lt;/span>
&lt;/span>&lt;/span>&lt;/code>&lt;/pre>&lt;/div>&lt;h2 id="full-example">Full Example&lt;/h2>
&lt;div class="highlight">&lt;pre tabindex="0" style="background-color:#f8f8f8;-moz-tab-size:4;-o-tab-size:4;tab-size:4;">&lt;code class="language-json" data-lang="json">&lt;span style="display:flex;">&lt;span>&lt;span style="color:#000;font-weight:bold">{&lt;/span>
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> &lt;span style="color:#204a87;font-weight:bold">&amp;#34;server&amp;#34;&lt;/span>&lt;span style="color:#000;font-weight:bold">:&lt;/span> &lt;span style="color:#4e9a06">&amp;#34;nats.example.org&amp;#34;&lt;/span>&lt;span style="color:#000;font-weight:bold">,&lt;/span>
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> &lt;span style="color:#204a87;font-weight:bold">&amp;#34;port&amp;#34;&lt;/span>&lt;span style="color:#000;font-weight:bold">:&lt;/span> &lt;span style="color:#0000cf;font-weight:bold">4222&lt;/span>&lt;span style="color:#000;font-weight:bold">,&lt;/span>
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> &lt;span style="color:#204a87;font-weight:bold">&amp;#34;requestSubject&amp;#34;&lt;/span>&lt;span style="color:#000;font-weight:bold">:&lt;/span> &lt;span style="color:#4e9a06">&amp;#34;clustercockpit.control&amp;#34;&lt;/span>&lt;span style="color:#000;font-weight:bold">,&lt;/span>
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> &lt;span style="color:#204a87;font-weight:bold">&amp;#34;user&amp;#34;&lt;/span>&lt;span style="color:#000;font-weight:bold">:&lt;/span> &lt;span style="color:#4e9a06">&amp;#34;ccnc-user&amp;#34;&lt;/span>&lt;span style="color:#000;font-weight:bold">,&lt;/span>
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> &lt;span style="color:#204a87;font-weight:bold">&amp;#34;password&amp;#34;&lt;/span>&lt;span style="color:#000;font-weight:bold">:&lt;/span> &lt;span style="color:#4e9a06">&amp;#34;s3cr3t&amp;#34;&lt;/span>&lt;span style="color:#000;font-weight:bold">,&lt;/span>
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> &lt;span style="color:#204a87;font-weight:bold">&amp;#34;outstandingMessagesInQueue&amp;#34;&lt;/span>&lt;span style="color:#000;font-weight:bold">:&lt;/span> &lt;span style="color:#0000cf;font-weight:bold">500&lt;/span>
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>&lt;span style="color:#000;font-weight:bold">}&lt;/span>
&lt;/span>&lt;/span>&lt;/code>&lt;/pre>&lt;/div>&lt;h2 id="authentication">Authentication&lt;/h2>
&lt;p>&lt;code>cc-node-controller&lt;/code> supports three NATS authentication methods. Only one should be configured at a time:&lt;/p></description></item></channel></rss>