Commit Graph

491 Commits (d00e437b8d76bc32732643a92f0ea32fbe0b7901)

Author SHA1 Message Date
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
Javier Hernandez 6ec26d161e views: add update center
add view to update center data such as its name or comment.
2024-02-09 13:21:55 +01:00
Javier Hernandez a609ede7a8 views: Add update room
Add view to modify room information such as name, gateway and netmask
2024-02-09 13:17:29 +01:00
Javier Hernandez d953700576 views: Add edit-folder
Add view to modify folder information such as name
2024-02-05 13:17:51 +01:00
OpenGnSys Support Team 5c3f700937 views: provide a hint in list images that one or more can be select
Provide an indication that one or more images can be selected.
2024-02-05 12:16:18 +01:00
OpenGnSys Support Team 685b34d56d templates: remove Server: and Repo: in list images
Although ogcp support for multiple server, the plan is to only support for one
server in this version.

Remove Server: context information and Repo: in list images
2024-02-05 12:11:50 +01:00
Javier Hernandez 7955baf35c views: preselect pxe boot mode in add client
preselect 'pxe' (if available) at adding a new client.

use a dedicated template for adding a client and remove irrelevant
partition table; client has yet to set its partition, so everytime, the
table would load empty.
2024-02-05 12:08:48 +01:00
Javier Hernandez 6153ca426f improve delete confirmation
Make delete confirmations show information in a manner that is easier to
read. This includes delete confirmations for centers, room and folder.

Messages are now more clear. Also, content table shows the type of the
items (folder, room, etc.)
2024-02-05 11:48:35 +01:00
Javier Hernandez 6a134b6337 Make list_images show only selected images
Make list images command show only information of the images the user
has selected in the sidebar.

Improve readability of the information.

Show size and data size attributes rounded

Warn the user if no images have been selected in sidebar
2024-02-02 12:48:28 +01:00
Javier Hernandez a41ad5eec6 views: Fix client-info form not fully read-only
fix some fields (boot-mode and oglive) in client-info form that, despite being flagged as
read-only, allowed the user to change values.
2024-02-01 12:01:32 +01:00
Javier Hernandez 85a22b9b81 improve delete confirmation page
In delete-center, delete-room and delete-folder confirmation pages, show
the ancestors of the items about to delete. Likewise, show the items it
contains.

For example, if user is about to delete a room, confirmation page will
display in which center it is contained and the clients and folder it
has inside
2024-02-01 11:20:04 +01:00
Javier Hernandez 556e06cc3d Add list images action
Add list images action that shows a list of all the images in each
server and their properties
2024-01-30 11:29:57 +01:00
Javier Hernandez 5892d5c8c3 templates: show folder icon
Add icons to differentiate folders.

Use &#x1F4C1; which represents folder using emojis.
2024-01-30 10:53:38 +01:00
Javier Hernandez db63b6bc60 views: Preselect most used oglive
When setting up oglive, preselect oglive that is most used by selected
clients. If only one client is selected, preselect that of the client.

In the unusual scenario where a client is set with an oglive that is not
in the ogserver's list of available oglives, preselect default.
2024-01-29 11:26:08 +01:00
Javier Hernandez a45f664905 dashboard: Show all servers, online or offline
Show in dashboard the list of all servers, regardless if they are online
or offline. If they are offline, uptime appears as 'offline'

Modify dashboard template to make it work with offline servers
2024-01-29 11:18:18 +01:00
OpenGnSys Support Team 7c86ecf9a1 views: remove one level of indentation in action_image_restore
r.status_code == requests.codes.ok is redundant, already checked for error,
remove this check and save one level of indentation.
2024-01-25 12:44:27 +01:00
OpenGnSys Support Team 8260cd0ac2 views: consolidate server error reporting
use ogserver_down() and ogserver_error()
2024-01-25 12:28:02 +01:00
Javier Hernandez 34a7cd4c4f views: Check HTTP GET response from ogserver (part 2)
Check that connection to ogserver works and GET response is ok.
Otherwise, show error message to the user and redirect.

