Commit Graph

73 Commits (96d2797ec3dd4e37b668c58c43dce26ce24968d6)

Author SHA1 Message Date
Javier Sánchez Parra 96d2797ec3 Fix "Add client" form redirection
Otherwise, ogcp redirects to a blank page instead of the scopes view.
2022-01-14 09:08:04 +01:00
Javier Sánchez Parra 91f3567d09 Change some f-strings to format()
python-babel is not compatible with f-strings.

See also: https://github.com/python-babel/babel/issues/594
2022-01-13 11:36:41 +01:00
Javier Sánchez Parra a8e16a3388 Check images list content in client details view
Otherwise, client image assignation fails if "images" variable is empty.
2021-12-20 12:21:08 +01:00
Javier Sánchez Parra d12b401d30 Add available ogLives to client details
Otherwise, ogLive field always shows the default value.
2021-12-17 13:24:00 +01:00
Javier Sánchez Parra e07c8afcce Add set ogLive to commands
This action is related to /oglive in ogServer's API. Allows changing the
ogLive for a set of given clients, previously selected in the /commands
view.
2021-12-16 17:17:07 +01:00
Javier Sánchez Parra 695c19f86e Add scope permission support
ogCP limits which scopes can use each user.

Configuration file stores allowed scopes by their names. Leave scope
list empty to give a user permissions on all scopes.
2021-12-10 13:06:18 +01:00
Javier Sánchez Parra a5681a4b85 Add multi user support
It is inspired by the following example:
c760c0ef7c/README.md (usage)
2021-12-08 12:10:38 +01:00
Javier Sánchez Parra 792e4ed3dd Add legacy real-time log
Clients in ogLive offer a web page with lighttpd that shows a real-time
log. This commit links this log in ogcp.

Future patches will deprecate this log functionality in favour of more
robust solutions.
2021-11-08 11:42:59 +01:00
Javier Sánchez Parra 7faa607131 Set default value on partition data parsing
Otherwise, ogcp breaks when receiving an unknown disk table type,
partition type or file system.
2021-11-02 16:48:06 +01:00
Javier Sánchez Parra cbeafea273 Support partition of computers with several disks
Add a new select input and button to choose which disk you want to
partition.

TODO: Current argument parsing function returns a list with all the
arguments, except csrf_token. Future patches should add granular parsing
of different types of arguments.
2021-11-02 16:24:18 +01:00
Javier Sánchez Parra 20a94dbc3e Add legacy log
Future patches will deprecate this log functionality in favour of more
robust solutions.
2021-10-28 11:29:03 +02:00
Javier Sánchez Parra 0b424aa34e Add partitions info to client details
Show a table with client's disks and partitions information.
2021-10-13 13:06:49 +02:00
Javier Sánchez Parra 3e7801e487 Add "Delete image" action
Adds a new button in the images view.

This action handles image deletion, one at a time for security. Users
must select an image using the images tree.
2021-09-29 17:12:15 +02:00
Javier Sánchez Parra f572643605 Fix cache partition creation
Partition & Format JSON cache fields always have the default values (no
cache) although users order to create a cache partition.

Set JSON cache fields with the values filled by the user.
2021-09-16 11:57:59 +02:00
Javier Sánchez Parra da9b2ea9c2 Add image details action
This action is used to visualize the specific details of an image, as
its ID, name, size, etc.
2021-09-03 14:51:15 +02:00
Javier Sánchez Parra d83e456daf Rename validate and parse IPs functions
These functions can work with any kind of strings and not only with IPs.

This is required by the "image details form" that a follow up patch
implements. "Image details form" validates and parses IDs instead of IPs
with these functions.

Rename validate and parse IPs functions to a generic name, so it makes
sense to use them with any kind of string.
2021-09-03 14:51:15 +02:00
Javier Sánchez Parra 27ea5016c4 Add images view
Images view manages all the images stored in the server.

Follow up patches adds actions to get and edit image details, and to
delete them.
2021-09-03 14:51:14 +02:00
Javier Sánchez Parra 37a0304575 Add most common partition codes and filesystems
To increase the compatibility of "Partition & format" (aka setup).
2021-08-24 13:35:42 +02:00
Javier Sánchez Parra 7b2d061f70 Add EFI, NTFS and LINUX GPT partition codes
Otherwise, ogcp fails to parse them when received.

Note: this commit write the codes in decimal notation, but the common
way is hexadecimal notation.
2021-07-30 15:00:34 +02:00
Javier Sánchez Parra 9d98cf0423 Add "Delete center" action
Creates "delete center" form with a select to choose a center to delete.

Adds a new button in the scopes view. Because scopes checkboxes values
maps to ips the only way to specify the center to delete is in the delete
center form itself, using a select input.
2021-07-30 13:01:38 +02:00
Javier Sánchez Parra df25ec62a8 Add "Delete client" action
Adds a new button in the scopes view.

