From 15f5af00e73bac87d329d47de257cad50a591b06 Mon Sep 17 00:00:00 2001 From: Alejandro Sirgo Rica Date: Mon, 2 Sep 2024 16:15:21 +0200 Subject: templates: show excluded clients from partition operation Show the list of IPs of the clients withut the selected disk to partition in the partition and format form. --- ogcp/templates/disk_inspector.html | 33 +++++++++++++++++++++++++++------ ogcp/views.py | 14 +++++++++++--- 2 files changed, 38 insertions(+), 9 deletions(-) diff --git a/ogcp/templates/disk_inspector.html b/ogcp/templates/disk_inspector.html index 90a8996..0b9ab4f 100644 --- a/ogcp/templates/disk_inspector.html +++ b/ogcp/templates/disk_inspector.html @@ -1,6 +1,6 @@ {% if selected_disk is defined and setup_data is defined %} -
+ {{ disk_form.hidden_tag() }} {{ disk_form.ips() }} @@ -85,18 +85,24 @@
- +
+
+
+ +
+ {% if not readonly_disk_inspector is defined %} {% endif %} +
-
+
{{ _('Partition graph') }}
@@ -115,6 +121,10 @@ let selectedDisk = {{selected_disk}}; let setupData = {{setup_data|tojson|safe}} + +{% if excluded_client_disks is defined %} + let excludedClientDisks = {{excluded_client_disks|tojson|safe}} +{% endif %} let diskSize = 0; let chartConfig = { @@ -291,6 +301,17 @@ } updatePartitionChart(); + +{% if excluded_client_disks is defined %} + let missingClientsText = ""; + if (excludedClientDisks[selectedDisk].length) { + missingClientsText = "

{{ _('Clients missing the target disk:') }}

"; + } + for (const c of excludedClientDisks[selectedDisk]) { + missingClientsText += '
' + c + '
'; + } + $('#clientWarningMsg').html(missingClientsText); +{% endif %} } function handleDiskChange(selectElement) { diff --git a/ogcp/views.py b/ogcp/views.py index 397831e..4fa14a9 100644 --- a/ogcp/views.py +++ b/ogcp/views.py @@ -697,9 +697,12 @@ def get_common_disk_data(ips): } break - for disk_id in disk_data: - if disk_id not in setup_data: - disk_data[disk_id]['excluded'].append(ip) + for disk_id in disk_data: + disk_ips = [] + for disk_size in disk_data[disk_id]['inventory']: + disk_ips.extend(disk_data[disk_id]['inventory'][disk_size]) + + disk_data[disk_id]['excluded'] = [ip for ip in ips if ip not in disk_ips] return disk_data @@ -775,6 +778,10 @@ def action_setup_show(): for disk in setup_data: setup_data[disk][0]['size'] = common_disk_data[disk]['common_size'] + excluded_client_disks = {} + for disk in common_disk_data: + excluded_client_disks[disk] = common_disk_data[disk]['excluded'] + form = SetupForm() form.ips.data = ips_str @@ -785,6 +792,7 @@ def action_setup_show(): scopes, _clients = get_scopes(ips) return render_template('actions/setup.html', + excluded_client_disks=excluded_client_disks, selected_disk=selected_disk, setup_data=setup_data, disk_form=form, -- cgit v1.2.3-18-g5258