If there is an error while talking to server, a serverError or a
serverErrorCode is raised so that it is possible to differentiate from
different errors and give an appropiate error to the user
2024-01-25 12:16:53 +01:00
Javier Hernandez a453d5fa87 views: Check HTTP GET response from ogserver
Check that GET response is ok. Otherwise, show error message to the user
and redirect
2024-01-24 13:01:48 +01:00
Javier Hernandez 7d55fd76d4 translations: update translations
Update Spanish and Catalan translations

And use _ in folder support
2024-01-24 10:23:17 +01:00
Javier Hernandez 55433f3d00 views: do not use '_' variable, it causes conflict with babel gettext()
Do not use the '_' variable, this causes a conflict with babel gettext() alias
'_' that results in a traceback.
2024-01-24 10:11:06 +01:00
Javier Hernandez ef46aa0599 views: Add client's name in action/setup/select
Show client's name (next to client's ip) in selectable in
action/setup/select form.
2024-01-22 19:43:24 +01:00
Javier Hernandez 4060b64612 views: Fix traceback due to missing translation
Fix crash when adding a folder if no room or center is selected
because no translation is available.

plan is to update translations in a follow up patch.
2024-01-22 19:41:42 +01:00
Javier Hernandez 3b319a17a8 views: Display error if partitions are not available
Display an error if the user tries to partition and format a client that
has no partition info available
2024-01-22 11:15:04 +01:00
Javier Hernandez 42f8ea9e40 views: Display error if software inventory are not available
Display an error if the user tries to view software inventory but it is
yet not available
2024-01-22 11:15:00 +01:00
Javier Hernandez 8cd2f75d51 views: Fix wrong room in client details
Fix incorrect room showing in client-details command.
2024-01-22 11:09:37 +01:00
Javier Hernandez 7645020595 views: Add checking that no folder is selected
Check that, when adding a new folder there is no other folders checked.
It is only allowed to add folders to either centers or rooms
2024-01-19 13:34:24 +01:00
Javier Hernandez 3844a3a48a templates: Add versioning to avoid browser caching ogcp.js errors
Add version parameter to ogcp.js url. This is so that, if ogcp.js is
modified, the browser is able to see that that file has been changed and
that it has to load the new version instead of acquiring it from cache.

We have experienced stranged errors, related to browsers caching old
javascript files, leading to python flask backend backtraces
2024-01-19 13:19:24 +01:00
Javier Hernandez 1847206ba1 views: Fix unable to aquire server from ips
Fix get_server_from_clients() not working when selecting empty computer
folders in sidebar.

Previously, parse_elements was wrongly parsing folders. That produced a
erronous list of ips and when fed to get_server_from_clients() it would
fail.
2024-01-19 12:58:17 +01:00
Javier Hernandez 3685308ec9 templates: stilistic change in mode template
Remove warning header and show selected clients above boot-mode tables
2024-01-19 11:05:05 +01:00
Javier Hernandez b6b16f895e views: preselect most used bootmode
In "set boot-mode" preselect bootmode that is most used by the clients
selected.
2024-01-18 17:04:59 +01:00
Javier Hernandez cfd98c664b templates: fix wrong navigation details
Fix wrong navigation details in template select_client.
2024-01-18 10:27:09 +01:00
Javier Hernandez 4acb37d8c5 views: fix client update form crashing
Fix client update view crashing due to missing images variable.

Check if GET /images fails.
2024-01-18 10:26:28 +01:00
Javier Hernandez 02b6059c70 views: add an action to view repo details
Add an action to allow the user to view details (name and ip) of a
particular repo.
2024-01-16 13:25:42 +01:00
Javier Hernandez bf90e91e24 views: Fix bug in images view
Fix unusable image view when an image has a repo associated that no longer
exists. Display image under "unknown" if there is no repo for it.
2024-01-15 11:10:37 +01:00
Javier Hernandez 19e0517511 views: Fix table showing client's partitions
Display partition table in Scopes -> Client Update, this is meaningful context
information
2024-01-15 10:23:21 +01:00
Javier Hernandez 409dbe3f5c views: set boot field to readonly
In edit client form, set boot field to read-only

Boot mode can be updated from Commands -> Set boot mode, it is more flexible to
do it from there, because you can select several clients and set the boot mode
at once.
2024-01-15 10:23:09 +01:00
Javier Hernandez d075cdd003 forms: Remove netiface from client's form
Remove netiface selectable in clientsDetails form.

