Creating a software profile failed. ogServer obtained the information of
a computer without center id because commit cbd9421 removed it
unintentionally, making all computer had center id equal to zero.
This commit restores the gathering of computer center id from the
database.
Test 0006: add json to GET /session and update expected return code.
Test 0012: add json to GET /software and update expected return code (200),
in this case json fields are integer, not string.
Test 0020: remove it, /image/create/incremental does not exist anymore.
Test 0021: same as before for /image/restore/basic
Test 0022: same as before for /image/restore/incremental
Test 0023: rename to test_0020.
This function returns the installed and available OSs in a client to be
booted from.
Request:
GET /session
{
"client": ["192.168.56.11"]
}
Response
200 OK
{
"sessions": [
{
"disk": 1,
"name": "Ubuntu 18.04.4 LTS",
"partition": 1
}
]
}
This patch uses client's IP instead of scope ID as a filter for the
request.
Request:
GET /hardware
{
"client": ["192.168.56.11"]
}
Response:
200 OK
{
"hardware": [
{
"description": "BIOS",
"type": "Tipo de proceso de arranque"
},
{
"description": "QEMU Standard PC (i440FX + PIIX, 1996) v.pc-i440fx-5.1",
"type": "Marca y modelo del equipo"
},
{
"description": "Intel Corp. Intel Core Processor (Haswell, no TSX, IBRS) 2GHz v.pc-i440fx-5.1",
"type": "Microprocesadores"
},
{
"description": "QEMU 2049MiB (DIMM 0)",
"type": "Memorias"
},
{
"description": "Red Hat, Inc. Virtio network device v.00",
"type": "Tarjetas de Red"
}
]
}
This function retrieves a list of the software installed in a specific
disk and partition of a client. This list can be updated by using POST
/software beforehand.
Request:
GET /software
{
"client": ["192.168.56.11"],
"disk": 1,
"partition": 1
}
Response:
200 OK
{
"software": [
"grub-pc-bin 2",
"grub-pc 2.02",
"grub2-common 2.02",
"groff-base 1.22.3",
"gpg 2.2.4",
"gnupg-utils 2.2.4",
"gnupg-l10n 2.2.4",
"gnupg 2.2.4",
"gnome-video-effects 0.4.3",
"gnome-user-guide 3.28.2+git20180715",
"gnome-user-docs 3.28.2+git20180715",
"gnome-todo-common 3.28.1",
"gnome-mines 3.28.0",
"gnome-menus 3.13.3",
"gnome-mahjongg 3.22.0",
"gnome-keyring-pkcs11 3.28.0.2",
"gnome-keyring 3.28.0.2",
"gnome-initial-setup 3.28.0",
"accountsservice 0.6.45"
]
}
This extension removes replaces the field 'filename' for 'name' and adds
new fields (software_id, type and id). These new fields are useful when
restoring an image.
Request:
GET /images
Response:
200 OK
{
"disk": {
"free": 37091418112,
"total": 52573995008
},
"images": [
{
"datasize": 5939200000,
"id": 25,
"modified": "Wed Oct 14 11:49:00 2020",
"name": "archlinux",
"permissions": "744",
"size": 1844222333,
"software_id": 19,
"type": 1
}
]
}
In case the DB entry for an image does not exist when POST /image/create
is called, this patch takes care of calling it.
This adds few optional json parameters to the POST /image/create API. If
optional parameters are included then this patch creates the DB entry,
otherwise it just creates the actual image and updates the existing
entry.
Request:
POST /image/create
{
"clients":["192.168.56.11"],
"disk":"1",
"partition":"1",
"name":"archlinux",
"repository":"192.168.56.10",
"id":"24",
"code":"131",
"description":"This is a test",
"group_id":0,
"center_id":1
}
Response:
200 OK
This method deletes a client from the DB.
Request:
POST /client/delete
{
"clients": ["192.168.56.30"]
}
Response:
200 OK
Co-authored-by: Javier Sánchez Parra <jsanchez@soleta.eu>
Use og_server_cfg everywhere. Convert port to string to make it easy for the
dbi API since it expects a string. Remove legacy example configuration file.
This patch is a refactor for og_computer and og_dbi_get_computer_info.
It now uses fixed lenght strings to make it more reliable and avoid
errors if the DB is not returning a null ended string.
For the strings in og_computer we do not need to know the max size in
advance but instead we need to free up memmory using
og_dbi_free_computer_info(...) function.
ogClient now includes more information regarding the new image. This patch
modifies ogServer to support new elements sent in ogClient /image/create
response and store them in the database.
Example of new /image/create response:
{
"disk": "1",
"partition": "1",
"code": "131",
"id": "1",
"name": "ubuntu",
"repository": "192.168.56.10",
"software": "Ubuntu 18.04.5 LTS \naccountsservice 0.6.45\n...",
"clonator": "PARTCLONE",
"compressor": "LZOP",
"filesystem": "EXTFS",
"datasize": 2100000
}
New fields are "clonator", "compressor", "filesystem" and "datasize".
This patch selects clients whose modes need to be changed in the current
request. This patch makes POST /mode consistent with the rest of the
REST API where clients are selected and filtered by ip.
CC src/rest.o
src/rest.c: In function ‘og_cmd_post_modes.isra.27’:
src/rest.c:966:4: warning: ‘%s’ directive output may be truncated writing up to 4096 bytes into a region of size between 3018 and 4041 -Wformat-truncation=]
"MODE_FILE='%s'\nMAC='%s'\nDATA='%s'\n"
^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
src/rest.c:1085:7:
template_name, scope_name);
~~~~~~~~~~~~~
src/rest.c:967:33: note: format string is defined here
"MODE='PERM'\nTEMPLATE_NAME='%s'",
^~
src/rest.c:965:2: note: ‘snprintf’ output 57 or more bytes (assuming 5176) into a destination of size 4096
snprintf(cmd_params, sizeof(cmd_params),
^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
"MODE_FILE='%s'\nMAC='%s'\nDATA='%s'\n"
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
"MODE='PERM'\nTEMPLATE_NAME='%s'",
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
mode, mac, params, template_name);
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
Now POST /modes does not only write to the database, it also uses the
external bash script 'setclientmode' to generate configured PXE
templates for each machine.
NOTE: This fix requires that room and computer names are unique in the
OpenGnsys DB. This behaviour is inherited from the previous
'setclientmode' script but, eventually, it should be replaced for an
actual scope selector.