blob: 8909f5459cb42d396102cc4007af071aebc88d86 [file] [log] [blame]
<!DOCTYPE html>
<html class="no-js">
<head lang="en-us">
<meta charset="utf-8">
<meta name="viewport" content="width=device-width,user-scalable=no,initial-scale=1,maximum-scale=1">
<meta http-equiv="X-UA-Compatible" content="IE=10" />
<title>Management UI - Eclipse hawkBit</title>
<meta name="generator" content="Hugo 0.56.3" />
<meta name="description" content="IoT. Update. Device.">
<link rel="canonical" href="https://www.eclipse.org/hawkbit/ui/">
<meta name="author" content="The Eclipse hawkBit Project">
<meta property="og:url" content="https://www.eclipse.org/hawkbit/ui/">
<meta property="og:title" content="Eclipse hawkBit">
<meta property="og:image" content="https://www.eclipse.org/hawkbit/images/hawkbit_icon.png">
<meta name="apple-mobile-web-app-title" content="Eclipse hawkBit">
<meta name="apple-mobile-web-app-capable" content="yes">
<meta name="apple-mobile-web-app-status-bar-style" content="black-translucent">
<link rel="shortcut icon" type="image/x-icon" href="https://www.eclipse.org/hawkbit/images/favicon.ico">
<link rel="icon" type="image/x-icon" href="https://www.eclipse.org/hawkbit/images/favicon.ico">
<style>
@font-face {
font-family: 'Icon';
src: url('https://www.eclipse.org/hawkbit/fonts/icon.eot');
src: url('https://www.eclipse.org/hawkbit/fonts/icon.eot')
format('embedded-opentype'),
url('https://www.eclipse.org/hawkbit/fonts/icon.woff')
format('woff'),
url('https://www.eclipse.org/hawkbit/fonts/icon.ttf')
format('truetype'),
url('https://www.eclipse.org/hawkbit/fonts/icon.svg')
format('svg');
font-weight: normal;
font-style: normal;
}
</style>
<link rel="stylesheet" href="https://www.eclipse.org/hawkbit/stylesheets/application.css">
<link rel="stylesheet" href="https://www.eclipse.org/hawkbit/stylesheets/temporary.css">
<link rel="stylesheet" href="https://www.eclipse.org/hawkbit/stylesheets/palettes.css">
<link rel="stylesheet" href="https://www.eclipse.org/hawkbit/stylesheets/highlight/highlight.css">
<link rel="stylesheet" href="//fonts.googleapis.com/css?family=Ubuntu:400,700|Ubuntu&#43;Mono">
<style>
body, input {
font-family: 'Ubuntu', Helvetica, Arial, sans-serif;
}
pre, code {
font-family: 'Ubuntu Mono', 'Courier New', 'Courier', monospace;
}
</style>
<link rel="stylesheet" href="https://www.eclipse.org/hawkbit/css/hawkbit.css">
<link rel="stylesheet" href="//www.eclipse.org/eclipse.org-common/themes/solstice/public/stylesheets/vendor/cookieconsent/cookieconsent.min.css">
<script src="https://www.eclipse.org/hawkbit/javascripts/modernizr.js"></script>
<script src="//www.eclipse.org/eclipse.org-common/themes/solstice/public/javascript/vendor/cookieconsent/default.min.js"></script>
<link rel="stylesheet" href="https://use.fontawesome.com/releases/v5.1.0/css/all.css" integrity="sha384-lKuwvrZot6UHsBSfcMvOkWwlCMgc0TaWr+30HWe3a4ltaBwTZhyTEggF5tJv8tbt" crossorigin="anonymous">
</head>
<body class="palette-primary-deep-purple palette-accent-light-green">
<div class="backdrop">
<div class="backdrop-paper"></div>
</div>
<input class="toggle" type="checkbox" id="toggle-drawer">
<input class="toggle" type="checkbox" id="toggle-search">
<label class="toggle-button overlay" for="toggle-drawer"></label>
<header class="header">
<nav aria-label="Header">
<div class="bar default">
<div class="button button-menu" role="button" aria-label="Menu">
<label class="toggle-button icon icon-menu" for="toggle-drawer">
<span></span>
</label>
</div>
<div class="stretch">
<div class="title">
Management UI
</div>
</div>
<div class="button button-github" role="button" aria-label="GitHub">
<a href="https://github.com/eclipse/hawkbit" title="@eclipse/hawkbit on GitHub" target="_blank" class="toggle-button icon icon-github"></a>
</div>
<div class="button button-github" role="button" aria-label="Gitter">
<a href="https://gitter.im/eclipse/hawkbit" title="@eclipse/hawkbit on Gitter" target="_blank" class="toggle-button icon fab fa-gitter"></a>
</div>
<div class="button button-github" role="button" aria-label="Docker">
<a href="https://hub.docker.com/u/hawkbit" title="hawkbit on Docker Hub" target="_blank" class="toggle-button icon fab fa-docker"></a>
</div>
</div>
<div class="bar search">
<div class="button button-close" role="button" aria-label="Close">
<label class="toggle-button icon icon-back" for="toggle-search"></label>
</div>
<div class="stretch">
<div class="field">
<input class="query" type="text" placeholder="Search" autocapitalize="off" autocorrect="off" autocomplete="off" spellcheck>
</div>
</div>
<div class="button button-reset" role="button" aria-label="Search">
<button class="toggle-button icon icon-close" id="reset-search"></button>
</div>
</div>
</nav>
</header>
<main class="main">
<div class="drawer">
<nav aria-label="Navigation">
<a href="https://www.eclipse.org/hawkbit/" class="project">
<div class="banner">
<div class="logo">
<img src="https://www.eclipse.org/hawkbit/images/hawkbit_icon.png">
</div>
<div class="name">
<strong>Eclipse hawkBit&trade; </strong>
<br>
eclipse/hawkbit
</div>
</div>
</a>
<div class="scrollable">
<div class="wrapper">
<ul class="repo">
<li class="repo-download">
<a href="https://hawkbit.eclipse.org" target="_blank" title="hawkBit Sandbox" data-action="sandbox">
<i class="fas fa-desktop"></i> &nbsp; Sandbox
</a>
</li>
<li class="repo-stars">
<a href="https://github.com/eclipse/hawkbit/stargazers" target="_blank" title="Stargazers" data-action="star">
<i class="icon icon-star"></i> Stars
<span class="count">&ndash;</span>
</a>
</li>
</ul>
<hr>
<div class="toc">
<ul>
<li>
<a title="What is hawkBit" href="/hawkbit/whatishawkbit/">
What is hawkBit
</a>
</li>
<li>
<a title="Getting started" href="/hawkbit/gettingstarted/">
Getting started
</a>
</li>
<li>
<a title="Guides" href="/hawkbit/guides/">
Guides
</a>
</li>
<li>
<a title="Features" href="/hawkbit/features/">
Features
</a>
</li>
<li>
<a title="Concepts" href="/hawkbit/concepts/">
Concepts
</a>
</li>
<li>
<a title="Architecture" href="/hawkbit/architecture/">
Architecture
</a>
</li>
<li>
<a class="current" title="Management UI" href="/hawkbit/ui/">
Management UI
</a>
<ul id="scrollspy">
</ul>
</li>
<li>
<a title="APIs" href="/hawkbit/apis/">
APIs
</a>
</li>
<li>
<a title="Community" href="/hawkbit/community/">
Community
</a>
</li>
<li>
<a title="Release notes" href="/hawkbit/release-notes/">
Release notes
</a>
</li>
</ul>
<hr>
<ul>
<li>
<a href="https://gitter.im/eclipse/hawkbit?utm_source=badge&utm_medium=badge&utm_campaign=pr-badge&utm_content=badge" title="Chat on Gitter" target="_blank">
<img src="https://badges.gitter.im/eclipse/hawkbit.svg" />
</a>
</li>
<li>
<a href="https://circleci.com/gh/eclipse/hawkbit" title="Circle CI Status" target="_blank">
<img src="https://circleci.com/gh/eclipse/hawkbit.svg?style=shield" />
</a>
</li>
<li>
<a href="https://sonar.ops.bosch-iot-rollouts.com" title="SonarQube Status" target="_blank">
<img src="https://sonar.ops.bosch-iot-rollouts.com/api/badges/gate?key=org.eclipse.hawkbit:hawkbit-parent" />
</a>
</li>
<li>
<a href="https://maven-badges.herokuapp.com/maven-central/org.eclipse.hawkbit/hawkbit-parent" title="Maven Central Status" target="_blank">
<img src="https://maven-badges.herokuapp.com/maven-central/org.eclipse.hawkbit/hawkbit-parent/badge.svg" />
</a>
</li>
</ul>
</div>
</div>
</div>
</nav>
</div>
<article class="article">
<div class="wrapper">
<h1>Management UI </h1>
<p>The hawkBit Management UI provides several views for the different use cases:</p>
<ul>
<li><em>Deployment Management</em> view for target administration and manual deployment.</li>
<li><em>Distribution Management</em> view software repository metadata management.</li>
<li><em>Artifact Management</em> view to manage the artifacts.</li>
<li><em>Target Filter Management</em> view to manage target filters that can be used both in Deployment and Rollout Management views.</li>
<li><em>Rollout Management</em> for large scale rollout orchestration.</li>
</ul>
<h2 id="deployment-management">Deployment Management</h2>
<h3 id="purpose">Purpose</h3>
<p>Target status overview, target management and manual deployments.</p>
<h3 id="feature-explained">Feature explained</h3>
<ul>
<li>Target Status: check status of all targets.</li>
<li><p>Target list allows filters based on:</p>
<ul>
<li>Assigned/installed <em>DistributionSet</em> (drag and drop a set on the filter icon on the top of the list)</li>
<li>Target update status: click 1-X status to reduce the list of targets that have one of them.</li>
<li>Target tag: click 1-X tags to reduce the list to targets that have one of them.</li>
<li>Name, description: use search button on the top of the list.</li>
</ul></li>
<li><p><em>DistributionSet</em> list allows filters based on:</p>
<ul>
<li><em>DistributionSet</em> tag: click 1-X tags to reduce the list of sets that have one of them.</li>
<li>Name, description: use search button on the top of the list.</li>
</ul></li>
<li><p>Start roll out by drag and drop targets on a DS.</p></li>
<li><p>Target list supports CTRL-A for &ldquo;select all&rdquo;.</p></li>
<li><p>Delete sets, tags or targets by dragging them on delete icon.</p></li>
<li><p>Select <em>Target</em> to see <em>Action</em> History.</p></li>
<li><p>Bulk target upload: create bulk targets by upload.</p></li>
</ul>
<p>Hints for bulk upload:
- Expected file type : csv.
- Expected file format : Each line with two values (ControllerID,Target Name). ControllerID is mandatory.
- Example:</p>
<pre><code>Controller_id_1,targetName1
Controller_id_2,targetName2
</code></pre>
<p><img src="../images/ui/deployment_mgmt.png" alt="Deployment Management view" /></p>
<h2 id="distribution-management">Distribution Management</h2>
<h3 id="purpose-1">Purpose</h3>
<p>Distribution Set view to manage software repository metadata, i.e. Distribution Sets, their Software Modules and the respective types.</p>
<h3 id="features-explained">Features explained</h3>
<ul>
<li>Browse, create, delete and update Distribution Sets.</li>
<li>Browse, create, delete and update Distribution Set Types.</li>
<li>Browse, create, delete and update Software Modules.</li>
<li>Browse, create, delete and update Software Module Types.</li>
<li>Assign Software Modules to Distribution Sets.</li>
</ul>
<p><img src="../images/ui/distribution_mgmt.png" alt="Distribution Management view" /></p>
<h2 id="artifact-management">Artifact Management</h2>
<h3 id="purpose-2">Purpose</h3>
<p>Software artifact management, both metadata (i.e. Software Modules) and artifacts themselves.</p>
<h3 id="features-explained-1">Features explained</h3>
<ul>
<li>Browse, create, delete and update Software Modules.</li>
<li>Browse, create, delete and update Software Module Types.</li>
<li>Upload and delete software artifacts for a module.</li>
</ul>
<p><img src="../images/ui/artifact_mgmt.png" alt="Artifact Management view" /></p>
<h2 id="rollout-management">Rollout Management</h2>
<h3 id="purpose-3">Purpose</h3>
<p>Software rollout in large scale, rollout status overview and rollout management.</p>
<h3 id="features-explained-2">Features explained</h3>
<ul>
<li>Create, update, copy and delete of rollouts.</li>
<li>Start, pause and resume of rollouts.</li>
<li>Progress monitoring for the entire rollout and the individual groups.</li>
<li>Drill down to see the groups in a rollout and targets in each group.</li>
<li>Rollout attributes:
<ul>
<li>Selection of targets as input for the rollout based on <em>target filter</em></li>
<li>Selection of <em>distribution set</em></li>
<li>Auto-splitting of the input target list based on <em>group number</em> defined</li>
<li><em>Trigger threshold</em> to define the percentage of installation to be completed , to trigger the start of next group</li>
<li><em>Error threshold</em> defines the percentage of error tolerance of a group before calling for a emergency shutdown of a rollout</li>
</ul></li>
</ul>
<p><img src="../images/ui/rollout_mgmt.png" alt="Rollout Management view" /></p>
<p><img src="../images/ui/rollout_groups.png" alt="Rollout Management view" /></p>
<div class="admonition note">
<p class="admonition-title"></p>
<p>Deletion of targets which are in a rollout, changes the rollout statistics.</p>
</div>
<h2 id="target-filter-management">Target Filter Management</h2>
<h3 id="purpose-4">Purpose</h3>
<p>Custom target filter overview and filter management.</p>
<h3 id="features-explained-3">Features explained</h3>
<ul>
<li>Custom target filter allows user to filter targets by defining custom query.</li>
<li>Displays custom target filter list and user can search any particular filter.</li>
<li>Create, update and delete features are supported for target filters.</li>
<li>Auto assignment of a distribution set to filtered targets.</li>
</ul>
<h3 id="how-to-filter">How to Filter</h3>
<p>The basic syntax to filter is: <code>field&lt;basic_operator&gt;value &lt;composite_operator&gt; field&lt;basic_operator&gt;value &lt;...&gt;</code></p>
<ul>
<li><code>field</code>: is the name of the resource field.</li>
<li><code>value</code>: is the value of the target field</li>
<li><code>&lt;basic_operator&gt;</code>: Are operators to do simple queries. Supported basic operators are:
<ul>
<li><code>==</code> : equal</li>
<li><code>!=</code> : not equal</li>
<li>Use <code>=IN=</code> for &lsquo;in&rsquo; parameter.(Example: name=IN=(target1,target2).</li>
</ul></li>
<li><code>&lt;composite_operator&gt;</code>: Are operators to join simple queries: Supported composite operators are:
<ul>
<li><code>and</code></li>
<li><code>or</code></li>
<li>Use <code>=IN=</code> for &lsquo;in&rsquo; parameter.(Example: name=IN=(target1,target2).</li>
<li>Use <code>*</code> for wildcard matches.</li>
</ul></li>
</ul>
<h3 id="examples">Examples</h3>
<table>
<thead>
<tr>
<th>Custom query</th>
<th>Description</th>
</tr>
</thead>
<tbody>
<tr>
<td>updatestatus==error</td>
<td>Gives all targets in ‘error’ state.</td>
</tr>
<tr>
<td>controllerId!=192.168.2.42</td>
<td>Gives all targets that do not have the controllerId 192.168.2.42.</td>
</tr>
<tr>
<td>name==*CCU*</td>
<td>Gives all targets which contain the term ‘CCU’ in there name.</td>
</tr>
<tr>
<td>name==*CCU* or description==*CCU*</td>
<td>Gives all targets that either have the term ‘CCU’ in their name or their description.</td>
</tr>
<tr>
<td>name==*SHC* and description==*SHC*</td>
<td>Gives all targets that have the term SHC in their name and their description.</td>
</tr>
<tr>
<td>name==CCU* and updatestatus==pending</td>
<td>Gives all targets with their name starting with ‘CCU’ and which are in ‘pending’ state.</td>
</tr>
<tr>
<td>(assignedds.name==‘ECU-DS’ and description==test) or updatestatus!=error</td>
<td>Gives all targets which are either assigned to ‘ECU-DS’ and have description equals to ‘test’ or which are not in error status.</td>
</tr>
<tr>
<td>(updatestatus!=In_sync or updatestatus!=error) and name==*SHC1*</td>
<td>Gives all targets that do not have the update status In_sync or error and that contains the term SHC1 in their name.</td>
</tr>
<tr>
<td>(updatestatus!=error or updatestatus!=pending) and (name==*CCU* or description==*CCU*)</td>
<td>Gives all targets that either have the term ‘CCU’ in their name or their description and that either have the <em>update status</em> not in state error or pending.</td>
</tr>
</tbody>
</table>
<p><img src="../images/ui/target_filter.png" alt="Target Filter Management view" /></p>
<h3 id="auto-assignment">Auto assignment</h3>
<p>It is possible to assign some distribution set with different action types (<em>forced</em>, <em>soft</em>, or <em>download only</em>) to all targets that belong to the corresponding custom target filter, including the ones, that are registered later on.</p>
<p>In order to activate the auto-assignment, one should first click on <em>Auto assignment</em> cell in Custom Filters table, and then check the corresponding checkbox. After that, the action type and distribution set for auto-assignment should be selected and confirmed.</p>
<p>As long as the auto-assignment stays active, the scheduler will try to assign selected distribution set to corresponding custom filter targets, that have never seen it before.</p>
<p><img src="../images/ui/target_filter_auto_assignment.png" alt="Auto assignment" /></p>
<aside class="copyright" role="note">
<div class="logo">
<a href="https://www.eclipse.org" target="_blank">
<img src="/hawkbit/images/eclipse_foundation_logo.png" />
</a>
</div>
<p class="notice">
&copy; 2020 The Eclipse hawkBit Project &ndash;
Documentation built with
<a href="https://www.gohugo.io" target="_blank">Hugo</a>
using the
<a href="http://github.com/digitalcraftsman/hugo-material-docs" target="_blank">Material</a> theme.
</p>
<p class="quickLinks">
<a href="http://www.eclipse.org/legal/privacy.php" target="_blank">
&gt; Privacy Policy
</a>
<a href="http://www.eclipse.org/legal/termsofuse.php" target="_blank">
&gt; Terms of Use
</a>
<a href="http://www.eclipse.org/legal/copyright.php" target="_blank">
&gt; Copyright Agent
</a>
<a href="http://www.eclipse.org/legal" target="_blank">
&gt; Legal
</a>
<a href="https://www.eclipse.org/org/documents/epl-v10.php" target="_blank">
&gt; License
</a>
</p>
</aside>
<footer class="footer">
<nav class="pagination" aria-label="Footer">
<div class="previous">
<a href="https://www.eclipse.org/hawkbit/apis/management_api/" title="Management API">
<span class="direction">
Previous
</span>
<div class="page">
<div class="button button-previous" role="button" aria-label="Previous">
<i class="icon icon-back"></i>
</div>
<div class="stretch">
<div class="title">
Management API
</div>
</div>
</div>
</a>
</div>
<div class="next">
<a href="https://www.eclipse.org/hawkbit/architecture/" title="Architecture">
<span class="direction">
Next
</span>
<div class="page">
<div class="stretch">
<div class="title">
Architecture
</div>
</div>
<div class="button button-next" role="button" aria-label="Next">
<i class="icon icon-forward"></i>
</div>
</div>
</a>
</div>
</nav>
</footer>
</div>
</article>
<div class="results" role="status" aria-live="polite">
<div class="scrollable">
<div class="wrapper">
<div class="meta"></div>
<div class="list"></div>
</div>
</div>
</div>
</main>
<script>
var base_url = 'https:\/\/www.eclipse.org\/hawkbit\/';
var repo_id = 'eclipse\/hawkbit';
</script>
<script src="https://www.eclipse.org/hawkbit/javascripts/application.js"></script>
<script>
/* Add headers to scrollspy */
var headers = document.getElementsByTagName("h2");
var scrollspy = document.getElementById('scrollspy');
if(scrollspy) {
if(headers.length > 0) {
for(var i = 0; i < headers.length; i++) {
var li = document.createElement("li");
li.setAttribute("class", "anchor");
var a = document.createElement("a");
if(!headers[i].id)
a.setAttribute("href", headers[i].parentNode.href);
else
a.setAttribute("href", "#" + headers[i].id);
a.setAttribute("title", headers[i].innerHTML);
a.innerHTML = headers[i].innerHTML;
li.appendChild(a);
scrollspy.appendChild(li);
}
} else {
scrollspy.parentElement.removeChild(scrollspy)
}
/* Add permanent link next to the headers */
var headers = document.querySelectorAll("h1, h2, h3, h4, h5, h6");
for(var i = 0; i < headers.length; i++) {
var a = document.createElement("a");
a.setAttribute("class", "headerlink");
a.setAttribute("href", "#" + headers[i].id);
a.setAttribute("title", "Permanent link");
a.innerHTML = "#";
headers[i].appendChild(a);
}
}
</script>
<script src="//cdnjs.cloudflare.com/ajax/libs/highlight.js/9.8.0/highlight.min.js"></script>
<script>hljs.initHighlightingOnLoad();</script>
</body>
</html>