eth{0,1,2} is misleading, it does not represent the real device in the client.

And users we know always boot from the first device.

Hide this feature until there is a better design for this.
2024-01-15 10:23:05 +01:00
Javier Hernandez 04fe9e8367 views: Make session form easier to understand
Show a more detailed description of each choice

Display an error and redirect the user if an empty list of os's was
received. Post does not work with an empty list
2024-01-12 14:27:22 +01:00
Javier Hernandez 088316e006 views: Make client details form read only
In client details command, show read-only form
2024-01-12 12:18:00 +01:00
Javier Hernandez c20061db56 views: Show error when not able to retrieve oglive list
Show the user an error if ogServer responds with an error when
retrieving oglive list
2024-01-12 11:59:53 +01:00
Javier Hernandez b542031193 views: add room to folder
Support adding a room to a folder
2024-01-11 13:36:23 +01:00
Javier Hernandez cba7a0c1c6 views: Add computers to folder
Add support for adding computers to a folder.

It uses a js script that when selecting a folder in the html form, it
will also select the parent of the folder. For instance, if the user
were to select a folder that is contained inside a room, the room would
also get selected. This allows the view to know which parent contains
the folder.
2024-01-11 13:36:19 +01:00
Javier Hernandez 2509cacc00 views: Add delete folder
Add functionality to allow the user to delete a folder.

Show a confirmation page to the user listing the content of the folder
that is about to delete
2024-01-10 11:31:15 +01:00
Javier Hernandez 695fcfe625 src: Add support for adding folders
Add support to create a folder able to contain multiple computers.

Add support for adding a folder able to contain rooms
2024-01-10 11:31:08 +01:00
Javier Hernandez 58b5b2eca0 views: Warn user when no logs available
Warn user if trying to access the logs of a client that don't yet exist.
This is prefered to showing the backtrace to the user.
2024-01-10 11:26:59 +01:00
Javier Hernandez 58852f68aa views: Check for empty list of boot modes
In set boot mode, show an error if server replies with an empty list of
boot modes
2024-01-08 10:28:11 +01:00
Javier Hernandez f538364d94 views: Make set boot-mode more robust
Check that server replies with error code and display an error if it
does.
2024-01-04 13:13:51 +01:00
Javier Hernandez b4856c9b27 templates: Make stilistic changes in dashboard
- Remove a table with redundant info; it was displaying server's stats,
  which was already in another table
- Add last update info at the top of the page
- Make page more robust by checking if ogLive images are available.

Before this patch, page shows a traceback if the ogLive list are not available.
2024-01-03 11:39:02 +01:00
Javier Hernandez 1497e500cb Warn if clients have different boot modes
Show user, when attempting to change the bootmode of more than one
client with different boot modes, a warning and a table with said
bootmodes.
2023-12-22 12:21:26 +01:00
Javier Hernandez 01977dcd66 views: Sort scopes tree alphanumerically
Sort tree that contain the scope information (centers, rooms, clients)
so that they appear in sidebar in alphanumerical order.
2023-12-22 11:19:21 +01:00
Javier Hernandez 3587806937 views: Allow to change boot mode in edit client
Allow user to change boot mode when editing a client.

First item selected is the client's current boot mode. This is so that
if the user edits the client's data, but doesnt touch bootmode, it stays
the same.
2023-12-21 17:00:14 +01:00
Javier Hernandez 555460f982 Remove id from client's bubbles
Remove id from client's bubbles in the following commands: Power
(Poweroff, Poweron, Reboot); Setup (Set boot mode, Set ogLive); Client
(Start session)

To make the string replacement, a custom jinja filter has been created
2023-12-21 12:22:44 +01:00
Javier Hernandez 52c5555f65 templates: rename 'create' button to 'submit'
In client_details template, rename 'create' button to 'submit'.

