Commit Graph

473 Commits (c1d08df31d5135fe43c26ea32b5998ad30645162)
 

Author SHA1 Message Date
Alejandro Sirgo Rica c1d08df31d ogcp: improve sidebar logic in Commands
Disable all checkboxes of scopes of level higher than room in the
$(window).on('pageshow', function) callback.

Set checkboxes as "indeterminate" when not every children is
selected but have some of its children selected.

[x] center
  [x] room1
      [x] client1
      [x] client1

[-] center
  [ ] room1
  [-] room2
      [ ] client1
      [x] client1

Send all selected sidebar fields as form fields. This requires
setting disabled to false and replacing indeterminate = true
to checked = true in the .on('submit', function) callback.

When a checkbox is clicked:
1. Find the room branch of the checked input.
[ ] center
  [ ] room1
  [ ] room2 <- root of the room branch
      [ ] client1 <-- clicked item

2. Uncheck all the checkboxes outside of the room branch.
3. Set all the children of the clicked item to the same value
   as the clicked item.
4. Set the parent checked or indeterminate values.
5. Save checkbox status.
2024-07-22 15:57:51 +02:00
Alejandro Sirgo Rica c3d2582aa6 views: add repository_id to image/update payload
Give ogServer context about the proper repository to process the
correct image.
2024-07-19 14:31:21 +02:00
Alejandro Sirgo Rica 33d4c31f46 views: exclude clients with no partition in image/restore
Clients cannot have an image restore when no partition configuration
is available.
Shown an error listing all the clients with no partitions.
2024-07-17 13:17:58 +02:00
Alejandro Sirgo Rica ea28a4baf1 css: use min-width instad of wifth for client pills
Some ogLive names can be large and a fixed size makes the text
overflow under other client pills.
Let the client pills grow if needed to fit its content.
2024-07-17 10:59:29 +02:00
Alejandro Sirgo Rica 78fd46ad4f ogcp: show oglive client groups by ip
Use the same visualization as the other parts of the web in the
table that groups clients by ogLive.
2024-07-17 10:57:44 +02:00
Alejandro Sirgo Rica cae11fb04e views: list default oglive in Set ogLive form
Show default oglive as "ogLive (live name)" as the last option
int the Set ogLive form.
The previous implementation defined the default oglive as the
most used when the default one is defined by /oglive/list.
2024-07-17 10:32:56 +02:00
Alejandro Sirgo Rica 314a173b6c ogcp: show cache contents in client details
Show cache contents in client details for a more complete view
of the client's state.
Move the cache inspector code to its own template for reusability.
2024-07-16 12:55:31 +02:00
Alejandro Sirgo Rica 5af2b3738b ogcp: enable modification of client ip
Add 'id' value to the /client/update payload.
Enable modification for the ip input field  in the client update
form.
2024-07-15 14:45:49 +02:00
Alejandro Sirgo Rica 0d2f38ac47 templates: hide part table in client details with no partitions
Remove <table> with partition information in client details form
when the selected client has no partition configuration.
2024-07-15 14:07:45 +02:00
Alejandro Sirgo Rica dc1c630464 templates: make ClientDetailsForm render more compact
Make the client form more compact so the user does not require
to scroll to view all the information.
Place each label and field in the same row of the form layout.
Disable the Maintenance and Remote fields as they have not
actual functionality.
2024-07-15 14:03:47 +02:00
Alejandro Sirgo Rica 1548b6338a ogcp: show checksum in image info
Improve potential image troubleshooting within ogCP.
Add checksum to the image info view.

Show "Unknown" when no checksum is available.
2024-07-12 09:16:28 +02:00
Alejandro Sirgo Rica b5cb42006e ogcp: add checksum to images in Manage cache
Ease detection of potential problems with images in cache.
Show checksum under each image in the form.
2024-07-12 09:11:28 +02:00
Alejandro Sirgo Rica 514201e6a1 templates: force CSS update to show oglive indicator
Increase CSS version to update CSS file in browser cache.
2024-07-11 10:54:38 +02:00
Alejandro Sirgo Rica 6ce7dd7625 templates: force OS selection in Boot OS form
Prevent backtrace when not OS is selected before the form submit.
Add 'required' attribute to the <input> elements of each OS option
in the Boot OS form.
2024-07-09 16:42:08 +02:00
Alejandro Sirgo Rica 471cb78676 views: fix user scope filtering
Create a copy of the array with scope references before the
iteration and modification of the scopes dictionary.
Prevent skipping values after deleting an element during the
scope iteration.
2024-07-09 09:52:21 +02:00
Alejandro Sirgo Rica 5cbb4a7562 views: skip cache space checks if already contains the image
Skip checks of image_fits_in_cache() if the image data contains
not 'size' or 'checksum' information.

