| Commit message (Collapse) | Author | Age | Files | Lines |
|
|
|
| |
use grub2 template for GET /mode to list boot modes
|
|
|
|
|
| |
if client succeeds to create the image but server fails to register this image,
then remove the image stub in the database.
|
|
|
|
|
|
|
| |
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.
|
|
|
|
| |
just a preparation, no functional changes are intended.
|
|
|
|
| |
just a preparation, no functional changes are intended.
|
|
|
|
|
|
|
| |
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')
|
|
|
|
|
|
|
|
|
| |
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.
|
|
|
|
|
|
|
| |
Add a different boot mode configuration for the legacy live and the
new live.
Remove outdated params for ogReLive.
|
|
|
|
|
|
|
|
|
| |
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.
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| |
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'}]}
]
}
|
|
|
|
| |
Delete image data after a failed image creation.
|
|
|
|
|
|
|
| |
Move og_delete_image into dbi.c as og_dbi_delete_image to use it
from client.c
no functional changes.
|
|
|
|
|
| |
Add "fetch=http://IP_REPO/OGLIVEDIR/filesystem.squashfs" string
to the client boot mode configuration.
|
|
|
|
| |
not < 0, fix this.
|
|
|
|
| |
repository need to have unique IP address, otherwise bail out.
|
|
|
|
| |
do not allow request without name.
|
|
|
|
| |
unused since 87be2ce08
|
|
|
|
|
| |
Add "used_cache" and "free_cache" fields to the payload of GET
/cache/list.
|
|
|
|
|
| |
Move list of images in the cache to cache_data. Add new functions to
initialize cache data (image list) and release it.
|
|
|
|
| |
this is accessed on list iterations in first place, improve cache locality.
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| |
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"
|
|
|
|
| |
Report failure when trying to refresh client information.
|
|
|
|
| |
json parser already validates attributes must be set on.
|
|
|
|
|
|
|
|
|
|
|
|
| |
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.
|
|
|
|
| |
Put ogserver into diet, remove this feature, including pending command queue.
|
|
|
|
|
| |
- check maximum limit of clients
- reject empty array
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| |
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.
|
|
|
|
| |
use correct format for mac SQL query to fix 568d709
|
|
|
|
| |
rise this artificial limit.
|
|
|
|
| |
ID is integer, fix inconsistency in dc68d0f ('rest: add POST /client/repo')
|
|
|
|
|
|
| |
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.
|
|
|
|
| |
id is not a string, use integer instead
|
|
|
|
|
| |
if obtaining repository IP fails, json object for client is leaked, move it
after query to infer repository IP.
|
|
|
|
| |
take repository_id as json attributo, then infer repository IP from client.
|
|
|
|
| |
take repository_id as json attributo, then infer repository IP from client.
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| |
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.
|
|
|
|
| |
fix incorrect error report when updating table.
|
|
|
|
|
|
|
|
|
|
| |
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.
|
|
|
|
|
| |
Build boot file parameters in C and simplify SQL statement that
obtains the client configuration from the database.
|
|
|
|
| |
use integer not string, it breaks backwards compatibility.
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| |
Add POST cache/fetch request to request download of images in
the client's cache.
Resquest payload structure:
{
'clients': ['10.141.10.21', '10.141.10.22']
'image': 'windows.img'
'type': 'TIPTORRENT'
'repository': '12.141.10.2'
}
The clients listed in the 'clients' field will receive a
cache/fetch POST request with the payload received by the server
without the 'clients' field.
The clients respond with the contents of their cache so the server
can update the database.
|
|
|
|
|
|
|
| |
escape non-ascii characters in json otherwise ogclient len() and Content-Length:
report a mismatch when utf-8 representation is used in any of the string fields.
For consistency, enable this flag too for json dumps that are consumed by ogcp
and ogcli.
|
|
|
|
| |
a simple cleanup to help diagnose problems, not behaviour change expected.
|
|
|
|
|
|
|
|
|
|
| |
If repository_id json field is provided, use it to narrow down the image lookup.
After this, search use this same repository ID to fetch the IP address.
Old web console may not provide repository_id, infer it from the image name.
Always set image id field for creation and update.
|
|
|
|
|
|
| |
call og_delete_tftpboot_file for both pxe configuration files
in client/delete and client/update.
Delete files for client/update only if the MAC changes.
|
|
|
|
|
| |
Use idordenador as discriminator value instead of the client's ip.
Update client ip if the new ip is not used by other clients.
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| |
Allow to restrict image to scope:
POST /image/restrict
{ "image" : 49, "scopes" : [ 1,3 ] }
response: 200 OK
This restricts image with ID 49 to scopes 1 and 3.
You can also fetch the current list of restrictions:
GET /image/restrict
{ "image" : 49 }
response: 200 OK
{ "image" : 49, "scopes" : [ 1,3 ] }
Existing limitations in this interface:
- Only restriction of image to center is possible at this moment.
- This is only used by ogCP to validate if this is possible, no existing code
in the ogserver uses this to restrict POST image/restore.
This is a usability feature.
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| |
Implement most of the code from the script setclientmode into
ogServer to improve error handling and logs.
Use a reduced version legacy script to replace the contents of
the base PXE template. This file is now called updategrubprofile.
Add updategrubprofile to the new extras/ folder.
Create BIOS and UEFI files for PXE boot configuration. Each file
is located in a different directory and requires a different name
pattern.
-BIOS-
File format:
/opt/opengnsys/tftpboot/menu.lst/01-XX-XX-XX-XX-XX-XX
Template dir:
/opt/opengnsys/tftpboot/menu.lst/templates/
-UEFI-
File format:
/opt/opengnsys/tftpboot/grub/01-xx:xx:xx:xx:xx:xx
Template dir:
/opt/opengnsys/tftpboot/grub/templates/
|
|
|
|
| |
Add auxiliar string case change functions.
|
|
|
|
|
| |
Improve string handling security by replacing strcat with the
more secure strncat.
|