This action handles clients deletion on one or multiple scopes. Users
must select clients using the scopes tree.
2021-07-29 16:44:14 +02:00
Javier Sánchez Parra 05bab71162 Add IPs validation to Poweroff and Setup form
Otherwise, users see an error page, instead of a float message asking to
select at least one computer.
2021-07-29 16:41:17 +02:00
Javier Sánchez Parra e64a33a3dd Fix submit command redirection
Current submit command behaviour redirects the user to scopes views.
This commit changes the behaviour when submitting a command forms to
redirect users to the general command view.
2021-07-29 16:40:22 +02:00
Javier Sánchez Parra 5dd2b5c6dc Add full scheme partitioning support
The initial "Partition & Format" (aka setup) form only allows to modify
one partition at a time. This commit updates it to allow to modify the
whole disk partition schema in one go, without pop-ups and transitions.

This is a remake of the previous form using FieldList de WTForms and
javascript to duplicate / remove FieldList adapted to the attributes
available in WTForms.
2021-07-28 17:19:51 +02:00
Daniel García Moreno 4e519590af Update scopes tree dynamically
This patch adds a javascript function to update the scope tree (on/off)
state.

This javacript function is called every second, does a call to the
new backend endpoint `/scopes/status` and updates the tree classes
depending on the current data.

The new `/scopes/status` endpoint just returns the scopes tree as json.

This patch also adds an icon in the tree leafs, a filled green circle
when the state is `on`, and a empty red circle when the state is `off`.

There's also a new javascript function to unfold all collapses in the
scope tree.
2021-07-07 11:27:28 +02:00
Javier Sánchez Parra 1e7fce971a Create "Add Center" form and view
Creates "add center" form with "name" as required input and "comment" as
optional input.

In the future, the CenterForm can be used to display center information
once such functionality lands in the ogserver.
2021-06-30 17:20:17 +02:00
Daniel García Moreno 42dc44323e Add new partition button in setup action
This patch adds a way to add a new partition to the setup.html template.
This button opens a modal dialog with a new form and calls a new
endpoint to create the new partition (this endpoint does nothing, it's
needed to be implemented in the future).

I've followed the initial design for this template, with one form per
each partition, so every button will call a function and reload the
page.

It's possible to do all actions at once, but that will require a rework
of this, to do that we can just define an unique form in the whole html,
remove all the "Modify" buttons and add just one "Apply" button at the
end. But maybe that option is a lot complex in the backend because will
require to validate all the changes at once.

This patch also improves the setup.html form without using
flask-bootstrap and rendering the form in the template directly with the
bootstrap4 classes.
2021-06-30 17:19:55 +02:00
Daniel García Moreno f121d591e5 Keep the selection in the sidebar for mode & setup 2021-06-17 16:42:50 +02:00
Jose M. Guisado 3667db8662 Add commands view and macros.html
Commands view has a scope sidebar with the content block filled with
command buttons (poweroff, wol, etc.)

This commit leaves scope create/delete/update buttons in the /scopes
view, which serves that purpose.

To avoid duplicating scope tree creation macro, an external macros.html
is created, this template can be imported. Future macros needed can be
written in there.
2021-06-17 09:58:11 +02:00
Daniel García Moreno 514fb84a56 Add chart to dashboard
This patch adds an example chart using chartjs to the dashboard to show
the disk usage.

https://www.chartjs.org/docs/latest/getting-started/
2021-06-08 12:36:55 +02:00
Daniel García Moreno 22dcea19ff Add sidebar and command bar to base template
Modify the base template to add the sidebar and command bar, implemented
just in the scopes view.

This patch also modifies the "actions/mode.html" template to be shown in
the scopes page. Any other action that should be inside the scopes
should do the same, add the scopes and clients to the template context
and use the "scopes.html" as base in those actions.

The notification has been also changed to use a toast notification
instead of the usual alert to avoid changing the layout on error.
2021-06-08 11:46:40 +02:00
Daniel García Moreno 3cfdfa3b12 Redirect to login page by default
This patch redirects to the login page instead of showing an empty page
when the user is not logged in.
2021-06-01 18:25:41 +02:00
OpenGnSys Support Team d84933f88e ogcp is AGPLv3+
Update license header in files.
2021-05-20 18:45:38 +02:00
Javier Sánchez Parra 29480012e4 Add "Delete Room" form and view
Creates "delete room" form with a select to choose a room to delete.

Adds a new button inside the button group in the scopes view. Because
scopes checkboxes values maps to ips the only way to specify the room to
delete is in the delete room form itself, using a select input.
2021-05-20 18:45:34 +02:00
Jose M. Guisado f303240c55 Create "Add Room" form and view
Creates "add room" form with required inputs only: center, name and
netmask.

Adds a new button inside the button group in the scopes view. Because
scopes checkboxes values maps to ips the only way to specify the center
in which to add the room is in the add room form itself, using a select
input.

