Commit Graph

397 Commits

Author SHA1 Message Date
Avgustin Marinov
072809be6c Refactor RSQL serach fields related classes (#1834)
Signed-off-by: Marinov Avgustin <Avgustin.Marinov@bosch.com>
2024-09-09 17:39:45 +03:00
Avgustin Marinov
3e1965a13b Fix sonar finding (#1829)
Signed-off-by: Marinov Avgustin <Avgustin.Marinov@bosch.com>
2024-08-27 17:06:47 +03:00
Avgustin Marinov
7753f6cb5c Optimize RSQL Visitor G2 (#1828)
Use single join for or of same type as 'tag==tag1 or tag==tag2 or tag==tag3'

Signed-off-by: Marinov Avgustin <Avgustin.Marinov@bosch.com>
2024-08-27 16:17:56 +03:00
Avgustin Marinov
de12d9b3de Return back legacy RSQL visitor until G2 maturity (#1825)
Signed-off-by: Marinov Avgustin <Avgustin.Marinov@bosch.com>
2024-08-27 13:16:28 +03:00
Avgustin Marinov
d9d4469a95 Fix RSQL filter for no target tag and OR (#1824)
* Fix RSQL filter for no target tag and OR
* add test for such filter
* Clean up the code

keeps the legacy Rsql Visitor which could be used with hawkbit.rsql.legacyRsqlVisitor=true

---------

Signed-off-by: Marinov Avgustin <Avgustin.Marinov@bosch.com>
2024-08-27 10:48:55 +03:00
Avgustin Marinov
55cc600114 Small serach fields refactoring (add lombok & style) (#1823)
Signed-off-by: Marinov Avgustin <Avgustin.Marinov@bosch.com>
2024-08-23 12:24:29 +03:00
Avgustin Marinov
3002b50807 Improve JpaRolloutHandler logging (#1801)
Signed-off-by: Marinov Avgustin <Avgustin.Marinov@bosch.com>
2024-08-02 16:17:01 +03:00
Avgustin Marinov
6fd52d4b4a Involve all targets in dynamic rollouts (#1795)
* involve targets into dynamic rollouts eagerly - doesn't wait for dynamic group to become running in order to involve devices
* adds trottling for involving targes into dynamic groups
* small style refactoring

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

Signed-off-by: Marinov Avgustin <Avgustin.Marinov@bosch.com
2024-08-01 15:36:29 +03:00
Florian BEZANNIER
0013750f78 feat: allow a target to set offline assigned distribution set (#1620)
* feat: allow a target to set offline assigned distribution set

Signed-off-by: Florian Bezannier <florian.bezannier@hotmail.fr>

* refacto: apply @avgustinmm recommendation

* docs: Mark update offline API as experimental

---------

Signed-off-by: Florian Bezannier <florian.bezannier@hotmail.fr>
2024-08-01 11:51:31 +03:00
Avgustin Marinov
ae09e2fbef [#1778] Prevent deletion of Software Module of locked DS (#1793)
Signed-off-by: Marinov Avgustin <Avgustin.Marinov@bosch.com>
2024-08-01 08:57:50 +03:00
Avgustin Marinov
3189531162 Add support for target tag retrieval via REST (#1782)
Signed-off-by: Marinov Avgustin <Avgustin.Marinov@bosch.com>
2024-07-24 14:01:40 +03:00
Avgustin Marinov
06c06bcd8f Fix Sonar findings (#1779)
Signed-off-by: Marinov Avgustin <Avgustin.Marinov@bosch.com>
2024-07-23 12:06:39 +03:00
Avgustin Marinov
c1de86b29e Remove target tag to target reference (#1772)
* Remove target tag to target reference

it is not used and could lead to extensive memory usage if JPA provider load targets while loading tags

Also, remove search field controller id as not meaningful

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

* Fix review findings

---------

Signed-off-by: Marinov Avgustin <Avgustin.Marinov@bosch.com>
2024-07-19 13:56:30 +03:00
Avgustin Marinov
56ab399493 Remove target type to target reference (#1771)
it is not used and could lead to extensive memory usage if JPA provider load targets while loading types

Signed-off-by: Marinov Avgustin <Avgustin.Marinov@bosch.com>
2024-07-18 18:13:03 +03:00
Avgustin Marinov
683fc1124c Remove unnecessary use of com.google.common.primitives.Ints (#1775)
Signed-off-by: Marinov Avgustin <Avgustin.Marinov@bosch.com>
2024-07-17 13:46:53 +03:00
Avgustin Marinov
87050dd26c Add dynamic group finish scenario test (#1769)
Signed-off-by: Marinov Avgustin <Avgustin.Marinov@bosch.com>
2024-07-15 13:36:12 +03:00
Avgustin Marinov
ff6d7a29f6 Improve building of SQL from an RSQL query (#1766)
* Improve building of SQL from an RSQL query

* ignore case behavior could be disabled
* like is used only when needed

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

* Inlining of some methods and unified IN build + fix case

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

* Implement more flexible ignore case configuration

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

---------

Signed-off-by: Marinov Avgustin <Avgustin.Marinov@bosch.com>
2024-07-15 13:04:47 +03:00
Avgustin Marinov
494170405a Small Rollout create code improvements (#1754)
Signed-off-by: Marinov Avgustin <Avgustin.Marinov@bosch.com>
2024-06-26 11:06:56 +03:00
Avgustin Marinov
4b2c454f1d Fix flaky rollouts flow test (#1753)
Signed-off-by: Marinov Avgustin <Avgustin.Marinov@bosch.com>
2024-06-26 10:14:10 +03:00
Avgustin Marinov
8b3434fc17 Add support for dynamic rollout group template (#1752)
1. Add support in REST and Mgmt API for dynamic group template
2. If present - groups follows the pattern of this template, otherwise - the last static group
3. This allows to create pure dynamic rollout with 0 static groups - auto assignment equivalent with groups

Signed-off-by: Marinov Avgustin <Avgustin.Marinov@bosch.com>
2024-06-26 08:31:01 +03:00
Avgustin Marinov
40f99962d2 Add REST method for update rollout (#1749)
* adds PUT method for updating name and description of a rollout
* restrict RolloutUpdate to changing only name and description
* small refactoring

Signed-off-by: Marinov Avgustin <Avgustin.Marinov@bosch.com>
2024-06-24 09:16:39 +03:00
Avgustin Marinov
9b5c4851c5 Add locked Distribution Set delete tests (#1729)
Signed-off-by: Marinov Avgustin <Avgustin.Marinov@bosch.com>
2024-05-07 11:22:32 +03:00
Avgustin Marinov
d1b7f1d70e Fixed SecurityContextSwitch method name (#1716)
Signed-off-by: Marinov Avgustin <Avgustin.Marinov@bosch.com>
2024-04-15 09:04:21 +03:00
Avgustin Marinov
da67193e0f Make SecurityContextSwitch more intuitive (#1715)
Signed-off-by: Marinov Avgustin <Avgustin.Marinov@bosch.com>
2024-04-12 17:48:58 +03:00
Avgustin Marinov
1f2dd28ab6 [#1712] Fix READ_TENANT_CONFIGURATION hierarchy and add tests (#1714)
Signed-off-by: Marinov Avgustin <Avgustin.Marinov@bosch.com>
2024-04-12 17:39:31 +03:00
Avgustin Marinov
8b3a6f084d [#1651] Fix tag config - case insensitive (test) (#1681)
Signed-off-by: Marinov Avgustin <Avgustin.Marinov@bosch.com>
2024-03-08 15:44:10 +02:00
Avgustin Marinov
936e6d6d66 [#1651] Implement skip DistributionSet implicit lock on DS tags (#1680)
tags the implicit lock is skipped on are configured via
RepositoryProperties.skipImplicitLockForTags list.
By default skip tags are the ones with names:
"skip-implicit-lock", "skip_implicit_lock", "SKIP_IMPLICIT_LOCK", "SKIP-IMPLICIT-LOCK"

+ this commit centralize the implicit lock enable/disable logic

Signed-off-by: Marinov Avgustin <Avgustin.Marinov@bosch.com>
2024-03-08 14:58:31 +02:00
Avgustin Marinov
4d104873de [#1651] Add SoftwareModule and DistributionSet unlock (Mgmt) (#1676)
Signed-off-by: Marinov Avgustin <Avgustin.Marinov@bosch.com>
2024-03-08 09:19:11 +02:00
Avgustin Marinov
1640025a25 Apply role hierarchy in hasPermission checks (#1675)
Signed-off-by: Marinov Avgustin <Avgustin.Marinov@bosch.com>
2024-03-07 18:52:50 +02:00
Avgustin Marinov
ab61b168bd [#1650] Expose externalRef via search filters (#1657)
add option to filter actions using _externalref_ property

Signed-off-by: Marinov Avgustin <Avgustin.Marinov@bosch.com>
2024-02-19 17:23:56 +02:00
Avgustin Marinov
1d981802f4 Remove TestHelper (#1654)
in favor of placing implicitLock helpers into AbstractJpaIntegrationTest
as it is done in rest tests

Signed-off-by: Marinov Avgustin <Avgustin.Marinov@bosch.com>
2024-02-19 14:57:53 +02:00
Avgustin Marinov
9e76223a91 [#1580] Software Module & Distribution Set lock: implicit (#1649)
Signed-off-by: Marinov Avgustin <Avgustin.Marinov@bosch.com>
2024-02-18 23:01:55 +02:00
Avgustin Marinov
94576bd6fe [#1580] Software Module & Distribution Set lock: apply (#1648)
forbid software modules / artifacts modification for locked distribution
sets / software modules respectively

Signed-off-by: Marinov Avgustin <Avgustin.Marinov@bosch.com>
2024-02-15 15:56:01 +02:00
Avgustin Marinov
e535420065 [#1580] Software Module & Distribution Set lock: add lock at mgmt level (2) (#1645)
* Added to management intefaces (+ tests)

Signed-off-by: Marinov Avgustin <Avgustin.Marinov@bosch.com>
2024-02-15 10:35:25 +02:00
Avgustin Marinov
24c4cde84e Fix SystemManagementTest.systemUsageReportCollectsActionsOfAllTenants:123 (#1597)
Signed-off-by: Marinov Avgustin <Avgustin.Marinov@bosch.com>
2024-02-03 06:31:26 +02:00
Avgustin Marinov
abbf484fc3 Fix RemoteTenantAwareEventTest (#1596)
* Improve Security Core with lombok 4

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

* Fix RemoteTenantAwareEventTest

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

---------

Signed-off-by: Marinov Avgustin <Avgustin.Marinov@bosch.com>
2024-02-03 06:05:30 +02:00
Avgustin Marinov
f69d386613 Lombok/apply to security repo3 (#1594)
* Improve Security Core with lombok (#1592)

Add lombok to repository modules

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

* Improve Security Core with lombok 3

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

---------

Signed-off-by: Marinov Avgustin <Avgustin.Marinov@bosch.com>
2024-02-03 04:46:24 +02:00
Avgustin Marinov
1c5a7bbeb3 Improve Security Core with lombok 2 (#1593)
Signed-off-by: Marinov Avgustin <Avgustin.Marinov@bosch.com>
2024-02-03 03:32:53 +02:00
Avgustin Marinov
d2a740823d Improve Security Core with lombok (#1592)
Add lombok to repository modules

Signed-off-by: Marinov Avgustin <Avgustin.Marinov@bosch.com>
2024-02-03 02:47:28 +02:00
Avgustin Marinov
791b87b27b Reduce dependency on Guava 2 (#1590)
Signed-off-by: Marinov Avgustin <Avgustin.Marinov@bosch.com>
2024-02-03 00:43:10 +02:00
Avgustin Marinov
bce69676d2 Reduce dependency on Guava (#1589)
Signed-off-by: Marinov Avgustin <Avgustin.Marinov@bosch.com>
2024-02-02 22:21:46 +02:00
Avgustin Marinov
015bbe7007 Fix flaky RolloutManagementTest (#1570)
Signed-off-by: Marinov Avgustin <Avgustin.Marinov@bosch.com>
2024-01-27 18:38:37 +02:00
Avgustin Marinov
5592689b62 Add debug log to flaky RolloutManagementFlowTest (#1569)
Signed-off-by: Marinov Avgustin <Avgustin.Marinov@bosch.com>
2024-01-27 16:08:04 +02:00
Avgustin Marinov
274d0b01fb Fix flaky actions auto cleanup test (#1561)
Signed-off-by: Marinov Avgustin <Avgustin.Marinov@bosch.com

Signed-off-by: Marinov Avgustin <Avgustin.Marinov@bosch.com
2024-01-23 10:17:36 +02:00
charvadzo
49a5509e89 Enable specifying target type when created using DMF API (#1472)
Extension of DMF API with possibility of setting target
type name when creating target. If a target type with the
provided name is found (was created beforehand) then it
is associated with the new target.

Signed-off-by: Ondrej Charvat <ondrej.charvat@proton.me>
2024-01-22 15:01:00 +02:00
Avgustin Marinov
7440d90f59 [#1383] Spring Boot 3 migration Step 2 (#1559)
* [#1383] Spring Boot 3 migration Step 2

Some of the steps:

1. Change spring version parent and versions in root pom.xml
2. update eclipselink versions
3. javax.annotation -> jakarta.annotation (*.java)
4. javax.persistence -> jakarta.persistence (*.java)
5. javax.servlet -> jakarta.servlet (*.java, pom.xml)
6. javax.validation:validation-api -> jakarta.validation:jakarta.validation-api (pom.xml)
7. javax.validation -> jakarta.validation (*.java)
8. javax.transaction -> jakarta.transaction (*.java)
9. replace spring-cloud-stream-binder-test (hawkbit-repository-test) with
```
<dependency>
   <groupId>org.springframework.cloud</groupId>
   <artifactId>spring-cloud-stream-test-binder</artifactId>
</dependency>
```
, TestSupportBinderAutoConfiguration.class }) -> })
@Import(TestChannelBinderConfiguration.class)
10. Set to Simple UI standard parent
11. requestMatchers to securityMatcher
12. @SpringBootApplication(scanBasePackages = "org.eclipse.hawkbit") (otherwise for instance flyway doesn't work - suffix is default ".sql", not H2.sql and don't differentiate dbs? strange is there a change?)
13. @NonEmpty for Long leads to validation exception - replaced with @NotNull
14. RSQLUtilityTest.correctRsqlBuildsPredicate - fixed - mock query builder add method
15. https://github.com/spring-projects/spring-boot/wiki/Spring-Boot-3.0-Migration-Guide#spring-mvc-and-webflux-url-matching-changes - aliases as targers/ return 404 - remove trailing slash
16. firewall tests (allowedHostNameWithNotAllowedHost) doesn't throw 'rejected exception' but return 400 instead (as probably is expected anyway)

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

* Fix tenant listing to do not mix with multitenancy

Tenant metadata is not multitenancy aware while depend on distribution set type
which is. Thus querying all tenant metadata (in non tenant context) sometimes leads to
resolution of distribution set type which is tenant scoped and leads to problems.

So, now listing tenant lists just their ids - not fill entities.

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

---------

Signed-off-by: Marinov Avgustin <Avgustin.Marinov@bosch.com
Signed-off-by: Marinov Avgustin <Avgustin.Marinov@bosch.com>
2024-01-20 15:57:17 +02:00
Avgustin Marinov
7768e543fd [#1548] Add support for dynamic rollouts (#1533)
* [#1548] Add support for dynamic rollouts

-- Current status --

Initial draft only !!!, to be improved

TODO:
 * evaluate the target count - if update group/rollout total count fails dynamic updates could (?), actually, contain more targets
 * is it needed to break handler on group creating?
 * if dynamic group schedulers occur to be heavy - maybe a handler per tenant will ensure that one tenant won't break all

*Concept for dynamic groups*:

Rollouts are static and dynamic.
Static rollouts consist of static groups only while dynamic rollouts have a number of static groups (first groups) and then an unlimited number of dynamic groups.

Group targets assignments:
* static groups include ALL matching targets created at the time the rollout was created, nevertheless they have active actions with bigger weight or not. Actions for the rollout and included targeets however are created at the start time.
* dynamic groups however are filled in when started and consider the action weight. The targets included in a dynamic group are:
  * matching (filter and distribution set compatible)
  * not included in this or following rollout static groups (if already included in any of the following rollouts - it's intended to be overridden)
  * not in active actions of any rollouts with equal or bigger weight

In general, when you create a rollout it contains all matching targets available at create time overriding any previous rollouts, actions, and so on. If the rollout is dynamic when its dynamic group becomes running it gets only matching targets that doesn't belong to static groups or have actions with great or equal weight

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

* [#1548] Add 1000 weight for actions, rollouts and auto assignments without weight

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

---------

Signed-off-by: Marinov Avgustin <Avgustin.Marinov@bosch.com>
2024-01-18 11:37:01 +02:00
Avgustin Marinov
ff015fd0e9 Remove unused test configs (#1540)
Signed-off-by: Marinov Avgustin <Avgustin.Marinov@bosch.com>
2024-01-11 17:19:35 +02:00
Avgustin Marinov
1ae913e30d Fix Simple UI deploy (#1537)
Signed-off-by: Marinov Avgustin <Avgustin.Marinov@bosch.com>
2024-01-11 12:25:31 +02:00
Avgustin Marinov
d951cee6b2 [#1509] Sync Target type with SW and DS types / getByKey (Mgmt Layer) (#1516)
Signed-off-by: Marinov Avgustin <Avgustin.Marinov@bosch.com>
2023-12-13 16:42:10 +02:00