This template is used by both client-add and client-edit commands; it
would not make sense to have a 'Create' button in client-edit.
2023-12-21 11:54:01 +01:00
Javier Hernandez a5a5ef362b views: Limit update image to images available in assigned repository
Allow to update only images that are in the repo the client is assigned
to; if an image is inside a different repo, it will not appear in the
'Image' selector
2023-12-20 11:10:07 +01:00
Javier Hernandez 906c3070ed views: Fix bug in client detail with non existing images
Fix client detail form failing in some cases. It would fail if the user
wanted to view the details of a client, that had a partition using an
image that is no longer in the list of all images stored by the servers.
This could happen if the image was deleted, but the client still was using
the image in one of its partitions
2023-12-19 13:22:01 +01:00
OpenGnSys Support Team 3c7e3e1e3b views: use new POST image/update to update image
use new POST image/update when updating an image.
2023-12-19 12:50:25 +01:00
Javier Hernandez 739053fc20 Allow show assigned repo in image/create
Allow only the creation of images in the repository that is currently
assigned to the selected client.

This operation is still not handled in ogserver and oglive, it needs
more work behind the scenes: it needs an update in the templates and
it also needs the new ogLive builder so ogClient has control on the
samba mount.
2023-12-19 10:42:28 +01:00
Javier Hernandez 67cca9872a templates: Show username in top navbar
Show the username of the user currently logged-in in the top navbar.
2023-12-18 13:49:05 +01:00
Javier Hernandez 869f15ecf0 Limit restore image to images of assigned repo
Allow to restore only to images that are in the repo the client
is assigned to.
2023-12-15 13:02:54 +01:00
Javier Hernandez 6cb7be03fd Add scope-management for non-admin users
Add scope-management menu with limited commands for non-admin users;
commands allowed are add/edit/edit/delete/import client(s)
2023-12-15 12:06:27 +01:00
Javier Hernandez a9d367e795 views: Preselect client's associated repo
Make the create-image menu preselect the repo of the selected client
2023-12-15 11:44:38 +01:00
Javier Hernandez 24aab951a8 Group images by repos
Make the sidebar from the images menu display the list of repos grouped
by repos
2023-12-14 12:35:01 +01:00
Javier Hernandez aa6061dad7 Limit allowed scopes to only centers
Modify the add/edit users menu to make the 'allowed
scopes' field only display centers
2023-12-13 13:28:02 +01:00
Javier Hernandez 131404dfd7 ogcp.js: Remove id part from client bubbles
Bubbles depicting clients were previously displaying in the format
<client_name>_<client_id>. This commit changes that to only display the
name
2023-12-13 13:25:29 +01:00
Javier Hernandez 609ff0e19e views: add select repo in import clients
Add, in import clients menu, a selector to select the repo to be
associated with the clients about to import

modify OG_CLIENT_DEFAULT_BOOT variable to be 'oglive'; 'pxe' is not a
valid boot mode, and ogserver would return an error
2023-12-13 11:39:08 +01:00
Javier Hernandez 069733b00e base: Increase column size for sidebar
Make the sidebar wider to improve readability of its content
2023-12-12 14:32:47 +01:00
Javier Hernandez 0f5ba31c09 views: Add 'description' field to image details
Add a 'description' field to the image-details form.
2023-12-12 11:42:43 +01:00
Javier Hernandez 84bcdb3cae Change Image-details' 'Datasize' unit to MiB
Change the Image details form to display the 'Datasize' field of the
image in MiB instead of GiB
2023-12-12 11:00:19 +01:00
Javier Hernandez c66871f3ce Fix bug at create and update image
Fix a bug that made the create and update images actions unusable.

The data sent to post was incomplete; partition's 'code' data was missing.
2023-12-12 11:00:17 +01:00
Javier Hernandez c1548fd219 views: Check form contain a cache partition
Make the partition and format form fail if the user has not added a
cache partition.

A cache partition is required to make the restoration of images work
2023-12-11 13:34:25 +01:00
Javier Hernandez cc5c0105db ogcp.js: Fix bug when adding a new partition
Fix a bug that made the 'add a new partition' button unusable if all
partitions (rows) were deleted.

The reason for this bug was that the AddPartition() function would add a
new partition by cloning an already present html row element. This would
fail if no more rows were present in the table.

The solution implemented checks, previous to delete a partition, if it
is the last partition. If it is, then, instead of removing the whole
row, it just empties it.

Html button element needs to contain 'type="button"' attribute for this to
work. Otherwise, default action for the button is submit and it would
redirect after clicking.
2023-12-11 11:43:42 +01:00
OpenGnSys Support Team ddfaae0ef6 templates: add missing delete/update repository templates
Add missing templates.

