Commit Graph

503 Commits (fd4da7d3edbc60c2575d4f3485128b09630beb75)
 

Author SHA1 Message Date
Alejandro Sirgo Rica 509d0e8dcf views: fix folder/update validation
Validate request parameters before accessing the dictionary values.
Prevent web backtrace.
2024-06-14 09:25:36 +02:00
Alejandro Sirgo Rica 5d9780e8d8 js: allow selection of multiple clients in scopes sidebar
Allow the selection of multiple client checkboxes if they belong
to the same room.
Each checkbox input in the DOM has a "data-parent-room" attribute
whose value is the value of the "name" attribute of its parent
room scope component.
To check if a checkbox is a client and a sibling of the one being
checked we check if "data-parent-room" is available for both nodes
and if they have the same value.
2024-06-14 09:25:36 +02:00
Alejandro Sirgo Rica 37ae1bc5a2 ogcp: add disclosure widget to sidebar
Add cache buster to soleta.css in base.html to have control over
cache expirity.
Bump soleta.css version to ensure browser does not used older (cached)
version.
Add CSS rules to show a disclosure widget in the sidebar.
Show center checkboxes as disabled in the commands view sidebar
for visual consistency.
Add class "collapsed" to the proper HTML components to keep a
proper state on page reload.
2024-06-14 09:25:17 +02:00
Alejandro Sirgo Rica 272a5067ad src: revisit sidebar context storage approach
Maintain selections made in scope sidebar after clicking an action
(ie. client add, room delete, etc.)
Use ids instead of names as the name html property is the same for
every room and center.
Call keepSelectedClients() in macros.html for both Scope Management
and Commands instead of only in Commands.
Add a "context" value to the checkbox id to separate scope and
commands values in local storage.
2024-06-14 09:24:39 +02:00
Alejandro Sirgo Rica 0153b2b13f js: uncheck parent folder when a child folder is unchecked
Improve selection logic to deselect the checkbox of a folder's
parent when the checkbox is unchecked.

Based on work from Javier Hernandez.
2024-06-14 09:23:44 +02:00
Alejandro Sirgo Rica 5533141ae9 js: remove unused variable in showSelectedClientsOnEvents
Remove declaration of 'container' variable as it is no longer
used in the function.
2024-06-13 17:38:44 +02:00
Alejandro Sirgo Rica 3f16293fea js: show only clients in the scope pills
Exclude folders, centers servers and rooms from the scope pills so
only clients are shown.
2024-06-13 17:38:44 +02:00
Alejandro Sirgo Rica e7bafd7be9 templates: add missing center_update.html
Add html template for the route /action/center/update.
Finish the work started in commit 6ec26d16.
2024-06-13 17:38:44 +02:00
Alejandro Sirgo Rica 12f74d5a4d views: remove duplicated validation errors
Remove flash() error messages after validate_elements().
validate_elements() defines error messages for min and max
element selection from sidebar.
2024-06-13 17:38:44 +02:00
Alejandro Sirgo Rica 651589d690 templates: fix error report with multiple messages
Fix the definition of javascript code to generate a correct
message window for multiple error messages.
The error is cause by a redefinition of 'let bgclass' in multiple
lines when the html template receives multiple error messages.
Each iteration to generate the code for the error messages tries
to redefine the variable bgclass and it causes the js to fail.
2024-06-13 17:38:44 +02:00
Alejandro Sirgo Rica c2fd182fb6 views: allow scope server data in restricted user mode
Add the server scope during scope filtering for user accounts
with restricted scope access.
The HTML server scope component in the sidebar holds important
information as a hidden component. The removal of the server
scope also removes the respective HTML component in the web.
Missing server scopes result in a backtrace while trying to get
data such as server IP.
2024-06-13 17:38:44 +02:00
OpenGnSys Support Team 454999a895 views: skip non-200 OK requests to servers
Update multi_request() to skip non-200 OK requests to servers, otherwise
traceback is displayed while trying to access the json body.
2024-06-12 11:08:53 +02:00
Alejandro Sirgo Rica 95b2e20015 views: check cache presence in tiptorrent and unicast restore
Ensure a cache partition is present before trying to do a UNICAST
or TIPTORRENT image restore.
Inform the user about the lack of cache in such case.
2024-06-07 14:35:41 +02:00
Alejandro Sirgo Rica 81c4c73498 views: enable client partitioning without cache
Remove the check that disables creating a client without cache.
This is the initial step towards unicast restoration support.
2024-06-07 14:35:41 +02:00
Alejandro Sirgo Rica 26785aa88b templates: show boot mode in client pills
Add boot mode to each client pill in action/mode using js.
This makes easier to have a global perspective of the client's
configuration.
2024-06-07 14:35:41 +02:00
Alejandro Sirgo Rica b0858a7a62 templates: show image file table only if clients have a cache
Hide form table when the client's cache is empty and inform the
user about the selected clients not having images in cache.
2024-06-07 14:35:41 +02:00
Alejandro Sirgo Rica 1ae3c1a840 views: exclude 00unknown and 10 from boot mode list
Ignore '00unknown', '10' from the list of boot modes in the form
shown in action/mode.
2024-06-07 14:35:41 +02:00
Alejandro Sirgo Rica 7737a502ab views: use conventional for loop in boot mode selection
Use a conventional for loop instead of a oneliner.
Improve code readability.
2024-06-07 14:35:41 +02:00
Alejandro Sirgo Rica e136e77b56 views: show human readable boot modes
Add better visualization to the boot modes shown in /action/mode.
Use a dictinary to implement hardcoded human readble strings of
the form choices.
A better method will be implemented in the future.
2024-06-07 14:35:41 +02:00
Alejandro Sirgo Rica eb1b1c4cdf templates: show Delete Image only as admin
Hide the Delete Image in user mode using template conditionals.
A non admin account should not have access to image deletion.
2024-06-07 14:35:41 +02:00
Alejandro Sirgo Rica ff3e2d6ff4 forms: disable validation for dynamically populated select fields
Disable form validation for dynamically populated select fields,
otherwise, user hits bogus errors.

