Commit Graph

200 Commits

Author SHA1 Message Date
Avgustin Marinov
1be473b22c [#2845] Bump Spring boot to 4.x (#2941)
Notes:
1. (!) Eclipselink shall be migrated to 5.0 (in 4.0.8 there are incompatible classes, e.g EJBQueryImpl doesn't implement some newer methods). In the moment is with beta (5.0.0-B12) - JUST for testing!
2. (!) Ethlo plugin doesn't work with Eclipselink 5.0, it builds with Eclipselink 4.0.8 (could be a problem)
3. Dependencies - new starters, test starters changes, some dependencies refactoring
4. Auto-configs split - package changes, some properties classes changes
5. Spring nullable org.springframework.lang.Nullable/NonNull are depecated and replaced with jspcify -> org.jspecify.annotations.Nullable/NonNull (NullMarked)
6. Lombok config - adding lombok.addNullAnnotations=jspecify - to do not mess annotations
7. Distributed lock table changes - SP_LOCK table db migration
8. Spring Retry replaced with Spring Core Retry - does repace retry in hawkbit
9. Specifications -> added Update/Delete(/Predicate) Specifications and JpaSpecificationExecutor changed
10. HawkbitBaseRepositoryFactoryBean modified to register properly
11. Jackson - 2 -> 3, package migrations, finals are not deserialized by default(enable finals deserialization, consider make non-final), too ‘smart’ tries to set complex objects instead of using non args constructor (-> @JsonIgnore), some other default configs made

Signed-off-by: Avgustin Marinov <Avgustin.Marinov@bosch.com>
2026-04-14 11:31:41 +03:00
Avgustin Marinov
b38df5b512 WithUser refactoring (#2944)
Signed-off-by: Avgustin Marinov <Avgustin.Marinov@bosch.com>
2026-02-27 14:30:52 +02:00
Avgustin Marinov
5d043b2766 Improve WithUser testing (#2943)
Signed-off-by: Avgustin Marinov <Avgustin.Marinov@bosch.com>
2026-02-27 12:59:13 +02:00
Avgustin Marinov
56da119979 Remove SYSTEM_ADMIN (#2936)
Not needed. Overlaping with system role. Could be added on top of others if needed

Signed-off-by: Avgustin Marinov <Avgustin.Marinov@bosch.com>
2026-02-25 14:00:25 +02:00
Avgustin Marinov
ea9519deae Fix #2928 - add ddi containers volume (#2935)
Signed-off-by: Avgustin Marinov <Avgustin.Marinov@bosch.com>
2026-02-24 12:26:15 +02:00
Avgustin Marinov
2660bca4c7 Unify sp_rollout_group.target_percentage type REAL -> FLOAT (#2930)
Signed-off-by: Avgustin Marinov <Avgustin.Marinov@bosch.com>
2026-02-23 14:38:39 +02:00
Avgustin Marinov
520b887b70 [#2918] Refactor FileStreamingUtil (#2921)
Signed-off-by: Avgustin Marinov <Avgustin.Marinov@bosch.com>
2026-02-13 17:11:43 +02:00
Avgustin Marinov
62c76311e5 Fix some compile warnings (#2919)
* Fix some compile warnings
* Some classes made final
* JPA entities made not serializable

Signed-off-by: Avgustin Marinov <Avgustin.Marinov@bosch.com>
2026-02-11 14:05:46 +02:00
Stanislav Trailov
c33156b134 Multi-Asssignments feature removal (#2893)
* Multi-Asssignments feature removal

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

* fix some sonar findings

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

* fixes after review

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

---------

Signed-off-by: strailov <Stanislav.Trailov@bosch.io>
2026-02-04 16:59:09 +02:00
Vasil Ilchev
69840310e7 Addressing some of the recent created Issues (#2891)
* Add missing open api schema for Creation of DistributionSet #2745
* Fixed Target Security Token lenght in doc - possible max value 128 chars
* Re-visit Security token doc

---------
Signed-off-by: vasilchev <vasil.ilchev@bosch.com>
2026-01-27 11:12:48 +02:00
Avgustin Marinov
358e4a6d3f Remove GONE API response where unnecessary - 3 MgmtSoftwareModuleRestApi Methods (related to #2880) (#2888)
Signed-off-by: Avgustin Marinov <Avgustin.Marinov@bosch.com>
2026-01-23 11:03:13 +02:00
Avgustin Marinov
d9e52cb542 Fix #2880 findings (#2887)
Signed-off-by: Avgustin Marinov <Avgustin.Marinov@bosch.com>
2026-01-23 10:15:45 +02:00
Avgustin Marinov
97762360c3 Refactor REST Constants (#2881)
Signed-off-by: Avgustin Marinov <Avgustin.Marinov@bosch.com>
2026-01-22 17:06:44 +02:00
Avgustin Marinov
5d562abd3c Optimize API responses (#2880)
* remove generic 405 - put only where needed
* remove 429 from get/post update where not expected (not quota related in general)

Signed-off-by: Avgustin Marinov <Avgustin.Marinov@bosch.com>
2026-01-22 13:28:04 +02:00
Avgustin Marinov
d55f1ffa10 Refactor @ApiResponses annotations (#2879)
Signed-off-by: Avgustin Marinov <Avgustin.Marinov@bosch.com>
2026-01-22 09:10:10 +02:00
Vasil Ilchev
0083d5538a Introduce Pause Success Action (#2867)
* Introduce Pause Success Action

Signed-off-by: vasilchev <vasil.ilchev@bosch.com>

* Instead of overriding SuccessAction, trigger next group from resume rollout
Fix Rollout Mgmt Resource to accept new Pause Action

Signed-off-by: vasilchev <vasil.ilchev@bosch.com>

* Review findings

Signed-off-by: vasilchev <vasil.ilchev@bosch.com>

* Remove unused import

---------

Signed-off-by: vasilchev <vasil.ilchev@bosch.com>
2026-01-13 11:20:21 +02:00
Stanislav Trailov
3bc8a91883 Fix tenant scope on retrieval of target groups (#2847)
* Fix tenant scope on retrieval of target groups

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

* fix build

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

---------

Signed-off-by: strailov <Stanislav.Trailov@bosch.io>
2025-12-10 09:37:38 +02:00
Avgustin Marinov
29da04f6da Remove unnecessary API module dependencies (#2842)
Signed-off-by: Avgustin Marinov <Avgustin.Marinov@bosch.com>
2025-12-02 13:53:36 +02:00
Avgustin Marinov
b8a05e3cbf Refactor tenant configuration management (#2840)
Signed-off-by: Avgustin Marinov <Avgustin.Marinov@bosch.com>
2025-11-28 15:37:12 +02:00
Avgustin Marinov
203598f3a4 Fix auth -> authentication in some props in SDK (#2839)
Signed-off-by: Avgustin Marinov <Avgustin.Marinov@bosch.com>
2025-11-28 09:13:41 +02:00
Avgustin Marinov
f6f62db0ad Refactor hawkbit core and security (#2833)
* Refactor hawkbit core and security

* improve access to the base core features - static
* thus easiear access
* and less boilerplate passing of instances

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

* Refactor context classes

* make JSON context serialization default

* AccessContext

* Split hawkbit-security-core to other modules and remove it

---------

Signed-off-by: Avgustin Marinov <Avgustin.Marinov@bosch.com>
2025-11-27 13:07:49 +02:00
Stanislav Trailov
58dbc32a80 429 Response status code on quota hit (#2834)
Signed-off-by: strailov <Stanislav.Trailov@bosch.io>
2025-11-27 09:40:33 +02:00
Avgustin Marinov
80165de06a [#2746] Add required annotations to MgmtRolloutRestRequestBodyPost (#2818)
+ amountGroups made optional with default value 1 group

Signed-off-by: Avgustin Marinov <Avgustin.Marinov@bosch.com>
2025-11-18 14:25:32 +02:00
Vasil Ilchev
76a77f85e2 Allign MGMT Rest APIs -> return 204 NO_CONTENT w/o body where success… (#2793)
* Allign MGMT Rest APIs -> return 204 NO_CONTENT w/o body where success w/o body is intended

# Conflicts:
#	hawkbit-mgmt/hawkbit-mgmt-api/src/main/java/org/eclipse/hawkbit/mgmt/rest/api/MgmtTargetTagRestApi.java

* Fix File download wrong no_content, Fix Tests

* Fix ApiResponses where missed 200->204

---------

Co-authored-by: vasilchev <vasil.ilchev@bosch.com>
2025-11-17 12:53:44 +02:00
Avgustin Marinov
c5ea265e0f Extract QL support in a top level module (#2808)
Signed-off-by: Avgustin Marinov <Avgustin.Marinov@bosch.com>
2025-11-14 14:19:36 +02:00
Avgustin Marinov
7e4cc45315 Refactor maven modules (#2806)
Signed-off-by: Avgustin Marinov <Avgustin.Marinov@bosch.com>
2025-11-13 17:24:27 +02:00
Avgustin Marinov
3eee35b85b Remove MgmtContentTypeTest (#2802)
not clear what does it test - it seems it test id spring considers server.servlet.encoding props

Signed-off-by: Avgustin Marinov <Avgustin.Marinov@bosch.com>
2025-11-13 15:19:35 +02:00
Avgustin Marinov
62139055b0 Remove deprecated (#2800)
* ActionFields.DETAILSTATUS removed and replaces with STATUS (so status is with changed semantic - not active but real status)
* MgmtAction.detailStatus removed and replaced with status (so status is with changed semantic - not active but real status)
* MgmtTargetTagRestApi.assignTargetsPut removed - use POST method
* ActionStatusFields.REPORTEDAT deprecation removed - it is a synonym of CREATEDAT but is part of timestamp/reported aspect while createdat is part of creted at/by
* MgmtDistributionSetRequestBodyPost.os/runtime/application is removed

and

* ActionStatusFields.TIMESTAMPT added

Signed-off-by: Avgustin Marinov <Avgustin.Marinov@bosch.com>
2025-11-13 13:39:03 +02:00
Avgustin Marinov
64bdced682 Tune/fix action cleanup tenant properties (#2782)
* actions.cleanup.onQuotaHit.percent -> action.cleanup.onQuotaHit.percent
* action.cleanup.enabled - removed - instead enabled / disable <=> expire < / >= 0
* action.cleanup.actionExpiry -> action.cleanup.auto.expiry and action.cleanup.auto.status - so both are under action.cleanup.auto, and differentiate from on quota hit
* auto db convert of props with one backward incompatibility - if you had action.cleanup.enabled=true and not set action.cleanup.actionExpiry (assuming default 30 days) - auto cleanup will be disabled
  you should set action.cleanup.auto.expiry=2592000000 in order to get the old behavior
* Note that if you have configured global action cleanup the properties are changed also this config you shall change manually

Signed-off-by: Avgustin Marinov <Avgustin.Marinov@bosch.com>
2025-10-28 12:40:37 +02:00
Avgustin Marinov
60d6604eff Fix limited DS complete filtering when and becomes comparison (#2780)
Signed-off-by: Avgustin Marinov <Avgustin.Marinov@bosch.com>
2025-10-28 11:27:06 +02:00
Avgustin Marinov
dc8211c64b Fix case sensitiveness of limited DS complete search support (#2774)
Signed-off-by: Avgustin Marinov <Avgustin.Marinov@bosch.com>
2025-10-24 10:58:47 +03:00
Avgustin Marinov
3caa9d9eda Switch completely to locked for checking if DS could be functionally modified (#2766)
Signed-off-by: Avgustin Marinov <Avgustin.Marinov@bosch.com>
2025-10-22 11:46:36 +03:00
Avgustin Marinov
e154e1b18a [#2429] Add completeness property for software modules (#2765)
* add `min artifacts` requirement on the Software Module Type level for Software Module completeness
* removed `complete` Distribution Set property from DB - calculated runtime
* Distribution Set and Software Module completeness is calcualted on demand in memory (TODO: implement cache)
* locking of Software Module now requires the software module to be `completed`
* removed 'complete' search field for DistributionSet type. Still keep (DEPRECATED) limited support for search with 'complete' -
  only on the first level of expression and with AND. I.e. complete==true, complete==false and id=in=(1, 3) is suppoted,
  while complete==false or id=in=(1, 3) and id=in(1, 3) and (type==os and complete==true) are not

Signed-off-by: Avgustin Marinov <Avgustin.Marinov@bosch.com>
2025-10-22 09:57:45 +03:00
Stanislav Trailov
f1c3d0175e Action history cleanup/purge initial (#2728)
* Action history cleanup/purge initial

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

* apply changes after review

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

* fix hibernate build by annotating delete methods with transactional annotation

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

* changes after review and new test cases for new requirements

* accept 0 for keep last

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

* Fix ManagementSecurityTest

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

* apply object utils check

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

* fix for oldestAction deletion

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

* remove unused comment

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

* rename action ids variable

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

* Fix access control handling

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

---------

Signed-off-by: strailov <Stanislav.Trailov@bosch.io>
Signed-off-by: Avgustin Marinov <Avgustin.Marinov@bosch.com>
Co-authored-by: Avgustin Marinov <Avgustin.Marinov@bosch.com>
2025-10-21 10:34:58 +03:00
Avgustin Marinov
b10955f3eb Remove System Management REST (#2761)
* the only non repository module using @PreAuthorize
* the only service for "sys admins" - it's a little bit out of scopes
* caches management is not supposed to be via REST
* delete tenant shall not be provided when we don't have create
* metrics shall be reported via metrics colectins services, or db

Signed-off-by: Avgustin Marinov <Avgustin.Marinov@bosch.com>
2025-10-17 10:45:11 +03:00
Florian BEZANNIER
98b4fdc8f7 Fix claims NPE (#2725)
* fix: npe when current claims is null

eror was Object.getClass()" because "current" is null

* style: fix
2025-10-15 14:22:42 +03:00
Avgustin Marinov
811b163d22 Optimize get targets via REST API (#2757)
Signed-off-by: Avgustin Marinov <Avgustin.Marinov@bosch.com>
2025-10-15 14:08:58 +03:00
Avgustin Marinov
741add9f21 Add deprecation log utility - easy way to log usage of deprecated methods (#2741)
Signed-off-by: Avgustin Marinov <Avgustin.Marinov@bosch.com>
2025-10-10 12:58:49 +03:00
Avgustin Marinov
3447ac3b1b Fix system context resolving in ACM (#2737)
Signed-off-by: Avgustin Marinov <Avgustin.Marinov@bosch.com>
2025-10-10 12:02:16 +03:00
Avgustin Marinov
9fb84e2d69 Add MgmtActionResource call log - upcoming deprectaion / changes (#2715)
Signed-off-by: Avgustin Marinov <Avgustin.Marinov@bosch.com>
2025-10-02 11:40:56 +03:00
Avgustin Marinov
4715278ee5 Sonar Findings (#2708)
Signed-off-by: Avgustin Marinov <Avgustin.Marinov@bosch.com>
2025-09-30 09:30:23 +03:00
Avgustin Marinov
ebfaa1d51e Fix sonar findings (#2705)
Signed-off-by: Avgustin Marinov <Avgustin.Marinov@bosch.com>
2025-09-29 13:19:08 +03:00
Avgustin Marinov
a6867219b1 Remove FieldValueConverter (#2699)
* (because) used only for ActionFields.STATUS
* could be part of new Node mapping mechanism
* simplify
* Deprecate ActionFields.STATUS, add / replace it with ActionFields.ACTIVE. In future STATUS will become the real action status (and DETAILSTATUS will be removed)
* Deprecate MgmtAction.getStatus add / replace it with MgmtAction.isActive. In future status will become the real action status (and detailStatus will be removed)

Signed-off-by: Avgustin Marinov <Avgustin.Marinov@bosch.com>
2025-09-26 16:57:10 +03:00
Avgustin Marinov
b181b66ee5 Extend Query Langage Support (#2696)
* add option for parser replacement - so, one could replace the query language and don't use RSQL
* add easy way to modify query root Node 
* add easy Node modification utilities
* code refactored and naming more 'QL' than 'RSQL' oriented

Signed-off-by: Avgustin Marinov <Avgustin.Marinov@bosch.com>
2025-09-26 14:19:25 +03:00
Avgustin Marinov
1a44acf503 Fix role hierarchy (missing new line) (#2689)
Signed-off-by: Avgustin Marinov <Avgustin.Marinov@bosch.com>
2025-09-24 10:12:26 +03:00
Avgustin Marinov
c20ee8bdf3 Fix fine-grained permissions config (#2688)
* disabled by default
* evaluaton context considers fine-grained only when acm is enabled

Signed-off-by: Avgustin Marinov <Avgustin.Marinov@bosch.com>
2025-09-24 09:40:27 +03:00
Avgustin Marinov
e19b11290d Fix Sonar Findings (#2679)
Signed-off-by: Avgustin Marinov <Avgustin.Marinov@bosch.com>
2025-09-19 10:25:18 +03:00
Florian Kromer
ade9904d21 fix: maxAssingments required property in MgmtSoftwareModuleTypeRequestBodyPost (#2671)
resolves #2669
2025-09-16 10:51:29 +03:00
Vasil Ilchev
20768a550c Sync property naming convention (#2664)
Co-authored-by: vasilchev <vasil.ilchev@bosch.com>
2025-09-10 14:55:51 +03:00
Avgustin Marinov
2d45e2a76c Fix Json serializer defaults (#2663)
Signed-off-by: Avgustin Marinov <Avgustin.Marinov@bosch.com>
2025-09-10 10:56:19 +03:00