Commit Graph

50 Commits

Author SHA1 Message Date
Avgustin Marinov
08cacf9034 Soft Module metadata as complex map value (#2568)
---------

Signed-off-by: Avgustin Marinov <Avgustin.Marinov@bosch.com>
2025-07-30 17:29:02 +03:00
Vasil Ilchev
4a8e60764f Remote Events migrated from Spring Bus to Spring Cloud Stream (#2563)
* Remote Events migrated from Spring Bus to Spring Cloud Stream

---------

Co-authored-by: vasilchev <vasil.ilchev@bosch.com>
2025-07-30 16:58:00 +03:00
Avgustin Marinov
2b66449ff1 Fine grained repository permissions (#2562)
1. Introduce @PrreAuthorize check based on hasPermission - allowing custom processing (compared with non-modifiable hasAuthority/Role processing)
2. Dedicated permissions could be implemented on management api level. Check is made by plugged in PermissionEvaluator
3. Thus common XXX_REPOSITORY permissions could differ for extending services
4. Change create/update entity builder pattern - not via EntityFactory but via clean static lombok based builders (with fine fluent api).
5. Implement abstract repository management jpa class that handles the boilerplate code from extending classes in single place consistently -> AbsreactJpaRepositoryManagement
6. Register management api-s as **Sevice**-s instead of **Bean**-s in order to make easier maintainable and get away from heavy argument forwading
7. Simplify custom hawkbit repository registration + adding proxy to handle exception mapping at lower level - thus not depending on Aspects for converting exceptions
8. Implemented general purpose 'copy' utility (ObjectCopyUtil) that using getter/setter patterns is able to copy (e.g. Create/Update) objects to other objects (e.g. JPA entity objects)
2025-07-28 14:57:33 +03:00
Stanislav Trailov
b4793fcce1 Introduce target grouping (#2538)
* Introduce target grouping

Signed-off-by: strailov <Stanislav.Trailov@bosch.io>

* minor refactor

Signed-off-by: strailov <Stanislav.Trailov@bosch.io>

* throw validation exception instead direct returning bad request response

Signed-off-by: strailov <Stanislav.Trailov@bosch.io>

* fix group query parameter

Signed-off-by: strailov <Stanislav.Trailov@bosch.io>

* remove wrongly added import

Signed-off-by: strailov <Stanislav.Trailov@bosch.io>

* add review fixes

Signed-off-by: strailov <Stanislav.Trailov@bosch.io>

* apply latest review changes

Signed-off-by: strailov <Stanislav.Trailov@bosch.io>

* apply latest changes after sybnc/review

Signed-off-by: strailov <Stanislav.Trailov@bosch.io>

* fix after review

Signed-off-by: strailov <Stanislav.Trailov@bosch.io>

---------

Signed-off-by: strailov <Stanislav.Trailov@bosch.io>
2025-07-14 15:48:37 +03:00
Avgustin Marinov
e7373275bf Add distribution set and target type fine grained permissions (#2545)
Signed-off-by: Avgustin Marinov <Avgustin.Marinov@bosch.com>
2025-07-14 14:52:36 +03:00
Avgustin Marinov
c3fdd9fcc8 Refactor permissions (#2544)
Signed-off-by: Avgustin Marinov <Avgustin.Marinov@bosch.com>
2025-07-11 16:50:01 +03:00
Avgustin Marinov
21581c4ea4 Fine-grained permissions (#2535)
* Fine-grained permissions

Adds support for permissions of type <permission>(/<rsql filter scope>)

Signed-off-by: Avgustin Marinov <Avgustin.Marinov@bosch.com>

* Apply review fixes

---------

Signed-off-by: Avgustin Marinov <Avgustin.Marinov@bosch.com>
2025-07-10 13:51:49 +03:00
Avgustin Marinov
7f97d6f441 Add support for pollingTime overrides (#2533)
* Add support for pollingTime overrides

* the current format HH:mm:ss is still supported
* add option for deviation percent (HH:mm:ss~\d{1,2}%) which allows the system to do some randomizing of the poll interval
* add support for overriding default polling time interval for devices matching some RSQL filters (in order), e.g. 01:00:00~10%, group == 'eu' -> 00:02:00~15%, status != in_sync -> 00:05:00
* IMPORTANT: overdue time is calculated according to the default polling time. So, the overdue status might be incorrect for targets with overridden poll interval

Signed-off-by: Avgustin Marinov <Avgustin.Marinov@bosch.com>

* Remove min polling time from the tenant config - it is a system configuration

Signed-off-by: Avgustin Marinov <Avgustin.Marinov@bosch.com>

* Add support for bigger poll intervals and overdue + duration format config support

Signed-off-by: Avgustin Marinov <Avgustin.Marinov@bosch.com>

---------

Signed-off-by: Avgustin Marinov <Avgustin.Marinov@bosch.com>
2025-07-07 16:33:55 +03:00
Avgustin Marinov
8c6d56f177 Make some test timeouts (await) configurable (#2525)
Signed-off-by: Avgustin Marinov <Avgustin.Marinov@bosch.com>
2025-07-02 12:45:26 +03:00
Avgustin Marinov
affae1026a Improve Spring Bus usage (remove stream direct use) (#2521)
* Improve Spring Bus usage (remove stream direct use)

Signed-off-by: Avgustin Marinov <Avgustin.Marinov@bosch.com>

* Remove getApplicaton when creating remote events

---------

Signed-off-by: Avgustin Marinov <Avgustin.Marinov@bosch.com>
2025-07-02 08:32:55 +03:00
Avgustin Marinov
5586e4b302 Fix Sonar findings (#2489)
Signed-off-by: Avgustin Marinov <Avgustin.Marinov@bosch.com>
2025-06-23 10:19:43 +03:00
Avgustin Marinov
ef25aa59f0 Fix new line after @Test (#2486)
Signed-off-by: Avgustin Marinov <Avgustin.Marinov@bosch.com>
2025-06-20 17:42:55 +03:00
Avgustin Marinov
cb7f1107fe Remove allure (phase2) (#2483)
Signed-off-by: Avgustin Marinov <Avgustin.Marinov@bosch.com>
2025-06-20 15:51:06 +03:00
Avgustin Marinov
651bd7df98 Deprecate PUT target tag multi-assignment (#2468)
* Deprecate PUT /rest/v1/targettags/{targetTagId}/assigned -> use new POST method with same endpoint and params
* Remove deprecated DS tag mulit-assigned PUT method /rest/v1/distributionsettags/{distributionsetTagId}/assigned -> use already existing POST method with same endpoint and params

Signed-off-by: Avgustin Marinov <Avgustin.Marinov@bosch.com>
Co-authored-by: github-actions[bot] <github-actions[bot]@users.noreply.github.com>
2025-06-18 15:13:25 +03:00
Avgustin Marinov
2992f5c211 Refactor management api style (#2445)
Signed-off-by: Avgustin Marinov <Avgustin.Marinov@bosch.com>
2025-06-10 17:09:03 +03:00
Avgustin Marinov
e643707d41 Refactoring/simplifying rest resources code (#2443)
Signed-off-by: Avgustin Marinov <Avgustin.Marinov@bosch.com>
2025-06-10 14:06:43 +03:00
Avgustin Marinov
c3aa2b7ae7 Rsql G3 (#2423)
* Rsql G3
* Move legacy and G2 visors in rsqllegacy and deprecate
* Refactor RSQLUtility

Signed-off-by: Avgustin Marinov <Avgustin.Marinov@bosch.com>

---------

Signed-off-by: Avgustin Marinov <Avgustin.Marinov@bosch.com>
2025-06-02 10:08:13 +03:00
Avgustin Marinov
b4d0ee2c5d Bump spring boot to 3.4.6 and small refactoring (#2414)
Signed-off-by: Avgustin Marinov <Avgustin.Marinov@bosch.com>
2025-05-22 16:17:01 +03:00
Avgustin Marinov
64ee8b9906 JpaSoftwareModule#metadata made map (#2412)
Signed-off-by: Avgustin Marinov <Avgustin.Marinov@bosch.com>
2025-05-21 16:59:25 +03:00
Avgustin Marinov
452d8618d7 JpaDistributionSet#metadata made Map (#2411)
Signed-off-by: Avgustin Marinov <Avgustin.Marinov@bosch.com>
2025-05-21 13:45:18 +03:00
Avgustin Marinov
ceba4f5cfb Unify target attributes and metadata (#2408)
* Unify target attributes and metadata

Currently, the target attributes are Map while the metadata,
which has the same concept is List.
This PR unifies them making the metadata also a Map

Signed-off-by: Avgustin Marinov <Avgustin.Marinov@bosch.com>
2025-05-21 11:26:02 +03:00
Avgustin Marinov
f4fb11535c [#1744] Add permissions to MgmtUserInfo (#2356)
Signed-off-by: Avgustin Marinov <Avgustin.Marinov@bosch.com>
2025-04-15 09:51:21 +03:00
Avgustin Marinov
beda747c67 Remove unnecessary JsonProperty annotations (#2296)
Signed-off-by: Avgustin Marinov <Avgustin.Marinov@bosch.com>
2025-02-25 08:40:14 +02:00
Avgustin Marinov
059fd26fae Add POST REST method for assigning tag to multiple DS (#2280)
!!! the PUT method is deprecated for removal

Signed-off-by: Avgustin Marinov <Avgustin.Marinov@bosch.com>
2025-02-13 14:49:55 +02:00
Vasil Ilchev
64ffc6a27a Mgmt/actions confirm (#2271)
* Extend MGMT API to be possible to confirm/deny Actions on Targets as Operators.

* Added tests

* Fixed permissions in api doc

* added missing license header

---------

Co-authored-by: vasilchev <vasil.ilchev@bosch.com>
2025-02-13 09:10:24 +02:00
Avgustin Marinov
881900600f Sonar Fixes (#2243)
Signed-off-by: Avgustin Marinov <Avgustin.Marinov@bosch.com>
2025-01-27 16:46:28 +02:00
Avgustin Marinov
bbb2193d74 Sonar Fix (#2239)
Signed-off-by: Avgustin Marinov <Avgustin.Marinov@bosch.com>
2025-01-24 20:10:28 +02:00
Avgustin Marinov
ef4c0c6d18 Sonar Fixes (#2234)
Signed-off-by: Avgustin Marinov <Avgustin.Marinov@bosch.com>
2025-01-24 17:22:34 +02:00
Avgustin Marinov
a61e9cd6ae Sonar Fixes (#2233)
Signed-off-by: Avgustin Marinov <Avgustin.Marinov@bosch.com>
2025-01-24 15:41:06 +02:00
Avgustin Marinov
0280d96d2c Sonar Fixes (#2232)
Signed-off-by: Avgustin Marinov <Avgustin.Marinov@bosch.com>
2025-01-24 13:59:10 +02:00
Avgustin Marinov
3d390b9ad7 Sonar Fixes (7) (#2216)
Signed-off-by: Avgustin Marinov <Avgustin.Marinov@bosch.com>
2025-01-21 22:13:54 +02:00
Avgustin Marinov
d71a159db2 Remove use of deprecated RandomStringUtils method (#2207)
Signed-off-by: Avgustin Marinov <Avgustin.Marinov@bosch.com>
2025-01-21 09:10:57 +02:00
Avgustin Marinov
e317a38d6d Fix SonarQube issues (3) (#2206)
Signed-off-by: Avgustin Marinov <Avgustin.Marinov@bosch.com>
2025-01-20 17:04:07 +02:00
Avgustin Marinov
5dabe9117a Fix SonarQube issues (2) (#2205)
Signed-off-by: Avgustin Marinov <Avgustin.Marinov@bosch.com>
2025-01-20 16:29:45 +02:00
Avgustin Marinov
b294798ae5 SystemManagement getTenantMetadata - fetch details, added method getTenantMetadataWithoutDetails (#2194)
Signed-off-by: Avgustin Marinov <Avgustin.Marinov@bosch.com>
2025-01-10 15:37:57 +02:00
Avgustin Marinov
d2799f4bbc Move deprecated repository and mgmt rest methods in separate module (#2177)
Some already deprecated management REST methods are moved in separate module (together with used only for them repository api and impl) in order to have cleanly separate deprecatd REST API.
The new module is hawkbit-mgmt-resource-deprecated. It is inculded, by default, in hawkbit-mgmt-stater.
* when we decide to remove the deprecated REST API implementation completely - will be easily remved - just module and refs
* deprecated REST API could be excluded (by removing the module from runtime) even before that for the runtimes.
* after removal, for some time (untill the usad management and repository APIs are compatible) it will be possible to refer (and include) the deprecated method implementation together with the next hawkBit versions.

The deprecated methods are:
* POST /rest/v1/distributionsettags/{distributionsetTagId}/assigned/toggleTagAssignment
* POST /rest/v1/distributionsettags/{distributionsetTagId}/assigned
* POST /rest/v1/targettags/{targetTagId}/assigned/toggleTagAssignment
* POST /rest/v1/targettags/{targetTagId}/assigned

Signed-off-by: Avgustin Marinov <Avgustin.Marinov@bosch.com>
2025-01-09 11:04:39 +02:00
Avgustin Marinov
6504bc26d9 Refactoring of RepostioryManagement and extending classes (#2174)
* createMetaData renamed to putMetaData
* getXXX methods returing Optional are renamed to findXXX
* unified method order (code cosmetics)

Signed-off-by: Avgustin Marinov <Avgustin.Marinov@bosch.com>
2025-01-08 14:03:04 +02:00
Avgustin Marinov
cad18fe04b [#1238] Fix SpServerError key typos (#2173)
Signed-off-by: Avgustin Marinov <Avgustin.Marinov@bosch.com>
2025-01-08 11:23:40 +02:00
Avgustin Marinov
a7830379c1 Hibernate versioning made to start from 1 to be EclipseLink compatible (#2156)
Signed-off-by: Avgustin Marinov <Avgustin.Marinov@bosch.com>
2024-12-20 12:21:47 +02:00
Avgustin Marinov
c38f28d5a7 Upgrades spring to 3.4.0 (#2154)
Signed-off-by: Avgustin Marinov <Avgustin.Marinov@bosch.com>
2024-12-20 11:30:51 +02:00
Avgustin Marinov
db3ac7f2dd Hibernate support (#2147)
* Hibernate support

---------

Signed-off-by: Avgustin Marinov <Avgustin.Marinov@bosch.com>
2024-12-16 16:08:07 +02:00
Avgustin Marinov
af50e8c938 Fix portable event on setting confirmation status (#2146)
Signed-off-by: Avgustin Marinov <Avgustin.Marinov@bosch.com>
2024-12-12 12:37:03 +02:00
Avgustin Marinov
b6fa00cc3e Remove unused TargetWithActionStatus and its retrieval methods (#2142)
Signed-off-by: Avgustin Marinov <Avgustin.Marinov@bosch.com>
2024-12-11 14:14:35 +02:00
Avgustin Marinov
e0d5d4e061 Add support for native query for multiple JPA vendors (#2129)
Signed-off-by: Avgustin Marinov <Avgustin.Marinov@bosch.com>
2024-12-09 14:02:53 +02:00
Avgustin Marinov
be6a58a38a Added support for different version schemes depending on the provider (#2124)
Signed-off-by: Avgustin Marinov <Avgustin.Marinov@bosch.com>
2024-12-06 14:40:13 +02:00
Avgustin Marinov
6f80038619 JPA Refactoring (4) (#2110)
Signed-off-by: Avgustin Marinov <Avgustin.Marinov@bosch.com>
2024-12-02 14:55:12 +02:00
Avgustin Marinov
794f26bea2 JPA Refactoring (2) (#2108)
Signed-off-by: Avgustin Marinov <Avgustin.Marinov@bosch.com>
2024-12-02 11:52:30 +02:00
Avgustin Marinov
7cb617007a Code refactoring of hawkbit-mgmt (#2055)
Signed-off-by: Avgustin Marinov <Avgustin.Marinov@bosch.com>
2024-11-17 13:35:51 +02:00
Avgustin Marinov
a2f03b3724 Replace CascadeOnDelete eclipse link annotation with CascadeType.REMOVE (#2028)
more standard approach

Signed-off-by: Avgustin Marinov <Avgustin.Marinov@bosch.com>
2024-11-14 17:06:13 +02:00
Avgustin Marinov
baab2fcf95 Move Mgmt artifacts into hawkbit-mgmt (#2003)
Signed-off-by: Avgustin Marinov <Avgustin.Marinov@bosch.com>
2024-11-11 15:57:56 +02:00