Fixes: 15dd4c2a8f ('views: add action to update repo')
Fixes: 152337b6bd ('views: add action to delete repo')
2023-12-11 09:25:21 +01:00
Javier Hernandez f76c0ed24d views: change repo add view to follow convention
combine repo_add_get and repo_add_post into one, action_repo_add. This
is to follow convention across all the views and to clarify that it is
an action.

rename repos_details template to repos_add. Now it is clear the purpose
of each action template; there is one for each: add, delete and update
2023-12-05 12:15:34 +01:00
Javier Hernandez 15dd4c2a8f views: add action to update repo
allow the user to update a repo by selecting one and pressing the update
button.
2023-12-05 11:38:26 +01:00
Javier Hernandez 152337b6bd views: add action to delete repo
allow the user to delete a repo by selecting one and pressing the delete
button. Previous to deletion, show the user a confirmation page (a form)
with the details of the repo to delete

the confirmation form is constructed with the fields of Repoform.
RepoForm is also used in template used to create a repo. To make both
templates work with RepoForm, RepoForm's field 'create' has been renamed to
'submit'

ogcp.js: add a function to make that, when the user selects a
repository, the server in which it is contained is automatically
checked. We need it checked so that action_repo_delete can know the
server to which it has to send the delete request. Use data-server in
repos_details.html to make this work

Validate, in action_delete_repo, that user has only selected one repo to
delete. In order to do that, action_delete_repo view needs to be able to
get a list of all selected repos. This is only possible if <input>
elements that are associated with repos info contain a different name
attribute per repo. In this case, template repos.html has been modified
to use name={repo name}-{repo_id}.  After this, parse_elements() will
work and parse a set containing all selected repos.

modify html input associated to repos server in order to follow same
convention as in other templates. For example, images uses image-server;
scopes, scope-server.
2023-12-05 10:21:09 +01:00
OpenGnSys Support Team 0718ccac75 cfg: add template file
this template configuration file is used by the installer.
2023-12-04 10:45:38 +01:00
OpenGnSys Support Team 2108d974bd init: missing import logging
Otherwise:

 NameError: name 'logging' is not defined

is reported.
2023-12-04 10:04:19 +01:00
Javier Hernandez 2858436341 src: add menu to manage repos
The menu includes a list of the repos of each server. The user can
select a server or a repo to make changes.

As of now, the only action possible is to add a repo to selected
server.

The work contained in this commit can be structured in:

1. Add the repos menu:
- Add a 'repos' button in the menus bar (base.html).
- Add repos.html template to create the management repos menu.
- In ogcp.js, add function to store in browser's local storage which
  elements of the sidebar are uncollapsed. This saves the sidebar state
  after a page refresh.
- Add manage_repos() in views.py

2. Allow to add a repo:
- Add template with form to add a repo (repos_details.html)
- Create RepoForm(FlaskForm) in action_forms.py
- Add repo_add_get() and repo_add_post() in views.py
2023-12-01 17:20:08 +01:00
OpenGnSys Support Team 215e3c2fc0 init: filter out GET /scopes/status requests
ogcp.js calls this endpoint very often, which send a request to the ogserver
through the REST API. This call is needed because javascript code cannot
directly talk to the ogserver since it does not know what the API_KEY is.
Add a filter to skip log GET /scopes/status requests.

Thanks to DaniGM for helping with this.
2023-12-01 12:42:41 +01:00
OpenGnSys Support Team 1a64f581ae views: set computer netmask to 0
This is never used by ogserver, instead the room netmask is always used.
2023-11-30 21:01:49 +01:00
Javier Hernandez 0340c17dc3 views: Add placeholder for mac field
Add a placeholder that shows the user an example of what a valid mac
address looks like.

By now, mac needs to be specified as AABBCCDDEEFF without : for historical
reasons.
2023-11-30 11:35:30 +01:00
Javier Hernandez 7f93221617 views: fix client details
- netmask is no accesible anymore, remove it.
- The form made reference to fields that do not exist anymore:
  netmask and netdriver (removed in a previous commit)
- make the repository field show the repo that is in use
2023-11-29 13:20:18 +01:00
Javier Hernandez 3b932fc6a8 views: fix repository list in update client
Make the repository list's first element be the current repo in use.
This is needed because, otherwise, an update could inadvertently
change the repo.

