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.
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.
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"}
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.
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.
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.
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"
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.
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 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.
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
a0a3470682 ('#1074 rest: set_mode: add support for different ogserver addresses')
44745a3f22 ('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.
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.