Skip checks for the clients with the image already in cache.
2024-07-09 09:52:21 +02:00
Alejandro Sirgo Rica a88e5fed7d ogcp: select images of selected partition in image/update
Select the image field value containing the restored image of the
partition selected by the user.

Create a dictionary where the key is the value= of the partition
field and the value is the id of the image restored in the
partition. Add each dictionary entry only only if the corresponding
image exists in the repository.
Pass the dictionary to the HTML template and convert it to JS.
2024-07-09 09:52:21 +02:00
Alejandro Sirgo Rica f85f0771cd ogcp: show an indicator in each sidebar branch with live children
Add visual indicator to the disclosure widget when its branch has
any clients in live mode.
Ease the search of systems in ogLive in need of being booted or
turned off.

Add id= to the HTML component containing the disclosure widget.
Set the id to the value scope_type-scope_name for type='server' and
scope_type-scope_id for the rest.

Add the CSS class 'live-report' to the HTML components with live
children. Assign the class field in the js function updateScopes.
2024-07-09 09:52:21 +02:00
Alejandro Sirgo Rica d582beef47 ogcp: fix client pill status report
Prevent cases where the client pills would stay locked reporting a
specific system.

Remove pill-* classes instead of text-* classes in function
updatePillStatus().

This fixes out-of-sync state representation between sidebar and main
section.
2024-07-09 09:52:21 +02:00
Alejandro Sirgo Rica bb59eb8a54 views: add auxiliar function is_valid_ip()
Move ip validation logic to a separate function to make the code
more expressive and reusable.
2024-07-09 09:52:21 +02:00
Alejandro Sirgo Rica e532e9a0c8 ogcp: make client name field mandatory in client form
Add InputRequired validator to the name field of the
ClientDetailsForm.
Validate name value in the POST function.
2024-07-09 09:52:21 +02:00
Alejandro Sirgo Rica 5111733b93 ogcp: use csv as new format for import clients
Replace dhcpd format with the simpler csv format to configure
the list of clients to import in /action/clients/import.
Replace regex parsing with a simpler manual parsing.
Improve error report.

Example configuration:
client_name1,94:c6:91:a6:25:1a,10.141.10.100
client_name2,94:c6:91:a6:25:1b,10.141.10.101
2024-07-09 09:52:07 +02:00
Alejandro Sirgo Rica c333b3ee56 views: check invalid values in prettify_mac()
Return without modification if the MAC is not valid.
2024-07-04 13:06:01 +02:00
Alejandro Sirgo Rica 320df7ec0c views: validate MAC address after POST
Check if the provided MAC address is valid in every form where
the use has to provide one. Show an error message when the format
is incorrect.
2024-07-03 15:51:31 +02:00
Alejandro Sirgo Rica b510d625b2 views: show MAC as lowercase with colon separators
Define a function to format the MAC string for every view in the
web. Example of formatted MAC address: aa:bb:cc:dd:ee:aa

Show MAC address in client pills in that same format.
2024-07-03 15:48:24 +02:00
Alejandro Sirgo Rica 9ea8a74c63 views: normalize every MAC address during POST processing
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
2024-07-03 14:25:34 +02:00
Alejandro Sirgo Rica 84365a0db2 templates: fix commands button layout
Fix <div> structure to enable proper flow layout when the web
size changes and the command buttons need to reposition.
2024-07-03 12:52:09 +02:00
Alejandro Sirgo Rica 14d6784958 templates: preserve formatting in script output
Use <pre> instead of <samp> to display command output, as <pre>
preserves the new lines and the format of its inner text.
2024-07-01 09:29:41 +02:00
Alejandro Sirgo Rica dbc610c40a views: remove debug messages with payload info
Remove print statements in views.py to reduce logging noise.
2024-07-01 09:28:04 +02:00
Alejandro Sirgo Rica 31d6065a85 ogcp: set default SameSite attribute in session cookie
Set the SameSite attribute to 'Lax' if not defined.