In the future, the RoomForm can be used to display room information once
such functionality lands in the ogserver.
2021-05-20 18:44:40 +02:00
Javier Sánchez Parra 5e46157060 Add ogLive list to the dashboard
Add list with ogLives installed in the server and highlight the default
ogLive.
2021-05-20 18:44:37 +02:00
Javier Sánchez Parra 8441d844d1 Add disk stats to the dashboard
Add the following disk stats to the dashboard:

* Disk size: shows the amount of total disk size in Gibibytes.

* used: shows the amount of used disk size in Gibibytes.

* available: shows the amount of free disk size in Gibibytes.

* use(%): shows the amount of used disk size in percentage.
2021-05-20 18:44:30 +02:00
Javier Sánchez Parra 7f0d1ab287 Add latest images to the dashboard
Users want to know latest created/modified images to manage new images
or changes made on existing images.

This commit adds a list with the 10 latest created or modified images.
2021-05-20 18:44:23 +02:00
Javier Sánchez Parra 411189e6ec Add number of images to the dashboard
Users want to easily know the number of images an ogServer has.
2021-05-20 18:44:15 +02:00
Javier Sánchez Parra 543b12aca8 Change login redirection to "Home"
When the user logs into ogcp, the web page redirects him to "Scopes".

In the future ogcp will have a dashboard showing multiple stats and
details. This dashboard will be in "Home" path and we want the user to
see it when he logs in.

Change login redirection from "Scopes" to "Home".
2021-05-20 18:44:07 +02:00
Jose M. Guisado 2ad382b5ed Add cosmetic improvements
* Adds label for each action page.
* Adds a colored state for opengnsys connected clients
* Fix nav active item
* Rename some actions
* Adds DISK to partition and format form
2021-03-24 14:32:16 +01:00
Jose M. Guisado 9ee0565ac4 Add login
Ogcp requires a simple login page in order to avoid exposure of the
ogServer API to anyone trying to access the web page.

Because the main authorization mechanism in ogServer is the api token
the login implemented for the ogcp does not include registration process
but a single user and password specified in the ogcp.json.

 	"USER": "user",
 	"PASS": "pass"

Adds two new views: /login and /logout. They are used to login the user so
that the rest of views regarding ogServer functionality can be accessed
in a "login required" fashion. Index view (/) is an exception, it can be
accessed logged in or not so different data can be displayed.

Templates can now access a variable "current_user" to get information
about login status. This is a Flask-Login feature.

- Templates regarding login can be found in templates/auth/
- Login form is defined in forms/auth.py to separate it from
  action_forms.py
- Adds Flask-Login module to requirements.txt
- Adds default user and pass in ogcp.json
2021-03-05 11:47:27 +01:00
Jose M. Guisado 45af740c1f Cosmetic enhacements
* Use validate_ips and flashed messages for some more actions.
* Use extra_classes in quick_form macro to add bootstrap classes to
  rendered forms
2021-03-05 11:43:05 +01:00
Jose M. Guisado 2b76106475 Add multiple ip handling to image restore form
This patch enables a set of ips to be specified as a target of an image
restore action.

The set of selected computers must have the same partition setup in
order for the form to be rendered sucessfully, if different partition
setups are detected a redirection is made and an error flash message
is shown.
2021-02-22 14:25:29 +01:00
Jose M. Guisado 20f88065bb Add boot mode to actions
This action is related to /mode in ogServer API.  Allows changing
the netboot template for a set of given clients, previously selected
in the /scopes view.
2021-02-17 13:40:06 +00:00
Jose M. Guisado 622f0bacbc Add ips field validation and better redirections
Add a function to validate that the ips received from the /scopes form
is valid (no more, no less).

Also redirects to the /scopes when any final request to the ogServer is
responded by a "200 OK"
2021-02-16 13:27:40 +00:00
Jose M. Guisado 2ec14a0061 Add FAT32 to FS_CODES dict
An error was produced when rendering the setup form of a computer
with any FAT32 partition. It was missing from the mapping of codes
received in a response to a given filesystem.
2021-02-16 13:25:10 +00:00
Jose M. Guisado 199854f1e9 Start using Flask flash messages
These are used to store a message string that can be later accessed. We
can use Flask flash messages to alert about any error or providing info
when processing a request.
2021-02-16 13:18:38 +00:00
Jose M. Guisado 989dc5bd36 Add image create template
Image creation action was lacking a template to render the form. This
patch adds said template.

Also redirects to /scopes when the request was processed by the ogserver
successfully.
2021-02-10 11:58:46 +00:00
Jose M. Guisado 3eda3fa684 Add UNICAST-DIRECT method to image restore
Previously the only method (in the form select) was "UNICAST". This
patch enables specifying a correct parameter for the underlying script
to fetch the image to be restored.

UNICAST-DIRECT makes the administrator transfer the image through the
network. UNICAST-CACHE indicates the taget pc to search for the image in
its cache partition.

Also redirects to the /scopes when ogserver responds with 200 OK.
2021-02-10 11:46:06 +00:00