From 1ce9c8a95b7677f3131160df62d9a3ce73f4706a Mon Sep 17 00:00:00 2001 From: Roberto Hueso Gómez Date: Tue, 15 Sep 2020 13:39:05 +0200 Subject: Fix setup partitions filesystem codes to string Partition filesystem are encoded with integers in the DB. We need to send the type string instead of the encoded integer, so this patch parses the encoded integer to string. --- ogcp/views.py | 51 +++++++++++++++++++++++++++++++++++++++------------ 1 file changed, 39 insertions(+), 12 deletions(-) diff --git a/ogcp/views.py b/ogcp/views.py index 22ce379..13ad3b6 100644 --- a/ogcp/views.py +++ b/ogcp/views.py @@ -5,6 +5,22 @@ from flask_babel import _ from ogcp import app import requests +FS_CODES = { + 0: 'DISK', + 1: 'EMPTY', + 2: 'CACHE', + 6: 'EXT4', + 13: 'NTFS' +} + +PART_TYPE_CODES = { + 0: 'EMPTY', + 1: 'DISK', + 7: 'NTFS', + 131: 'LINUX', + 218: 'DATA' +} + def parse_ips(checkboxes_dict): ips = set() for key, ips_list in checkboxes_dict.items(): @@ -12,6 +28,15 @@ def parse_ips(checkboxes_dict): ips.update(ips_list.split(' ')) return ips +def get_client_setup(ip): + payload = payload = {'client': list(ip)} + r = g.server.get('/client/setup', payload) + db_partitions = r.json()['partitions'] + for partition in db_partitions: + partition['code'] = PART_TYPE_CODES[partition['code']] + partition['filesystem'] = FS_CODES[partition['filesystem']] + return db_partitions + @app.before_request def load_config(): g.server = OGServer() @@ -77,15 +102,15 @@ def action_wol(): @app.route('/action/setup', methods=['GET']) def action_setup_show(): ips = parse_ips(request.args.to_dict()) - payload = {'client': list(ips)} - r = g.server.get('/client/setup', payload) - db_partitions = r.json()['partitions'] + db_partitions = get_client_setup(ips) forms = [PartitionForm() for _ in db_partitions] forms = list(forms) for form, db_part in zip(forms, db_partitions): form.ips.data = " ".join(ips) form.disk.data = db_part['disk'] form.partition.data = db_part['partition'] + form.part_type.data = db_part['code'] + form.fs.data = db_part['filesystem'] form.size.data = db_part['size'] form.modify.render_kw = {"formaction": url_for('action_setup_modify')} form.delete.render_kw = {"formaction": url_for('action_setup_delete')} @@ -96,7 +121,7 @@ def action_setup_modify(): form = PartitionForm(request.form) if form.validate(): ips = form.ips.data.split(' ') - r = g.server.get('/client/setup', payload={'client': ips}) + db_partitions = get_client_setup(ips) payload = {'clients': ips, 'disk': str(form.disk.data), @@ -104,16 +129,18 @@ def action_setup_modify(): 'cache_size': str(0), 'partition_setup': []} - for i in range(1,5): - partition_placeholder = {'partition': str(i), - 'filesystem': 'EMPTY', - 'code': 'EMPTY', - 'size': str(0), - 'format': str(int(False))} - payload['partition_setup'].append(partition_placeholder) + for db_part in db_partitions: + if db_part['partition'] == 0: + # Skip if this is disk setup. + continue + partition_setup = {'partition': str(db_part['partition']), + 'code': db_part['code'], + 'filesystem': db_part['filesystem'], + 'size': str(db_part['size']), + 'format': str(int(False))} + payload['partition_setup'].append(partition_setup) modified_part = payload['partition_setup'][int(form.partition.data) - 1] - modified_part['partition'] = str(form.partition.data) modified_part['filesystem'] = str(form.fs.data) modified_part['code'] = str(form.part_type.data) modified_part['size'] = str(form.size.data) -- cgit v1.2.3-18-g5258