Remove a print statement that is no longer needed
2023-11-29 13:20:07 +01:00
Javier Hernandez 4a70bc174c views: populate repositories in client form
Make, in add and edit clients forms, the field repository show the list
with the actual repositories, not a harcoded value.
2023-11-29 10:43:02 +01:00
Javier Hernandez ad41a0dfbe image: rename and remove fields
- remove field image 'id'
- change size to display MiB instead of GiB
- replace 'Modified' with 'Last update'
2023-11-27 09:45:16 +01:00
Javier Hernandez 9fa90e0593 templates: translate shutdown state keys
Change key element 'Apagado' to its English form 'Shutdown'
2023-11-27 09:45:16 +01:00
Javier Hernandez bb66d9ed42 views: Make 'partition' field use same format
Make forms containing a 'Partition' field use all the same format (ie.
<Disk id> | <Partition id> | <Partion type> <Partition format>")

Signed-off-by: OpenGnSys Support Team <soporte-og@soleta.eu>
2023-11-27 09:45:16 +01:00
Javier Hernandez 4f565255af client: Remove 'netmask' in form
Remove unnecessary field 'netmask' from forms used to create and update
clients. Netmask is configured in rooms instead.
2023-11-27 09:44:47 +01:00
Javier Hernandez 3f27dd3ef1 views: allow to edit a client
Add a form to allow the user to update a client.

ip field is in read only mode because this is the primary key to
identify a client in db.

Fields corresponding to boot mode (ie. oglivedir and boot) are also in
read only for now; ogServer has to fix set boot mode functionality
before it can be added here.
2023-11-24 11:04:30 +01:00
Javier Hernandez 3a0cdbda5a src: Remove netdriver field in client form
Remove netdriver field from forms used to add or update a client.
At the time of creating (or updating) a client, ogCP uses a hardcoded
value for this field of the payload.

This field is not used by oglive in any way, remove it.
2023-11-23 10:21:22 +01:00
Javier Hernandez 739ac075dc views: add field 'gateway' in add-room form
Add the possibility to configure a gateway in a room.
2023-11-14 15:44:14 +01:00
Jose M. Guisado 0b210404d8 ogcp.js: fix images selector in "images" section
Any operation inside "Images" view fails with error message 'missing
"image-server" key'. Operations under images view section are loading
image info and "delete image".

Previously, a hidden checkbox entry was added to support multiple
ogServer images entries. This hidden checkbox value holds the
corresponding ogServer address of some image list. This hidden
'image-server' checkbox is checked or unchecked whenever some visible
image from this server is checked in the list by the user.

Commit 70eb7389bb introduces checkImageServer javascript function that
mainly attaches an onchange event to each image checkbox so that
checking or unchecking it updates the hidden 'image-server' checkboxes
holding the ogserver address associated with each ogserver entry list.

When loading "Images" view each configured ogServer entry is collapsed
(thus each image checkbox is hidden). The current selector is ignoring
hidden checkboxes and thus checkImageServer is unable to attach the
necessary onchange event to each image checkbox.

The hidden 'image-server' checkbox is always hidden and does not need
attaching any onchange event. Fix selector by not ignoring hidden
elements and omitting any checkbox with name 'image-server'.

Fixes: 70eb7389bb ("Add ogServer parameter to imagesForm")
2023-07-11 17:52:17 +02:00
Jose M. Guisado db68dcea46 ogcp: add backup boolean field in image update
User can use this boolean field to specify if an backup copy needs to be
created before updating an image.

This only applies when sending a request to a client (ogClient)
supporting this parameter.
2023-07-07 13:22:23 +02:00
Jose M. Guisado ae3f83b3c3 views: use \s to match whitespace in client import regex
Some programs substitute regular space characters (\u0020) by en spaces
(\u2002) when displaying monospace text. Others replace it by
non-breaking spaces.

Using a character set such as [ \t\n] to match any possible "space
related" character. Use \s to match any kind of whitespace related
character in the regex.

Pasted from python's documentation:

\s

    For Unicode (str) patterns:

	Matches Unicode whitespace characters (which includes
	[ \t\n\r\f\v], and also many other characters, for example the
	non-breaking spaces mandated by typography rules in many languages). If
	the ASCII flag is used, only [ \t\n\r\f\v] is matched.
	[...]

Fixes: d9f8c95618
('views: better dhcp conf parsing when importing clients')
2023-06-28 12:48:22 +02:00
Jose M. Guisado d9f8c95618 views: better dhcp conf parsing when importing clients
This new regex allows parsing of:

	- Irrelevant options that the user may paste from its config
	  file, eg. 'option host-name'.
	- Allows linebreaks.

Hosts still require to have 'hardware ethernet' first, and then
'fixed-address'.

For example this regex admits dhcp host declarations such as

	host pir36-22_78 {
	      hardware ethernet d8:5e:d3:25:28:9d;
	      fixed-address 10.1.36.78;
	      option host-name "pc_78";
	}

Summary of the regex:

(?: *host *)			# Match host keyword and spaces
([\w.-]*)     			# Match any word character (alphanum and underscore)
(?:[ \n\r]*{[ \n\r]*)  		# Match any space or newline, then match { and any following space or newline
(?:[ \t]*hardware *ethernet *)  # Match any space or tab character followed by 'hardware ethernet'
((?:[0-9A-Fa-f]{2}[:-]){5}(?:[0-9A-Fa-f]{2}))  # Match the mac address using ':' or '-' as separator
(?: *;)				# Match any space character before a ';'
(?:[ \t\n\r]*fixed-address *)	# Match any space, tab or newline followed by 'fixed address' and any following space
(\d+\.\d+\.\d+\.\d+)		# Match an ip address (no validity check)
(?: *;)(?:[ \r\n]*[^}]*})	# Match any space followed by ';', then match any character except '}'
2023-06-27 17:06:34 +02:00
Jose M. Guisado 9c91fb16b4 views: add placeholder text inside dhcp conf textarea
Help user by hinting the current expected format via a placeholder in
the textarea box.

