summaryrefslogtreecommitdiffstats
path: root/src
Commit message (Collapse)AuthorAgeFilesLines
* rest: update POST /shell/run for cmd executionv1.2.5-27Alejandro Sirgo Rica2024-11-272-6/+6
| | | | | | Remove legacy "echo" parameter. Add boolean "inline" parameter to determine if the execution is an inline command or a predefined script in /opt/opengnsys/shell/
* src: add built-in ogrelive grub2 boot mode templatev1.2.5-26OpenGnSys Support Team2024-11-253-12/+180
| | | | | | | | | | | Add built-in ogrelive grub2 boot mode template and use it to generate the grub2 boot file for each computer for the new live system. Use grub2 http to download vmlinuz, initrd.img. Use live support to download filesystem.squashfs through http. check for vmlinuz in cache, as usual, otherwise fallback to network boot.
* rest: add og_boot_params_find() and og_boot_params_free() and use themOpenGnSys Support Team2024-11-251-55/+77
| | | | | | Prepare to reuse this code for the new live system. Add two new fields to represent server and repository IP.
* rest: do not release dbi in og_get_client_mode_params()OpenGnSys Support Team2024-11-251-2/+0
| | | | caller function releases this, this results in double free.
* rest: allow creation of folder with same name in different nodesAlejandro Sirgo Rica2024-11-211-5/+6
| | | | | | | Check the parent node along with the folder name to identify if the folder already exists. Fix error when using a folder name defined in any other folder.
* rest: rename "name" to "directory" in GET /oglive/listAlejandro Sirgo Rica2024-11-211-1/+1
| | | | Rename name field for the contents of the new live format.
* refresh: update client login status from "status" field valueAlejandro Sirgo Rica2024-11-181-1/+5
| | | | | | Update the session status based on the value of the "status" field in the refresh response, the possible values are: LINUXS, LINUX, WINS, WIN.
* rest: add POST /oglive/add and POST /oglive/deleteAlejandro Sirgo Rica2024-11-112-0/+184
| | | | | | | | | | | | | | | | | Add API to register and delete oglives from the database. POST /oglive/add Register an installed oglive in the database, if the entry already exists update its creation date. Example request payload: {"name": "ogrelive-6.1.0-26"} POST /oglive/delete Remove an installed oglive from the database Example request payload: {"name": "ogrelive-6.1.0-26"}
* rest: update GET /oglive/list to include oglive data from databaseAlejandro Sirgo Rica2024-11-112-1/+91
| | | | | Append oglive info at the end of the array of the "oglive" entry. Each entry defines the name of the oglive and the creation date.
* client: improve error reporting for image creation reponsev1.2.5-25OpenGnSys Support Team2024-11-071-3/+6
| | | | provide a bit more information in the logs to identify the error
* client: use image id in last command contextOpenGnSys Support Team2024-11-071-3/+3
| | | | instead of using image id that client reports
* client: no need to update repository id after creating imageOpenGnSys Support Team2024-11-071-31/+3
| | | | | this repository id is already added to the database when the image creation is requested, remove this code to update it again when the client replies
* rest: switch to use grub2 templates as base directoryv1.2.5-24OpenGnSys Support Team2024-10-311-2/+2
| | | | use grub2 template for GET /mode to list boot modes
* client: remove image stub entry image creation registration failsOpenGnSys Support Team2024-10-311-0/+2
| | | | | if client succeeds to create the image but server fails to register this image, then remove the image stub in the database.
* src: add last client command context and use it for image creationOpenGnSys Support Team2024-10-314-41/+42
| | | | | | | Add last client command context that is used in the request to client. This allows to remove the stub image entry in the database in case that the image creation fails.
* client: add helper function to reset last client command informationOpenGnSys Support Team2024-10-311-4/+8
| | | | just a preparation, no functional changes are intended.
* src: place last client command information in structOpenGnSys Support Team2024-10-313-18/+20
| | | | just a preparation, no functional changes are intended.
* rest: do not remove image on center deleteOpenGnSys Support Team2024-10-301-27/+0
| | | | | | | if center is removed, leave images in place, image belongs to repository, not to center. This comes from b4870733 ('#942 Add REST POST /center/delete method')
* src: add safe_strtoull for safe string to number conversionAlejandro Sirgo Rica2024-10-255-6/+74
| | | | | | | | | Add safe_strtoull to validate the execution of strtoull. Definining the base of the number is required becase partition codes are base 16 but they lack the 0x prefix. Replace uses of atoi and strtoull/strtoul and log the conversion errors.
* rest: add conditional boot mode configuration for ogReLiveAlejandro Sirgo Rica2024-10-241-17/+27
| | | | | | | Add a different boot mode configuration for the legacy live and the new live. Remove outdated params for ogReLive.
* Revert "rest: add fetch param to boot mode configuration"v1.2.5-23OpenGnSys Support Team2024-10-151-3/+1
| | | | | | | | | Some equipment reports this error: Error 28: Selected item cannot fit into memory because line is too long, revert this commit until there is a better way to add fetch= only on new live images.
* rest: fix GET /session payload structurev1.2.5-22Alejandro Sirgo Rica2024-10-111-2/+22
| | | | | | | | | | | | | | | | | | Split partition data by client instead of a single array with every partition. Old payload structure: { 'sessions': [{'disk': 1, 'partition': 1, 'name': 'unknown'}, {'disk': 1, 'partition': 2, 'name': 'unknown'}, {'disk': 1, 'partition': 1, 'name': 'Ubuntu 22.04.4 LTS 64 bits'}] } New payload structure: { 'sessions': [ {'addr': '1.1.1.1', 'partitions': ['disk': 1, 'partition': 1, 'name': 'Ubuntu 22.04.4 LTS 64 bits']}, {'addr': '1.1.1.2', 'partitions': [{'disk': 1, 'partition': 1, 'name': 'unknown'}, {'disk': 1, 'partition': 2, 'name': 'unknown'}]} ] }
* src: remove placeholder image in failed image/createv1.2.5-21Alejandro Sirgo Rica2024-10-041-0/+44
| | | | Delete image data after a failed image creation.
* src: move og_delete_image to dbi.cAlejandro Sirgo Rica2024-10-043-51/+54
| | | | | | | Move og_delete_image into dbi.c as og_dbi_delete_image to use it from client.c no functional changes.
* rest: add fetch param to boot mode configurationAlejandro Sirgo Rica2024-10-031-1/+3
| | | | | Add "fetch=http://IP_REPO/OGLIVEDIR/filesystem.squashfs" string to the client boot mode configuration.
* src: inet_aton() returns 0 on errorOpenGnSys Support Team2024-10-013-10/+10
| | | | not < 0, fix this.
* rest: do not allow two repositories to use the same IP addressOpenGnSys Support Team2024-10-011-0/+42
| | | | repository need to have unique IP address, otherwise bail out.
* rest: validate name in repository/{add,update}OpenGnSys Support Team2024-09-301-1/+5
| | | | do not allow request without name.
* rest: remove unused probeOpenGnSys Support Team2024-09-303-40/+0
| | | | unused since 87be2ce08
* rest: add free and used cache to GET /cache/listAlejandro Sirgo Rica2024-09-261-2/+7
| | | | | Add "used_cache" and "free_cache" fields to the payload of GET /cache/list.
* client: move image list to cache data to consolidate itOpenGnSys Support Team2024-09-253-24/+32
| | | | | Move list of images in the cache to cache_data. Add new functions to initialize cache data (image list) and release it.
* json: move list_head at the tip of struct og_cache_imageOpenGnSys Support Team2024-09-251-1/+1
| | | | this is accessed on list iterations in first place, improve cache locality.
* src: add used_size and free_size to partition dataAlejandro Sirgo Rica2024-09-255-29/+147
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | Extend database table ordenadores_particiones to add new "used_size" and "free_size" fields. FIELD TYPE | tamano | bigint | | uso | tinyint | | used_size | bigint | | free_size | bigint | "tamano" is the field storing the total size of the partition. "uso" is a field storing the integer percentage of use, it is preserved for backwards compatibility with scritps that access the database. "used_size" and "free_size" contain the used and free partition size in bytes. Old response from ogClient for /cache/delete, /cache/fetch and /image/restore: { 'cache': [ {'name': 'windows.img', 'size': 2432370213, checksum: '5d4dcc677bc19f40a647d0002f4ade90'}, {'name': 'linux.img', 'size': 243234534213, checksum: '3eb22f888f88a55ad954f55644e1192e'} ] } New response: { 'cache': { 'used_size': 4520232322423, 'free_size': 48273465287452945, 'images': [ {'name': 'windows.img', 'size': 2432370213, checksum: '5d4dcc677bc19f40a647d0002f4ade90'}, {'name': 'linux.img', 'size': 243234534213, checksum: '3eb22f888f88a55ad954f55644e1192e'} ] } } Parse the new "free_size" and "used_size" fields of each partition data in the response payload of /refresh Parse "free_size" and "used_size" fields of the cache data in the reponse payload of /image/restore, /cache/delete and /cache/fetch Replace "used_size" field of GET /client/setup with the value of the new database field "used_size"
* client: log error on refreshOpenGnSys Support Team2024-09-231-0/+2
| | | | Report failure when trying to refresh client information.
* client: remove redundant refresh validationOpenGnSys Support Team2024-09-231-24/+7
| | | | json parser already validates attributes must be set on.
* ogAdmServer: replace old actualizaConfiguracionOpenGnSys Support Team2024-09-234-210/+347
| | | | | | | | | | | | Reimplement the legacy funcion actualizaConfiguracion with og_update_client_config in src/client.c if disk does not exist, add it, otherwise update disk contents. if partition size, code, filesystem or os is different, reset image id, otherwise update partition usage only. delete partitions that are gone at the end.
* rest: remove scheduler codeOpenGnSys Support Team2024-09-1714-3824/+437
| | | | Put ogserver into diet, remove this feature, including pending command queue.
* rest: better json clients validationOpenGnSys Support Team2024-09-171-8/+8
| | | | | - check maximum limit of clients - reject empty array
* rest: add GET /efiAlejandro Sirgo Rica2024-09-116-0/+355
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | Add GET /efi request to obtain information about the client's boot entries. Field inside the /refresh payload 'efi': { 'entries': [ { "order": 0, "name": "Boot0000", "active": false, "description": "grub" }, { "order": 1, "name": "Boot0001", "active": true, "description": "UEFI: PXE IP4 Realtek PCIe GBE Family Controller" } ] } If the client is not a EFI system it won't add the 'efi' field. If an entry is not in the boot order it won't have the 'order' field. GET /efi resquest payload structure: { 'clients': ['10.141.10.21', '10.141.10.22'] } GET /efi response's structure: { 'clients': [ { 'ip': '10.141.10.21', 'entries': [ { "order": 0, "name": "Boot0000", "active": false, "description": "grub" }, { "order": 1, "name": "Boot0001", "active": true, "description": "UEFI: PXE IP4 Realtek PCIe GBE Family Controller" } ] }, { 'ip': '10.141.10.22', 'entries': [] } ] } The client with ip 10.141.10.22 is a BIOS system. If an entry does not appear in the boot order it won't have the 'order' field.
* rest: restore change client repositoryOpenGnSys Support Team2024-09-101-1/+1
| | | | use correct format for mac SQL query to fix 568d709
* repo: allow 128 IPs per repositoryv1.2.5-20OpenGnSys Support Team2024-09-101-1/+1
| | | | rise this artificial limit.
* rest: use integer for repository IDOpenGnSys Support Team2024-09-091-7/+7
| | | | ID is integer, fix inconsistency in dc68d0f ('rest: add POST /client/repo')
* src: fallback to use first repository/server foundv1.2.5-19OpenGnSys Support Team2024-09-041-12/+30
| | | | | | use first repository/server in the list in case no specific repository/server is found in the same network, this is a fallback that works if repository/server is reachable through gateway.
* rest: use integer for server idv1.2.5-18OpenGnSys Support Team2024-09-031-3/+4
| | | | id is not a string, use integer instead
* rest: memleak in error path of image/createOpenGnSys Support Team2024-08-301-7/+6
| | | | | if obtaining repository IP fails, json object for client is leaked, move it after query to infer repository IP.
* rest: adapt cache/fetch to support repository with multiple IP adddressOpenGnSys Support Team2024-08-301-12/+25
| | | | take repository_id as json attributo, then infer repository IP from client.
* rest: adapt restore/image to support repository with multiple IP adddressOpenGnSys Support Team2024-08-301-7/+24
| | | | take repository_id as json attributo, then infer repository IP from client.
* src: infer server IP when it has more than one IP addressOpenGnSys Support Team2024-08-283-117/+96
| | | | | | | | | | | | | | | infer server IP for a given client. User does not have to attach a client to a given server IP anymore through ordenadores.identorno. this simplifies previous work to allow a server to have more than one IP address a0a347068285 ('#1074 rest: set_mode: add support for different ogserver addresses') 44745a3f2287 ('rest: add POST client/server method') POST /client/server is removed, it is only used by ogcli and explicit association between server and client is not required. server_id json attribute is also removed in GET client/info.
* schema: incorrect error logOpenGnSys Support Team2024-08-281-2/+2
| | | | fix incorrect error report when updating table.
* rest: allow repository to have more than one IP addressOpenGnSys Support Team2024-08-217-157/+460
| | | | | | | | | | Repository can have more than one single IP address. * Add alias field to database to represent the extra IPs that are attached to the repository, update schema and add version 9. * Use og_dbi_get_repository_ip() to infer the repository IP address. * Add helper functions (src/repo.c) to build a list of repositories and update rest API to use it.