This problem was introduced by COMMIT 43e3346.
2024-06-07 14:35:12 +02:00
Alejandro Sirgo Rica e82796c902 views: fix invalid url redirection in client/server add
Remove 2 instances of redirect(url_for('servers')), this path
does not exist anymore and causes the web to show a backtrace.
2024-06-07 09:25:31 +02:00
Alejandro Sirgo Rica b3c25a827b views: validate ip in client creation and update
Check the provided IP is valid before trying to send the payload
to the server.
2024-06-05 12:43:36 +02:00
Alejandro Sirgo Rica 1d8c752901 views: enable mac update in /action/client/update
Allow MAC address modification in the client update form.
2024-06-05 12:28:50 +02:00
Alejandro Sirgo Rica acd6d20eeb views: Prevent zero or negative size partitions
Defining a partition size <1 causes the partition to show with
a different configuration to the one configured in the form.
Any <1 size partition shows as Linux, Empty and the size field
without value.
Validate the form so we refuse any partition with size <1.
2024-06-05 11:31:11 +02:00
Alejandro Sirgo Rica 4c97b671aa forms: add support for UNICAST image restore
Add UNICAST and UNICAST-DIRECT to the image restore form.
UNICAST-DIRECT will transfer the images through a samba share
and proceed with the restore process without using any cache
partition.
UNICAST will try to first copy the image to the cache partition
and generate the full.sum file. Then the restore process is
executed.
2024-06-05 09:36:46 +02:00
Alejandro Sirgo Rica 462e6fb0ad forms: set default values to partition and format
Add default values to the partition and format form component.
Prevent index None from showing in the form when the client has an
empty disk with no partitions. Now the form will be created with
an entry of index 1 in adition to  Type and Filesystem as Empty in
that case.
2024-06-04 17:14:08 +02:00
Alejandro Sirgo Rica 43e3346a4a forms: ensure ip and mac are not empty in client add form
Use the WTForms validator InputRequired to check the field
and disable the submit button if either the IP or MAC fields
have no contents.
2024-06-03 17:26:09 +02:00
Alejandro Sirgo Rica cf6794d7c8 templates: use the correct storage units
Use base 2 storage units in html templates as that's the correct
representation for the values shown in the web.
Remove units such as "Gbytes" and "MB" for their binary byte unit
counterparts.
2024-05-30 15:50:37 +02:00
Alejandro Sirgo Rica 1f18af1208 views: prevent backtrace when no server is available
Define the timestamp in the codepath executed when no server is
found active. Prevent the web to show a backtrace because the
timestamp variable is used but not defined as it is only created
when a server is found.
2024-05-30 15:50:37 +02:00
Alejandro Sirgo Rica 9cb3a952b4 ogcp: add cache management page
Implement cache management through cache/list and cache/delete
API REST methods.
The view corresponds to the URL action/cache and contains three
main parts:
- Free cache available in the client's bubbles.
- Image selection form to request the deletion and view the
client with that image in cache.
- Cache details per client to see total, used and available cache.

The main usecase for the view is the removal of cache to make room
for new images in clients with slow connections. Checking clients
where available cache space is not enough to hold the new image and
then requesting removal of specific images.

The html template receives the following structures from the view:
storage_data[ip] = {'used': 223452345,
                    'total': 2345234523452}

client_images[ip] = [f'{image_name}.{image_checksum}', ...]

