Select Git revision
kitchen.yml
-
Imran Iqbal authored
* Automated using https://github.com/myii/ssf-formula/pull/344
Imran Iqbal authored* Automated using https://github.com/myii/ssf-formula/pull/344
detail.html NaN GiB
{% extends '_layout/navbar.html' %}
{% load utils %}
{% block nav-minions %}class="active"{% endblock %}
{% block title-extra %}{{ minion.fqdn }}{% endblock %}
{% block post-script %}
<script>
$(function() {
function toggleSystemUsers() {
$('#usertable tr').each(function(index) {
if ($(this).data('uid') < 1000) { $(this).toggle(); }
})
}
toggleSystemUsers();
$('#toggleSystemUsers').click(toggleSystemUsers);
$('#packagetable').tablesorter({
theme: 'bootstrap',
headerTemplate: '{content} {icon}',
sortList: [[0,0]],
headers: {3:{sorter:false}},
widgets: ['uitheme'],
});
$('#packagetable').filterTable({
inputSelector: '#packagetable-search',
});
})
</script>
{% endblock %}
{% block content %}
<div class="page-header">
<h1>{{ minion.fqdn }}</h1>
</div>
<div class="row">
<div class="col-md-12">
<!-- tab navigation -->
<ul class="nav nav-tabs" role="tablist">
<li role="presentation" class="active"><a href="#general" aria-controls="general" role="tab" data-toggle="tab">General</a></li>
<li role="presentation"><a href="#domains" aria-controls="domains" role="tab" data-toggle="tab">Domains</a></li>
<li role="presentation"><a href="#networks" aria-controls="networks" role="tab" data-toggle="tab">Networks</a></li>
<li role="presentation"><a {% if minion.outdated_package_count %}class="text-danger"{% endif %} href="#packages" aria-controls="packages" role="tab" data-toggle="tab">Packages</a></li>
<li role="presentation"><a href="#users" aria-controls="users" role="tab" data-toggle="tab">Users</a></li>
<li role="presentation"><a href="#partitions" aria-controls="partitions" role="tab" data-toggle="tab">Partitions</a></li>
</ul>
<!-- tab panes -->
<div class="tab-content">
<!-- general -->
<div role="tabpanel" class="tab-pane fade in active" id="general">
<div class="row">
<div class="col-lg-8">
{% block general-tab %}
<a class="text-muted pull-right" href="{% url 'minion-edit' minion.fqdn %}"><i class="fa fa-2x fa-pencil"></i></a>
{% if minion.md_content %}
<div>
{{ minion.md_content|markdownify }}
</div>
<hr>
<div class="footnote">
<i class="text-muted">Last edited {{ minion.md_last_edited|date:"d.m.y - H:i" }} from {{ minion.md_last_autor.username }}</i>
</div>
{% else %}
<i class="text-muted">No special information about this minion yet. But you can <a href="{% url 'minion-edit' minion.fqdn %}">edit</a> this section!</i>
{% endif %}
{% endblock %}
</div>
<div class="col-lg-4">
<h2>Datasheet</h2>
<table class="table datatable">
<tbody>
<tr>
<td>Operating system</td>
<td>{{ minion.data.grains.os }} {{ minion.data.grains.osrelease }} {{ minion.data.grains.oscodename }} <span class="text-muted">({{ minion.data.grains.osarch }})</span></td>
</tr>
<tr>
<td>Salt version</td>
<td>{{ minion.data.grains.saltversion }}</td>
</tr>
<tr>
<td>CPU</td>
<td>{{ minion.data.grains.num_cpus }} Cores <span class="text-muted">({{ minion.data.grains.cpuarch }})</span></td>
</tr>
<tr>
<td>RAM</td>
<td>{{ minion.data.grains.mem_total }} Mb</td>
</tr>
<tr>
<td>VM Ware status</td>
<td>
{% with minion.data.grains|get:"vmware-tools-status" as vmwarestatus %}
{% if vmwarestatus == 'NOT-INSTALLED' %}
<span class="text-danger"><i class="fa fa-fw fa-times"></i> Not installed</span>
{% elif vmwarestatus == 'OUT-OF-DATE' %}
<span class="text-warning"><i class="fa fa-fw fa-exclamation"> Out of date</i></span>
{% else %}
<span class="text-success"><i class="fa fa-fw fa-check"></i> Up to date</span>
{% endif %}
{% endwith %}
</td>
</tr>
<tr>
<td>Kernel version</td>
<td>{{ minion.data.grains.kernel }} {{ minion.data.grains.kernelrelease }}</td>
</tr>
<tr>
<td>Bios version</td>
<td>{{ minion.data.grains.biosreleasedate }}</td>
</tr>
</tbody>
</table>
<h2>SSH Configuration</h2>
<table class="table datatable">
<tbody>
<tr>
<td>Port</td>
<td>{{ minion.data.grains.openssh.port }}</td>
</tr>
<tr>
<td>Permit root login</td>
<td>
{% if minion.data.grains.openssh.permitrootlogin %}
<span class="text-danger"><i class="fa fa-fw fa-times"></i> Yes</span>
{% else %}
<span class="text-success"><i class="fa fa-fw fa-check"></i> No</span>
{% endif %}
</td>
</tr>
<tr>
<td>Permit empty passwords</td>
<td>
{% if minion.data.grains.openssh.permitemptypasswords %}
<span class="text-danger"><i class="fa fa-fw fa-times"></i> Yes</span>
{% else %}
<span class="text-success"><i class="fa fa-fw fa-check"></i> No</span>
{% endif %}
</td>
</tr>
<tr>
<td>Passwort authentication</td>
<td>
{% if minion.data.grains.openssh.passwordauthentication %}
<span class="text-danger"><i class="fa fa-fw fa-times"></i> Yes</span>
{% else %}
<span class="text-success"><i class="fa fa-fw fa-check"></i> No</span>
{% endif %}
</td>
</tr>
<tr>
<td>Public key authentication</td>
<td>
{% if minion.data.grains.openssh.pubkeyauthentication %}
<span class="text-success"><i class="fa fa-fw fa-check"></i> Yes</span>
{% else %}
<span class="text-danger"><i class="fa fa-fw fa-times"></i> No</span>
{% endif %}
</td>
</tr>
</tbody>
</table>
</div>
</div>
</div>
<!-- domains -->
<div role="tabpanel" class="tab-pane fade" id="domains">
{% if minion.domain_set.all %}
<table class="table table-hover sortable">
<thead>
<tr>
<th>Domain name (fqdn)</th>
<th>Applied minions</th>
<th>Valid</th>
<th>Public</th>
<th>HTTPS</th>
<th>SSL Lab grades</th>
</tr>
</thead>
<tbody>
{% for domain in minion.domain_set.all %}
<tr>
<td><a href="{% url 'domain-detail' domain.fqdn %}">{{ domain.fqdn }}</a></td>
<td>{{ domain.minion_count }}</td>
<td>
{% if domain.valid %}
<span class="text-success"><i class="fa fa-fw fa-check"></i> Yes</span>
{% else %}
<span class="text-danger"><i class="fa fa-fw fa-times"></i> No</span>
{% endif %}
</td>
<td>
{% if domain.public %}
<span class="text-success"><i class="fa fa-fw fa-check"></i> Yes</span>
{% else %}
<span class="text-danger"><i class="fa fa-fw fa-times"></i> No</span>
{% endif %}
</td>
<td>
{% if domain.can_speak_https %}
<span class="text-success"><i class="fa fa-fw fa-check"></i> Yes</span>
{% else %}
<span class="text-danger"><i class="fa fa-fw fa-times"></i> No</span>
{% endif %}
</td>
<td>
{% for grade in domain.ssl_lab_status.grades %}
<span class="ssllabgrade {{ grade|first|lower }}">{{ grade }}</span>
{% endfor %}
</td>
</tr>
{% endfor %}
</tbody>
</table>
{% else %}
<p><i>No domains applied to this minion.</i></p>
{% endif %}
</div>
<!-- networks -->
<div role="tabpanel" class="tab-pane fade" id="networks">
<table class="table sortable">
<thead>
<tr>
<th>Interface</th>
<th>MAC address</th>
<th>IPv4</th>
<th>Netmask</th>
</tr>
</thead>
<tbody>
{% for network in minion.networkinterface_set.all %}
<tr>
<td>{{ network.name }}</td>
<td>{{ network.mac_address }}</td>
<td>{{ network.network.ipv4 }}</td>
<td><a href="{% url 'network-detail' network.network.ipv4 %}">{{ network.network.mask }}</a></td>
</tr>
{% endfor %}
</tbody>
</table>
</div>
<!-- packages -->
<div role="tabpanel" class="tab-pane fade" id="packages">
<div class="row margin-bottom-wrapper">
<div class="col-md-6">
<div class="input-group">
<span class="input-group-addon"><i class="fa fa-search fa-fw"></i></span>
<input id="packagetable-search" class="form-control" placeholder="Suchen nach ..." type="search">
</div>
</div>
<div class="col-md-6">
{% if minion.outdated_package_count > 0 %}
<p class="next-to-input-text text-warning">
<i class="fa fa-fw fa-exclamation-triangle"></i> There are updates for <b>{{ minion.outdated_package_count }}</b> installed packages!
</p>
{% else %}
<p class="next-to-input-text text-success">
<i class="fa fa-fw fa-check"></i> Every installed package is up to date!
</p>
{% endif %}
</div>
</div>
<table id="packagetable" class="table table-hover">
<thead>
<tr>
<th>Name</th>
<th>Installed version</th>
<th>Available version</th>
<th></th>
</tr>
</thead>
<tbody>
{% for package, versions in minion.data.packages.items %}
<tr {% if versions.latest_version != '' %}class="warning"{% endif %}>
<td>{{ package }}</td>
<td>{{ versions.version }}</td>
<td>
{% if versions.latest_version != '' %}
<span class="text-warning">{{ versions.latest_version }}</span>
{% endif %}
</td>
<td>
{% if versions.latest_version == '' %}
<span class="text-success"><i class="fa fa-fw fa-check"></i></span>
{% else %}
<span class="text-warning"><i class="fa fa-fw fa-exclamation-triangle"></i></span>
{% endif %}
</td>
</tr>
{% endfor %}
</tbody>
</table>
</div>
<!-- users -->
<div role="tabpanel" class="tab-pane fade" id="users">
<button id="toggleSystemUsers" type="button" class="btn btn-default margin-bottom-wrapper" data-toggle="button" aria-pressed="false" autocomplete="off">Toggle system users</button>
<table id="usertable" class="table table-hover sortable">
<thead>
<tr>
<th>Id</th>
<th>Name</th>
<th>Home</th>
<th>Shell</th>
</tr>
</thead>
<tbody>
{% for user in minion.data.grains.users %}
<tr data-uid="{{ user.id }}">
<td>{{ user.id }}</td>
<td>{{ user.name }}</td>
<td><code>{{ user.home }}</code></td>
<td><code>{{ user.shell }}</code></td>
</tr>
{% endfor %}
</tbody>
</table>
</div>
<!-- partitions -->
<div role="tabpanel" class="tab-pane fade" id="partitions">
<table class="table table-hover sortable">
<thead>
<tr>
<th>Device</th>
<th>Mountpoint</th>
<th>FsType</th>
<th>Size</th>
<th>Used</th>
</tr>
</thead>
<tbody>
{% for device in minion.data.mounted_devices %}
<tr class="{% if device.percent > 90 %}danger{% elif device.percent > 65 %}warning{% endif %}">
<td><samp>{{ device.device }}</samp></td>
<td><samp>{{ device.mountpoint }}</samp></td>
<td>{{ device.fstype }}</td>
<td>{{ device.total|filesizeformat }}</td>
<td>{{ device.percent }} %</td>
</tr>
{% endfor %}
</tbody>
</table>
</div>
</div>
<!-- tab panes end -->
</div>
</div>
{% endblock %}