summaryrefslogtreecommitdiffstats
path: root/ogcp
Commit message (Collapse)AuthorAgeFilesLines
...
* views: fix folder/update validationAlejandro Sirgo Rica2024-06-141-2/+2
| | | | | Validate request parameters before accessing the dictionary values. Prevent web backtrace.
* js: allow selection of multiple clients in scopes sidebarAlejandro Sirgo Rica2024-06-142-3/+16
| | | | | | | | | | | 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.
* ogcp: add disclosure widget to sidebarAlejandro Sirgo Rica2024-06-144-3/+19
| | | | | | | | | | | | 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.
* src: revisit sidebar context storage approachAlejandro Sirgo Rica2024-06-143-19/+24
| | | | | | | | | | | 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.
* js: uncheck parent folder when a child folder is uncheckedAlejandro Sirgo Rica2024-06-141-1/+1
| | | | | | | Improve selection logic to deselect the checkbox of a folder's parent when the checkbox is unchecked. Based on work from Javier Hernandez.
* js: remove unused variable in showSelectedClientsOnEventsAlejandro Sirgo Rica2024-06-131-1/+0
| | | | | Remove declaration of 'container' variable as it is no longer used in the function.
* js: show only clients in the scope pillsAlejandro Sirgo Rica2024-06-131-10/+8
| | | | | Exclude folders, centers servers and rooms from the scope pills so only clients are shown.
* templates: add missing center_update.htmlAlejandro Sirgo Rica2024-06-131-0/+18
| | | | | Add html template for the route /action/center/update. Finish the work started in commit 6ec26d16.
* views: remove duplicated validation errorsAlejandro Sirgo Rica2024-06-131-2/+0
| | | | | | Remove flash() error messages after validate_elements(). validate_elements() defines error messages for min and max element selection from sidebar.
* templates: fix error report with multiple messagesAlejandro Sirgo Rica2024-06-131-2/+4
| | | | | | | | | 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.
* views: allow scope server data in restricted user modeAlejandro Sirgo Rica2024-06-131-1/+1
| | | | | | | | | | 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.
* views: skip non-200 OK requests to serversOpenGnSys Support Team2024-06-121-0/+3
| | | | | Update multi_request() to skip non-200 OK requests to servers, otherwise traceback is displayed while trying to access the json body.
* views: check cache presence in tiptorrent and unicast restoreAlejandro Sirgo Rica2024-06-071-2/+10
| | | | | | 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.
* views: enable client partitioning without cacheAlejandro Sirgo Rica2024-06-071-4/+0
| | | | | Remove the check that disables creating a client without cache. This is the initial step towards unicast restoration support.
* templates: show boot mode in client pillsAlejandro Sirgo Rica2024-06-071-0/+18
| | | | | | 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.
* templates: show image file table only if clients have a cacheAlejandro Sirgo Rica2024-06-071-0/+6
| | | | | Hide form table when the client's cache is empty and inform the user about the selected clients not having images in cache.
* views: exclude 00unknown and 10 from boot mode listAlejandro Sirgo Rica2024-06-071-1/+3
| | | | | Ignore '00unknown', '10' from the list of boot modes in the form shown in action/mode.
* views: use conventional for loop in boot mode selectionAlejandro Sirgo Rica2024-06-071-1/+5
| | | | | Use a conventional for loop instead of a oneliner. Improve code readability.
* views: show human readable boot modesAlejandro Sirgo Rica2024-06-071-2/+12
| | | | | | | 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.
* templates: show Delete Image only as adminAlejandro Sirgo Rica2024-06-071-0/+2
| | | | | Hide the Delete Image in user mode using template conditionals. A non admin account should not have access to image deletion.
* forms: disable validation for dynamically populated select fieldsAlejandro Sirgo Rica2024-06-071-3/+3
| | | | | | | Disable form validation for dynamically populated select fields, otherwise, user hits bogus errors. This problem was introduced by COMMIT 43e3346.
* views: fix invalid url redirection in client/server addAlejandro Sirgo Rica2024-06-071-2/+2
| | | | | Remove 2 instances of redirect(url_for('servers')), this path does not exist anymore and causes the web to show a backtrace.
* views: validate ip in client creation and updateAlejandro Sirgo Rica2024-06-051-0/+14
| | | | | Check the provided IP is valid before trying to send the payload to the server.
* views: enable mac update in /action/client/updateAlejandro Sirgo Rica2024-06-051-1/+0
| | | | Allow MAC address modification in the client update form.
* views: Prevent zero or negative size partitionsAlejandro Sirgo Rica2024-06-051-0/+4
| | | | | | | | 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.
* forms: add support for UNICAST image restoreAlejandro Sirgo Rica2024-06-051-1/+3
| | | | | | | | | | 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.
* forms: set default values to partition and formatAlejandro Sirgo Rica2024-06-041-3/+6
| | | | | | | | 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.
* forms: ensure ip and mac are not empty in client add formAlejandro Sirgo Rica2024-06-032-2/+9
| | | | | | Use the WTForms validator InputRequired to check the field and disable the submit button if either the IP or MAC fields have no contents.
* templates: use the correct storage units1.1.3-20Alejandro Sirgo Rica2024-05-303-12/+12
| | | | | | | 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.
* views: prevent backtrace when no server is availableAlejandro Sirgo Rica2024-05-301-0/+1
| | | | | | | 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.
* ogcp: add cache management pageAlejandro Sirgo Rica2024-05-304-1/+301
| | | | | | | | | | | | | | | | | | | | | | | | | | | | 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, }
* views: check if EFI filesystem is FAT32 in partition formAlejandro Sirgo Rica2024-05-161-0/+4
| | | | | Add validation for partition and format form to ensure the EFI partition has a FAT32 filesystem assigned.
* make the boot OS form work over multiple clientsAlejandro Sirgo Rica2024-05-163-19/+79
| | | | | | | | | 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.
* views: add EFI partition type to MBR partition schemeOpenGnSys Support Team2024-05-141-0/+1
| | | | Add 0xef (239) entry to display this accordingly
* js: only add MAC to client pills1.1.3-19Alejandro Sirgo Rica2024-05-132-2/+4
| | | | | | 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.
* views: check if repository is selected in repo/ pagesAlejandro Sirgo Rica2024-05-131-0/+12
| | | | | | Add checks and error report about non selected repository. Non having a repository selected caused a traceback to be shown in the web.
* js: remove console.log statementAlejandro Sirgo Rica2024-05-132-2/+1
| | | | Remove print statement generating noise in the browser logs.
* remove Format field from partition setup formAlejandro Sirgo Rica2024-05-133-5/+2
| | | | | | | 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.
* js: prevent js exception in pages without pill controlAlejandro Sirgo Rica2024-05-132-1/+6
| | | | | 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.
* views: ensure only one cache partition is definedAlejandro Sirgo Rica2024-05-131-3/+7
| | | | | Add validation for the case where the user defines more than one CACHE partition in the Partition and Format form.
* Make partition id non editable in partition formAlejandro Sirgo Rica2024-05-125-11/+16
| | | | | | | 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.
* js: fix id update in partition form deletionAlejandro Sirgo Rica2024-05-102-3/+5
| | | | | | | 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.
* views: check target partition size in image restoreAlejandro Sirgo Rica2024-05-091-4/+12
| | | | | Compare image data size with the size of the target partition and show an error if the size is not enough for the operation.
* views: prevent image restore on invalid partition typesAlejandro Sirgo Rica2024-05-091-2/+9
| | | | | | | 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'.
* views: report error when spaces are found in image nameAlejandro Sirgo Rica2024-05-091-1/+6
| | | | | | 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.
* forms: remove EXFATOpenGnSys Support Team2024-05-071-1/+0
| | | | ogclient does not support this filesystem type, remove it.
* views: use PART_TYPE_CODES, not PART_CODES1.1.3-18OpenGnSys Support Team2024-02-211-1/+1
|
* views: unmatched ] in use getter to access PART_TYPE_CODES and FS_CODES1.1.3-17OpenGnSys Support Team2024-02-211-2/+2
|
* views: use getter to access PART_TYPE_CODES and FS_CODES1.1.3-16OpenGnSys Support Team2024-02-211-8/+8
| | | | otherwise KeyError is raised on access to undefine value in the dictionary.
* views: call POST /refresh from get_client_setup()OpenGnSys Support Team2024-02-191-1/+9
| | | | | | | | | | | 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.