The SameSite attribute is a cross-site tracking prevention measure
and defines when cookies are sent within the HTTP headers and
the cases when they are not sent.

The 'Lax' configuration has the following features:
- Cookies are sent with same domain requests.
- Cookies are sent when the user navigates to your site by clicking
  a link or submitting a form from another site.
- Not sent with requests made from other sites such as embeded content.

Prevent warning from browsers such as Firefox from complaining
about undefined SameSite value.
2024-06-28 08:43:34 +02:00
Alejandro Sirgo Rica 57b78a03bd templates: improve client list in cache and boot os views
Show client IPs inside div components with a custom "card" styling.
2024-06-28 08:43:34 +02:00
Alejandro Sirgo Rica f473059902 forms: replace Ok with Submit in form submit button
Make the submit label more uniform across the forms.
2024-06-28 08:43:34 +02:00
Alejandro Sirgo Rica 5fba469f7a templates: replace start session with boot OS
Update the header in the BootOS view to better fit the purpose
of the operation.
2024-06-28 08:43:34 +02:00
Alejandro Sirgo Rica 0c0df4288e templates: add vertical padding to the no cache message
Add vertical padding to the div holding the report of no selected
client with cached images.
2024-06-28 08:43:34 +02:00
Alejandro Sirgo Rica 3c8d13b696 templates: improve spacing in main dashboard
Use a plain line break instead of a horizontal rule to split the
server information.
2024-06-28 08:43:34 +02:00
Alejandro Sirgo Rica 9107316e0e templates: hide detailed cache view with zero images
Hide the cache inspector when no cache elements are found in
neither of the selected clients.
Fix js exception caused by an array access in an empty image list.
2024-06-28 08:43:22 +02:00
Alejandro Sirgo Rica a8af19fa23 templates: fix no image message in manage cache view
The template conditional must show the table when form.images has
more than zero elements.
2024-06-28 08:43:20 +02:00
Alejandro Sirgo Rica e91fc78a6d templates: improve user sidebar style
Use Bootstrap list-group class and adjust content alignment with
a flex container.
2024-06-28 08:43:20 +02:00
Alejandro Sirgo Rica 35a55f16de views: add check for failed /center/info get request
Check if the request response is null and report it to the user.
2024-06-28 08:43:20 +02:00
Alejandro Sirgo Rica 50dbc81706 views: notify user edit and user creation
Show a flash message when an user is created or edited successfully.
2024-06-28 08:43:20 +02:00
Alejandro Sirgo Rica 7d3567919a views: fix English grammatical error in error message
Replace "do not exists" with "does not exist" in error messages.
2024-06-28 08:42:53 +02:00
Alejandro Sirgo Rica 20bdd4175e templates: fix user form alignment
Add class="mx-5" to allign the form with the header of the page.
2024-06-27 10:25:11 +02:00
Alejandro Sirgo Rica 5ad2d2e72c ogcp: improve page heading style
Make headings take less space and have a dashed line under them.
2024-06-27 10:14:23 +02:00
Alejandro Sirgo Rica 977b457d5c ogcp: add user permission mechanism
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.
2024-06-27 10:03:14 +02:00
Alejandro Sirgo Rica 25bb1ff73b templates: rename Edit client to Update client
Rename Client/Edit client menu in scopes management view to keep
the same naming pattern as the other menu elements.
2024-06-25 13:53:04 +02:00
Alejandro Sirgo Rica 0ed9ecdae9 ogcp: add support to view script output
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.
2024-06-25 13:53:04 +02:00
Alejandro Sirgo Rica af8236b189 ogcp: add support to run scripts in clients
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.
2024-06-25 13:53:04 +02:00
Alejandro Sirgo Rica 8bcd8fd7a4 templates: make opengnsys buttom redirect to dashboard
Add functionality to the "Opengnsys" text in the top navbar.
Comform to the general design priciple of executing a redirecting
after clicking the main logo.
2024-06-25 13:53:04 +02:00
Alejandro Sirgo Rica 6a793ef0d1 views: remove unsupported partition types from image operations
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.
2024-06-25 13:52:10 +02:00
Alejandro Sirgo Rica d46badaf82 templates: rename Start session to Boot OS
Use a better name for the form action used to boot an operating
system in the clients.
2024-06-20 14:59:24 +02:00