Skip to content
Snippets Groups Projects
Select Git revision
  • 72c64adbea8f2e31c3b6d6bb54b5f6f9e6e9437d
  • master default
  • fresh_master
3 results

kitchen.yml

Blame
  • 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 %}