diff options
author | Javier Hernandez <jhernandez@soleta.eu> | 2023-12-22 12:08:49 +0100 |
---|---|---|
committer | OpenGnSys Support Team <soporte-og@soleta.eu> | 2023-12-22 12:21:26 +0100 |
commit | 1497e500cb0a11689796cfb2fd4aabeb89f72b58 (patch) | |
tree | b46bb9476b27c99225b9e4917af3916e4e8ad537 /ogcp | |
parent | 01977dcd669d7eedc4fde45f8e9a07e991acf72e (diff) |
Warn if clients have different boot modes
Show user, when attempting to change the bootmode of more than one
client with different boot modes, a warning and a table with said
bootmodes.
Diffstat (limited to 'ogcp')
-rw-r--r-- | ogcp/templates/actions/mode.html | 26 | ||||
-rw-r--r-- | ogcp/views.py | 16 |
2 files changed, 41 insertions, 1 deletions
diff --git a/ogcp/templates/actions/mode.html b/ogcp/templates/actions/mode.html index 131097a..87ce59d 100644 --- a/ogcp/templates/actions/mode.html +++ b/ogcp/templates/actions/mode.html @@ -15,6 +15,32 @@ {{ _('Changing boot mode of %(ip_count)d computer(s)', ip_count=ip_count) }} </h1> +{% if modes_set|length > 1 %} + <h3 class="text-danger">WARNING</h3> + <p>Selected clients have different boot modes set</p> + + <table class="table table-hover"> + <thead class="thead-light"> + <tr> + <th>Boot modes</th> + <th>Clients</th> + </tr> + </thead> + <tbody class="text-left"> + {% for mode, clients in modes_set.items() %} + <tr> + <th>{{mode}}</th> + <td> + {% for client in clients %} + {{client}} + {% endfor %} + </td> + </tr> + {% endfor %} + </tbody> + </table> +{% endif %} + {{ macros.cmd_selected_clients(selected_clients) }} {{ wtf.quick_form(form, diff --git a/ogcp/views.py b/ogcp/views.py index 9a88bbc..ba9f1a3 100644 --- a/ogcp/views.py +++ b/ogcp/views.py @@ -1172,6 +1172,19 @@ def action_client_delete(): else: return redirect(url_for('scopes')) +def get_clients_modes(ips, server): + modes = {} + for ip in ips: + r = server.get('/client/info', payload={"client": [ip]}) + resp = r.json() + current_boot = resp['boot'] + client_name = resp['name'] + if current_boot not in modes: + modes[current_boot] = [client_name] + else: + modes[current_boot].append(client_name) + return modes + @app.route('/action/mode', methods=['GET', 'POST']) @login_required def action_mode(): @@ -1195,6 +1208,7 @@ def action_mode(): return redirect(url_for('commands')) server = get_server_from_clients(ips) + modes_set = get_clients_modes(ips, server) r = server.get('/mode') available_modes = [(mode, mode) for mode in r.json()['modes']] form.boot.choices = list(available_modes) @@ -1204,7 +1218,7 @@ def action_mode(): selected_clients = list(get_selected_clients(scopes['scope']).items()) return render_template('actions/mode.html', form=form, scopes=scopes, selected_clients=selected_clients, - clients=clients) + clients=clients, modes_set=modes_set) @app.route('/action/oglive', methods=['GET', 'POST']) |