Commit Graph

485 Commits

Author SHA1 Message Date
Avgustin Marinov
10da0288d9 Fix sonar findings (#2572)
Signed-off-by: Avgustin Marinov <Avgustin.Marinov@bosch.com>
2025-07-30 10:13:23 +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
Avgustin Marinov
7752ec6c24 Fix comple attribute RSQL filters (#2564)
Signed-off-by: Avgustin Marinov <Avgustin.Marinov@bosch.com>
2025-07-24 14:01:49 +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
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
edd6dabb90 Move artifact encryption to hawkbit-artifact-api where it does belong (#2540)
Signed-off-by: Avgustin Marinov <Avgustin.Marinov@bosch.com>
2025-07-10 11:57:44 +03:00
Avgustin Marinov
ea06783fa2 Refactor RSQL Utility - make it singleton and injectable (#2536)
Signed-off-by: Avgustin Marinov <Avgustin.Marinov@bosch.com>
2025-07-07 17:16:26 +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
426bdbf179 Move Query Language (RSQL) in separate package and add Entity Matcher (#2531)
* Move Query Language (RSQL) in separate package - hawkbit-repository-ql
* Add Entity Matcher which match an entity object agains filter
* Spec to string utils now in runtime (as a library) - could be used in tests or to dump something in runtimes
* Move eclipselink/hibernate profiles in new QL module, this way provided / set to hawkbit-repository-jpa
* Remove unused javax.el imports
2025-07-03 14:41: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
d80e1e004d Fix G3 - deep attributes (#2462) 2025-06-17 15:44:55 +03:00
Avgustin Marinov
103a0dade0 Fix / improves management of the Rollout's total target counter (#2449)
Signed-off-by: Avgustin Marinov <Avgustin.Marinov@bosch.com>
2025-06-12 15:15:25 +03:00
Avgustin Marinov
4cfd90b745 Fix dynamic rollout override behavior (#2447)
Since static assigments of dynamic rollouts always override the oldest rollouts
it seems more consistent if this is the case also with dynamic assigments. I.e.
all older are overriden and if there are actions of newer rollouts - won't be assigned.

Signed-off-by: Avgustin Marinov <Avgustin.Marinov@bosch.com>
2025-06-11 15:24:48 +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
6167dce214 Hide getRolloutWithStatusDetails from API (#2442)
Signed-off-by: Avgustin Marinov <Avgustin.Marinov@bosch.com>
2025-06-10 11:50:45 +03:00
Vasil Ilchev
09a3d3e0c6 Fix retrieve Rollout with details (#2435)
* Fix retrieve Rollout with details

* Rename RolloutManagement method for retrieve Rollout slice with details. Slight refactoring in MgmtRolloutMapper

---------

Co-authored-by: vasilchev <vasil.ilchev@bosch.com>
2025-06-09 15:38:20 +03:00
Avgustin Marinov
0e0b5ed6ff Fix dynamic rollouts when there are finished actions from previous rollouts (#2434)
Signed-off-by: Avgustin Marinov <Avgustin.Marinov@bosch.com>
2025-06-06 16:13:21 +03:00
Avgustin Marinov
282af77bfc Specify JPA Database H2 in SpecificationBuilderTests (#2432)
Signed-off-by: Avgustin Marinov <Avgustin.Marinov@bosch.com>
2025-06-06 11:32:24 +03:00
Avgustin Marinov
ebdcab2aaa Extends RSQL standalone tests (#2431)
* add more complex filters (and / or)
* add tests for legacy specification builders (visitors) in order to clearly check backward compatibility

Signed-off-by: Avgustin Marinov <Avgustin.Marinov@bosch.com>
2025-06-05 17:08:10 +03:00
Avgustin Marinov
23fa4cdd56 Fix != and =out= for maps in G2 RSQL to Specification (#2426)
+ add initial draft of Standalone RSQL test
+ provide option to override Hibernate / Eclipselink configuration via standard spring environment properties

Signed-off-by: Avgustin Marinov <Avgustin.Marinov@bosch.com>
2025-06-04 16:30:33 +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
12140e468d [#2176] RSQL filtering with exist/not-exist support (#2396)
* [#2176] RSQL filtering with exist/not-exist support

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

* [#2176] Big Refactoring

* RSQL: all maps with joins with on

---------

Signed-off-by: Avgustin Marinov <Avgustin.Marinov@bosch.com>
2025-05-16 16:13:04 +03:00
Avgustin Marinov
c0e89fbbee Fix RSQL G2 visitor and referenes (e.g. assignedds) with multiple conditions (2) (#2406)
Signed-off-by: Avgustin Marinov <Avgustin.Marinov@bosch.com>
2025-05-16 15:11:25 +03:00
Avgustin Marinov
86fca64e51 Fix RSQL G2 visitor and referenes (e.g. assignedds) with multiple conditions (#2405)
Signed-off-by: Avgustin Marinov <Avgustin.Marinov@bosch.com>
2025-05-16 14:06:30 +03:00
Avgustin Marinov
05bcebc0f9 Remove ParseExceptionWrapper (unused) (#2403)
Signed-off-by: Avgustin Marinov <Avgustin.Marinov@bosch.com>
2025-05-15 15:34:07 +03:00
Avgustin Marinov
9f8ee8041f Remove RSQL oracle as not used anymore (UI leftover) (#2397)
Signed-off-by: Avgustin Marinov <Avgustin.Marinov@bosch.com>
2025-05-13 15:14:25 +03:00
Avgustin Marinov
00b129ad95 [#2343] Deny scheduled rollout creation when no HANDLE_ROLLOUT permission (#2357)
Signed-off-by: Avgustin Marinov <Avgustin.Marinov@bosch.com>
2025-04-15 13:44:15 +03:00
Avgustin Marinov
2af5439b39 Clustering: Add distributed lock (#2333)
To support sync of activities in cluster setups

Signed-off-by: Avgustin Marinov <Avgustin.Marinov@bosch.com>
2025-04-02 12:25:08 +03:00
Avgustin Marinov
21ec2e581a Fix AMQP retries when attribute characters are invalid (#2327)
Signed-off-by: Avgustin Marinov <Avgustin.Marinov@bosch.com>
2025-03-26 16:53:48 +02:00
Avgustin Marinov
b2dcc19f5d [#2191] Remove DB2 and MS SQL support (#2321)
Signed-off-by: Avgustin Marinov <Avgustin.Marinov@bosch.com>
2025-03-20 13:43:56 +02:00
Avgustin Marinov
b4e391cfe3 Fix flaky DeploymentManagementTest.distribution (#2301)
Signed-off-by: Avgustin Marinov <Avgustin.Marinov@bosch.com>
2025-02-25 10:33:33 +02:00
Avgustin Marinov
4ded430c39 remove_debug_from_ro_flow_test (#2265) 2025-02-07 13:53:28 +02:00
Avgustin Marinov
0fc076aaca Optimize DB usage on DDI REST API calls (#2264)
Signed-off-by: Avgustin Marinov <Avgustin.Marinov@bosch.com>
2025-02-07 12:32:51 +02:00
Avgustin Marinov
46caed139d Remove unused group repo methods (#2263)
Signed-off-by: Avgustin Marinov <Avgustin.Marinov@bosch.com>
2025-02-04 17:21:04 +02:00
Avgustin Marinov
e3c41eb0b2 Fix CustomBaseRepositoryBean - not initialized in some cases (#2241)
Signed-off-by: Avgustin Marinov <Avgustin.Marinov@bosch.com>
2025-01-27 14:53:28 +02:00
Avgustin Marinov
c766fd76da Sonar Fixes (#2240)
Signed-off-by: Avgustin Marinov <Avgustin.Marinov@bosch.com>
2025-01-27 11:45:14 +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
51054bdd2f Sonar Fixes (#2231)
Signed-off-by: Avgustin Marinov <Avgustin.Marinov@bosch.com>
2025-01-24 13:41:39 +02:00
Avgustin Marinov
e6c8215d05 Sonar Fixes (#2229)
Signed-off-by: Avgustin Marinov <Avgustin.Marinov@bosch.com>
2025-01-24 10:08:31 +02:00
Avgustin Marinov
1104256c4c Sonar Fixes (11) (#2223)
Signed-off-by: Avgustin Marinov <Avgustin.Marinov@bosch.com>
2025-01-23 17:56:58 +02:00