image_data[f'{image_name}.{image_checksum}'] = {
    clients: ['192.168.0.1', ...],
    size: 34534530850,
    name: image_name,
}
2024-05-30 15:50:32 +02:00
Alejandro Sirgo Rica f896107375 views: check if EFI filesystem is FAT32 in partition form
Add validation for partition and format form to ensure the EFI
partition has a FAT32 filesystem assigned.
2024-05-16 12:17:21 +02:00
Alejandro Sirgo Rica 8e60e95df6 make the boot OS form work over multiple clients
Enable working over multiple clients even if their OS configuration
is different to greatly improve the user's workflow.
Group clients with the same configuration under the same checkbox
in the form.
Report clients excluded from the boot instruction due to not
matching OS configuration.
2024-05-16 12:17:21 +02:00
OpenGnSys Support Team 7daf4c9ae1 views: add EFI partition type to MBR partition scheme
Add 0xef (239) entry to display this accordingly
2024-05-14 11:48:48 +02:00
Alejandro Sirgo Rica 6c68284cb1 js: only add MAC to client pills
Ignore any room, center or folder as they don't have a MAC address.
Trying to get the MAC of an scope element without one leads to a
JS exception.
2024-05-13 16:32:10 +02:00
Alejandro Sirgo Rica 7cb006d552 views: check if repository is selected in repo/ pages
Add checks and error report about non selected repository.
Non having a repository selected caused a traceback to be shown
in the web.
2024-05-13 10:45:19 +02:00
Alejandro Sirgo Rica 1ca3a97da7 js: remove console.log statement
Remove print statement generating noise in the browser logs.
2024-05-13 10:30:26 +02:00
Alejandro Sirgo Rica 7299b157d7 remove Format field from partition setup form
Remove the 'Format' field from the Partition and Format form as
the default value will always be to format the partitions.
This will lead to less portantial codepaths to maintain and
support and less manual clicks in the web form.
2024-05-13 10:07:52 +02:00
Alejandro Sirgo Rica 2b905ddcaf js: prevent js exception in pages without pill control
Add check to test if a pill control has been found and don't try
to add mac data to non existent client pill controls.
2024-05-13 10:07:47 +02:00
Alejandro Sirgo Rica 17f8b25fe5 views: ensure only one cache partition is defined
Add validation for the case where the user defines more than one
CACHE partition in the Partition and Format form.
2024-05-13 10:07:31 +02:00
Alejandro Sirgo Rica 6034ba2537 Make partition id non editable in partition form
Show the partition id as a non editable label in each partition
of the Partition and Format form.
Assign sequential partition id from top to down and recalculate
every partition id when a partition is removed.
2024-05-12 14:59:53 +02:00
Alejandro Sirgo Rica a04ef4e421 js: fix id update in partition form deletion
Update all the name and id fields of the elements in the partition
form after a delete operation.
Inconsistent ids make form.validate() to always return False, this
causes all the form validation code to be skipped.
2024-05-10 16:21:21 +02:00
Alejandro Sirgo Rica 0ba0b933e2 views: check target partition size in image restore
Compare image data size with the size of the target partition and
show an error if the size is not enough for the operation.
2024-05-09 14:21:19 +02:00
Alejandro Sirgo Rica 30562a9af5 views: prevent image restore on invalid partition types
Add partition type info to the form data.
Check if the user is trying to restore on an invalid partition
type and report an error if that's the case. The invalid types are
'EMPTY', 'LINUX-SWAP', 'CACHE', 'EFI' and 'WIN-RECOV'.
2024-05-09 12:00:58 +02:00
Alejandro Sirgo Rica dd77bc380e views: report error when spaces are found in image name
Validate imagen names in POST /action/image/create.
Remove spaces at the begining and end of the image name, then
report error if the image name still contains space characters.
2024-05-09 09:27:19 +02:00
OpenGnSys Support Team 6f488ae251 forms: remove EXFAT
ogclient does not support this filesystem type, remove it.
2024-05-07 11:10:05 +02:00
OpenGnSys Support Team f6f84cf8b2 views: use PART_TYPE_CODES, not PART_CODES 2024-02-21 10:38:52 +01:00
OpenGnSys Support Team f18f989011 views: unmatched ] in use getter to access PART_TYPE_CODES and FS_CODES 2024-02-21 10:32:20 +01:00
OpenGnSys Support Team ca1af1776d views: use getter to access PART_TYPE_CODES and FS_CODES
otherwise KeyError is raised on access to undefine value in the dictionary.
2024-02-21 10:09:15 +01:00
OpenGnSys Support Team 8fa2d07134 views: call POST /refresh from get_client_setup()
Refresh the disk layout before any command that displays it, no need to manually
call command -> refresh.

this cannot be skipped, POST /setup is an asynchronous invocation in ogserver is
asynchronous, POST /refresh provides the existing disk layout, otherwise it
shows the existing layout in the database which is not complete.

this is also good in case someone manipulates the disk from the command line.
2024-02-19 12:31:21 +01:00