Commit Graph

12 Commits

Author SHA1 Message Date
Francesco Giudici 97db17d73b
make linter happy - update copyright dates (#899)
Signed-off-by: Francesco Giudici <francesco.giudici@suse.com>
2025-01-31 15:33:47 +01:00
Francesco Giudici 5e14e968ee
Label Templates: add IP addresses to the Network variables (#885)
* util: add network util functions

Signed-off-by: Francesco Giudici <francesco.giudici@suse.com>

* Label Templates: add IPAddress to the Network vars

Signed-off-by: Francesco Giudici <francesco.giudici@suse.com>

* util/net: rework to allow mocking system ip address retrieval

Signed-off-by: Francesco Giudici <francesco.giudici@suse.com>

* util/net: return all the available network addresses

Signed-off-by: Francesco Giudici <francesco.giudici@suse.com>

* Label Templates: add IPAddresses.{num} to the Network vars

track all available network addresses

Signed-off-by: Francesco Giudici <francesco.giudici@suse.com>

* make generate-mocks

Signed-off-by: Francesco Giudici <francesco.giudici@suse.com>

* tests: add util/net coverage

Signed-off-by: Francesco Giudici <francesco.giudici@suse.com>

* error strings should not be capitalized

Signed-off-by: Francesco Giudici <francesco.giudici@suse.com>

---------

Signed-off-by: Francesco Giudici <francesco.giudici@suse.com>
2024-11-26 09:17:00 +01:00
Francesco Giudici c9223009e6
label templates: drop spaces from Storage variables (#847)
was a leftover from label templates rework

Signed-off-by: Francesco Giudici <francesco.giudici@suse.com>
2024-09-20 08:17:37 +02:00
Francesco Giudici 723d7c3eb1
Label Templates: rework collection of 'hostinfo' data and collected variables (#843)
* Label Templates: rework collection of 'System Data' info
Allow automatic conversion of data to map[string]interface{} (Template
Labels format) using reflection where all data can be useful.
Still do manual collection of data in the map[string]interface{} when
dropping of part of the data is needed.

Use the original hostinfo field names, drop spaces in the keys.
Import also the SMBIOS data from hostinfo, since are there (so also
without dmidecode tool some SMBIOS info will be available).

Keep support of old HARDWARE variable (to be deprecated sooner or
later).

* register/dumpdata: rework initial version adding more options
notably the "label" output format, which is now the default

* register: send both legacy and new Label Templates variables
we don't want to break possible setups using the older Label Templates
variables: send both.

* tests: check new hostinfo Label Templates format

---------

Signed-off-by: Francesco Giudici <francesco.giudici@suse.com>
2024-09-13 08:45:45 +02:00
Francesco Giudici 6681ea5f6d
operator: rework label templating (#808)
Reworked the code to provide templating to MachineInventory labels and name.
The template source data is the "System Information" (BIOS) and "System Data" (which we usually called 'HW Labels') data sent by the machines via the register client.

This rework fixes some bugs and duplicated code and slightly changes the behavior in few cases.
The behavioral changes address the following corner cases:
* `.` is added to the allowed characters in label values (previously was substituted with `-`).
* when the first character of a label value is an accepted one but not alphanumeric (i.e., `-` , `_` or `.`) we drop it (previously we prepended `m` to the label).
* if the last character of a label value is not alphanumeric (i.e., `-` , `_` or `.`) we drop it (previously was not checked).
note that for the MachineInventory name (which will also be the machine hostname after k8s provisioning) the allowed set of characters has not changed: it's the same of the label case but without the `_` (i.e., `-` or `.`).

 Regarding the MachineRegistration.spec.machineName:
* if it is empty, a default `m-${UUID}` value is assigned to the MachineInventory.name (as previously)
* if it contains a template value which doesn't exists (wrong template value or `nosmbios` option) the MachineInventory.name is assigned a default `m-${UUID}` name (new behavior).
* if it is not empty, but after resolving the template values and sanitizing the string it gets empty, the name assignment process will error out failing the registration process.

Commits:

* operator: move label templating functions to separate file
no code changes, just label templating functions moved to labeltmpl.go.

* operator: add pkg/templater

* operator: add few comments

* operator: rework label templating
Fixes #807

* tests: update api_registration_test.go

* operator: move regexp to label templating file

* operator: change template behavior in corner cases
1. '.' is added to the allowed characted in label values (previously was
   sobsituted with '-').
2. when the first character of a label value is not alphanumeric ("-" or
   "_" or ".") we drop it (previously we prepended 'm').
3. if the last characted of a label value is not alphanumeric ("-" or
   "_" or ".") we drop it (previously was not checked).

* tests: improve coverage of label templating

* make linter happy

Signed-off-by: Francesco Giudici <francesco.giudici@suse.com>
2024-08-05 16:05:39 +02:00
Andrea Mazzotti bc2f5cfc81
Let elemental-register digest system hardware data (#748)
* Let elemental-register digest system hardware data (SystemData V2)

Signed-off-by: Andrea Mazzotti <andrea.mazzotti@suse.com>
2024-06-04 14:03:06 +02:00
Francesco Giudici 3379c85c40
register: don't send new Disks and Controllers data (#741)
The newer versions of jaypipes/ghw include a new type of Disk and
Controller in the Blocks section.

We use the library json serialization functionality: the deserialization
function of the older version of the library (0.9.0) would error out
when trying to decode serialized data of newer versions if they include
the new "virtual" drive or the new "loop" controller.
For now, just remove those devices.
Proper fix will be to better deal with this kind of errors avoiding
tearing down the registration process.

Signed-off-by: Francesco Giudici <francesco.giudici@suse.com>
2024-05-28 17:23:07 +02:00
Fredrik Lönnegren 0a4fe2e71e Add hostname to system-data
Add new ${System Data/Runtime/Hostname} key to the registration data
sent from the elemental-register command.

Signed-off-by: Fredrik Lönnegren <fredrik.lonnegren@suse.com>
2024-01-12 09:41:39 +01:00
Fredrik Lönnegren da0776b710 Update copyright year (2024)
Signed-off-by: Fredrik Lönnegren <fredrik.lonnegren@suse.com>
2024-01-05 13:14:27 +01:00
Francesco Giudici 29a0ee051d
operator: labels minor improvements (#363)
* operator: isolate hostinfo data

Since we already wrap the "ghw" library to collect system data in the
hostinfo package, let's move all the logic dealing with conversion from
raw data to labels there for better isolation.

* operator: add few more fields in System Data collection

In particular, NICs MAC address

---------

Signed-off-by: Francesco Giudici <francesco.giudici@suse.com>
2023-02-20 16:10:42 +00:00
Fredrik Lönnegren b9d1c82976
Copyright date-range 2022 - 2023 (#327)
Signed-off-by: Fredrik Lönnegren <fredrik.lonnegren@suse.com>

Signed-off-by: Fredrik Lönnegren <fredrik.lonnegren@suse.com>
2023-01-13 10:30:48 +01:00
Itxaka 7b8af5995f
Send full system data on registration (#276) 2022-12-14 16:23:15 +01:00