Current regex has its limitations when parsing dhcpd host declarations.
It does not support multi line host declarations or different options
outside "hardware ethernet ..." and "fixed-address ...".
2023-06-27 08:56:49 +02:00
Javier Sánchez Parra d029df8e84 Show warning when formatting clients without disks
If an administrator selects a client without disks and goes to
"Partition & Format", ogCP redirects it again to "Commands" and shows a
floating message indicating that the client has no disks.
2022-11-17 17:36:15 +01:00
Javier Sánchez Parra fc02d891cd Fix typo in save_user() function 2022-11-17 17:36:15 +01:00
Javier Sánchez Parra eeda698f40 Open real time log in a new tab 2022-11-17 17:36:15 +01:00
Javier Sánchez Parra 93758f3831 Disable scopes tree and add Back button in log view
All views from Commands section have this two attributes.
2022-11-17 17:36:15 +01:00
Javier Sánchez Parra 6aad8535f0 Update Spanish translations 2022-11-17 17:36:15 +01:00
Javier Sánchez Parra 46682c3ff9 Rename "Scopes" section to "Scopes management" 2022-11-17 17:36:15 +01:00
Javier Sánchez Parra 5d265aa532 Show scopes section only to administrators 2022-11-17 17:36:15 +01:00
Javier Sánchez Parra e1908c2543 Show servers section only to administrators 2022-11-17 17:36:15 +01:00
Javier Sánchez Parra 42bf42f580 Add clients in Linux and Windows mode
Scopes tree shows clients booted in Linux and Windows with ogClient
installed. It also shows if the user logs in.
2022-11-17 17:36:15 +01:00
Javier Sánchez Parra 693f5255b1 Assign servers to users
Instead of give permissions on all centers of a server selecting each one
of them, you can select the server that contains all this centers.
2022-11-07 12:58:27 +01:00
Javier Sánchez Parra 0f6641d92f Set server variable on GET /action/image/update
Otherwise, ogCP crashes on image update.

Fixes: 8726ade ("Adapt commands to work with several ogServers")
2022-11-07 12:58:27 +01:00
Javier Sánchez Parra f834253a80 Remove unused variable "g.server"
Since ogCP multi ogServer support, g.server is not used anymore. The
list of available servers is stored in the global variable "servers" at
og_server.py
2022-09-29 13:01:28 +02:00