summaryrefslogtreecommitdiffstats
path: root/ogcp/views.py
Commit message (Collapse)AuthorAgeFilesLines
* views: normalize every MAC address during POST processingAlejandro Sirgo Rica2024-07-031-3/+6
| | | | | | | | | | Use aabbccddeeaa as MAC format in every payload. List of accepted MAC formats: aabbccddeeaa aa:bb:cc:dd:ee:aa aa-bb-cc-dd-ee-aa aa.bb.cc.dd.ee.aa
* views: remove debug messages with payload infoAlejandro Sirgo Rica2024-07-011-2/+2
| | | | Remove print statements in views.py to reduce logging noise.
* views: add check for failed /center/info get requestAlejandro Sirgo Rica2024-06-281-0/+6
| | | | Check if the request response is null and report it to the user.
* views: notify user edit and user creationAlejandro Sirgo Rica2024-06-281-4/+8
| | | | Show a flash message when an user is created or edited successfully.
* views: fix English grammatical error in error messageAlejandro Sirgo Rica2024-06-281-5/+5
| | | | Replace "do not exists" with "does not exist" in error messages.
* ogcp: add user permission mechanismAlejandro Sirgo Rica2024-06-271-3/+69
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | Add a new user permission system to control the allowed operations accessible from each account. Add a permission matrix editable through the user/add and user/edit views. The permission matrix has client, center, room, folder, image and repository as permission targets and add, update and delete as permission types. Restrict each view based on the user permissions, hide all actions from not autheticated users. permissions defined in the class UserForm. Serialize each user permissions into ogcp.json as: { ... "USERS" [ { "USER": "admin" ... "PERMISSIONS": { "CLIENT": { "ADD": true, "UPDATE": true, "DELETE": true, }, ... <- same structure for "CENTER", "ROOM", "FOLDER", "IMAGE" and "REPOSITORY" } }, ... ], ... } Grant all the permissions to old user configuration to not disrupt their workflow. The administrator will need to assign the permissions for each user. Ignore scope and permission restrictions for admin users. Save permissions and scopes even if the user is admin to account for the case of a temporal admin promotion without losing the previous configuration. Use template inheritance for add_user.html and edit_user.html to prevent big code duplication with the new HTML code to render the permission matrix. Make user administration an admin only feature. Define methods get_permission and target_is_disabled to improve readability in template conditionals that disable features based on user permissions.
* ogcp: add support to view script outputAlejandro Sirgo Rica2024-06-251-0/+42
| | | | | | | | | | Add view at /action/script/output to visualize the result of /shell/run for multiple clients. Use shell/output to request the execution data of the selected clients. Each client element has execution timestamip (UTC), client ip, cmd, return code and stdout of the executed command.
* ogcp: add support to run scripts in clientsAlejandro Sirgo Rica2024-06-251-1/+70
| | | | | | | | Add view at /action/script/run to visualize the available scripts and run a single script file in the selected clients. Use shell/list to request the script list and shell/run API call to request the execution.
* views: remove unsupported partition types from image operationsAlejandro Sirgo Rica2024-06-251-12/+31
| | | | | | | | | | | Prevent unexpected behaviour in image operations caused by user error. Remove partitions of type 'EMPTY', 'LINUX-SWAP', 'CACHE' and 'EFI' from the image/create, image/restore and image/update forms. Remove check for the existence of these partitions in action_image_restore as they are no longer available in the form.
* views: prevent user removal after password mismatch in user/editAlejandro Sirgo Rica2024-06-191-2/+6
| | | | | | | | | | | If password and confirm password fields mismatch in user/edit, then the user is deleted. The deletion of the user happens before the password validation and the new user configuration is only saved if the validation passes. Add code to properly handle the user deletion after the validation.
* views: make password optional in user/editAlejandro Sirgo Rica2024-06-191-12/+20
| | | | | | | | | Add the option to leave the password fields empty in the form. When the passwords are not set the user keeps the old password configuration. Define a EditUserForm based on UserForm in forms/auth.py to remove the InputRequired validator in the password fields. Update the html template to make the password fields optional.
* views: improve cache check messages in image/restoreAlejandro Sirgo Rica2024-06-191-2/+2
| | | | | Improve the wording of the error message reporting the clients without enough cache to hold the image to be restored.
* views: check if the image fits in cache before image/restoreAlejandro Sirgo Rica2024-06-181-0/+33
| | | | | | | | | Check if the image to be restored fits in the client's cache to provide a better feedback for a failed restore operation. Report the needed free space in clients where it does not fit. Only check if the reported image size is not 0, older images may not define the "size" attribute. Ignore the check if the restore type is UNICAST-DIRECT.
* views: ignore image datasize check if datasize is zeroAlejandro Sirgo Rica2024-06-181-1/+1
| | | | | | Check the restored image fits in the target partition only if the datasize value is not zero. Proceed with the check before the image/restore request otherwise.
* ogcp: add room details view to scopes managementAlejandro Sirgo Rica2024-06-171-0/+32
| | | | | | Add a readonly view for the room data. Mark all the form fields as readonly and set the hidden attribute to the submit field.
* ogcp: add center details view to scopes managementAlejandro Sirgo Rica2024-06-171-0/+36
| | | | | | Add a readonly view for the center data. Mark all the form fields as readonly and set the hidden attribute to the submit field.
* views: fix image restore cache checks1.1.3-22Alejandro Sirgo Rica2024-06-171-2/+3
| | | | | | | Fix the scope of the has_cache variable to reset the value for each client. Check the partition type based on the PART_TYPE_CODES string version instead of the numerical value of the partition type.
* ogcp: add move client to scopes managementAlejandro Sirgo Rica2024-06-171-1/+62
| | | | | | | | | | Add front end for the client/move REST API. Enable the move of multiple clients selected from the sidebar of Scopes Management. Show the target of the move operation as a list of paths in a dropdown widget in the form. Each path will be structured as: Server/Center/Room The path will also contain folders if they are present.
* ogcp: fix restricted user mode1.1.3-21Alejandro Sirgo Rica2024-06-141-18/+13
| | | | | | | | | | | | | | Match user enabled scopes as numerical id instead of the scope name. Rename get_available_scopes to get_center_choices and add only center data. This function returns the list of values used to validate the data returned by the form (form.scopes.choices). Fix scope filtering to only allow the scopes stored in the user configuration. The filtering removes the scopes of type 'center' from the scopes dictionary when the center id is not present in the list of available scopes for the logged user.
* views: fix center/update validation with no selectionAlejandro Sirgo Rica2024-06-141-3/+3
| | | | | | | Check no center selection before missing server data. Lack of checkbox selection will not carry server data as server information is defined based on the components selected. Report no center selection instead of lack server data in that case.
* views: fix folder/update validationAlejandro Sirgo Rica2024-06-141-2/+2
| | | | | Validate request parameters before accessing the dictionary values. Prevent web backtrace.
* 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.
* 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.
* 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.
* 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: ensure ip and mac are not empty in client add formAlejandro Sirgo Rica2024-06-031-0/+5
| | | | | | Use the WTForms validator InputRequired to check the field and disable the submit button if either the IP or MAC fields have no contents.
* 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-301-1/+98
| | | | | | | | | | | | | | | | | | | | | | | | | | | | 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-161-13/+47
| | | | | | | | | 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
* 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.
* remove Format field from partition setup formAlejandro Sirgo Rica2024-05-131-2/+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.
* 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-121-7/+7
| | | | | | | 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.
* 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.
* 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.