Commit Graph

101 Commits

Author SHA1 Message Date
Avgustin Marinov
31c4ffafc1 Improve DS Tag REST & management API (#1883)
* added methods to unassign by multiple ds
* deprecated toggle assigments - too complex to undestand
* deprecated unassign (management) of single ds  - in favour of methods with multiple ds

Signed-off-by: Marinov Avgustin <Avgustin.Marinov@bosch.com>
2024-10-16 16:03:39 +03:00
Avgustin Marinov
8d9f076271 Move Target tag deprecations to end of classes (#1882)
Signed-off-by: Marinov Avgustin <Avgustin.Marinov@bosch.com>
2024-10-16 15:15:10 +03:00
Avgustin Marinov
745663f083 Add single tag assign REST method (#1881)
Signed-off-by: Marinov Avgustin <Avgustin.Marinov@bosch.com>
2024-10-16 14:56:55 +03:00
Avgustin Marinov
a5b24cac68 Improve Target Tag REST & management API (#1880)
* added methods to unassign by multiple controller ids
* deprecated toggle assigments - too complex to undestand
* deprecated unassign (management) of single controller id - in favour of methods with controller ids

Signed-off-by: Marinov Avgustin <Avgustin.Marinov@bosch.com>
2024-10-16 14:51:26 +03:00
Walter Bonetti
90898b146d Fix openapi schema key_name in MgmtTypeEntity.java (#1850) 2024-10-01 08:43:32 +03:00
Avgustin Marinov
aed717df57 Add support for efficient tagging and BIG set of targets (#1844)
Adding a method with:

* optimized payload - just controller ids
* no response payload - not needed for that use-case
* targeting - thousands of targets tagged at once

Signed-off-by: Marinov Avgustin <Avgustin.Marinov@bosch.com>
2024-09-19 13:56:59 +03:00
Avgustin Marinov
d958d8e82c Remove download by downloadId functionality (#1820)
This functionallity seems to get via AMQP (after some authentication)
a private (wihtout need of authentication) url to an artifact assigned
to the controller.

By default, DDI or DMF shall provide proper urls (for direct download)
to devices and if they have to be without authentication this shall be
solved in different ways - for instance separate download server providing
dedicated private / signed urls.

This functinallity is not a real hawkBit part but more like something
intended to solve some edge cases.
Since it is complicated, heeds support, doesn't solve wide spread use
cases, and could be achieved with other means - better to be removed.

Signed-off-by: Marinov Avgustin <Avgustin.Marinov@bosch.com>
2024-08-14 17:28:46 +03:00
Diorcet Yann
2638de25d6 Ignore isEmpty methods in MgmtTargetAttributes and MgmtDistributionSetAssignments in order to avoid invalid schematic (#1794) 2024-08-01 15:19:20 +03:00
Diorcet Yann
c7d9366009 Replace APiReponse code from 200 to 201 according to behaviour or POST methods (#1796) 2024-08-01 11:42:28 +03:00
Avgustin Marinov
950ed398cc Target REST API returns OK with empty list when no tags (#1786)
Signed-off-by: Marinov Avgustin <Avgustin.Marinov@bosch.com

Signed-off-by: Marinov Avgustin <Avgustin.Marinov@bosch.com
2024-07-26 08:43:20 +03:00
Avgustin Marinov
859cd130f2 Remove UI leftover and small improvements (#1784)
Signed-off-by: Marinov Avgustin <Avgustin.Marinov@bosch.com>
2024-07-25 13:47:59 +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
bb288eab6b Remove guava dependency (#1776)
Signed-off-by: Marinov Avgustin <Avgustin.Marinov@bosch.com>
2024-07-17 15:48:24 +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
195e9e20a0 Remove PermissionService - unused (#1717) (#1718)
Signed-off-by: Marinov Avgustin <Avgustin.Marinov@bosch.com>
2024-04-18 13:23:23 +03:00
Avgustin Marinov
3611a8eccd [#1712] Introduce READ_TENANT_CONFIGURATION permission (#1713)
Signed-off-by: Marinov Avgustin <Avgustin.Marinov@bosch.com>
2024-04-12 14:30:29 +03:00
Avgustin Marinov
50d34dd81e Expose rollout group dynamic flag via REST (#1691)
Signed-off-by: Marinov Avgustin <Avgustin.Marinov@bosch.com>
2024-03-15 16:20:16 +02:00
Avgustin Marinov
60e25b47ec Consistent chain = true fore Mgmt REST API (#1685)
Signed-off-by: Marinov Avgustin <Avgustin.Marinov@bosch.com>
2024-03-14 11:49:48 +02:00
Avgustin Marinov
2c4140e76f Improve Java (hence feign) API of the REST API (#1684)
Signed-off-by: Marinov Avgustin <Avgustin.Marinov@bosch.com>
2024-03-13 17:04:48 +02:00
Avgustin Marinov
9ac51ab988 [#1651] Implement tenant level config for DistributionSet implicit lock (#1678)
enabled by default

Signed-off-by: Marinov Avgustin <Avgustin.Marinov@bosch.com>
2024-03-08 12:43:53 +02:00
Avgustin Marinov
ce9918ce00 [#1651] Add SoftwareModule and DistributionSet unlock (REST) (#1677)
Signed-off-by: Marinov Avgustin <Avgustin.Marinov@bosch.com>
2024-03-08 11:28:24 +02:00
Avgustin Marinov
bf1c7df52e [#1650] Expose externalRef via REST API (#1655)
Signed-off-by: Marinov Avgustin <Avgustin.Marinov@bosch.com>
2024-02-19 16:21:18 +02:00
Avgustin Marinov
850fa3507f [#1580] Software Module & Distribution Set lock: add lock at rest level (#1646)
Signed-off-by: Marinov Avgustin <Avgustin.Marinov@bosch.com>
2024-02-15 11:46:06 +02:00
Avgustin Marinov
ab10b67d4e Fix lombok toString to call super where needed (#1634)
Signed-off-by: Marinov Avgustin <Avgustin.Marinov@bosch.com>
2024-02-09 13:00:12 +02:00
Avgustin Marinov
669f50a4f7 Fix MgmtBaseEntity deserialization (#1633)
Before REST refactoring MgmtBaseEntity was able to deserialize fields
like createdBy. After refactoring, with READ_ONLY access it was dropped
and these fields become null. While this could be a good change, it is
not backward compatible (is that needed) and most importantly will lead
to the fact that Feign client won't be able to access that
data. So, at least for now, I return deserialization back

Signed-off-by: Marinov Avgustin <Avgustin.Marinov@bosch.com>
2024-02-09 12:51:02 +02:00
Avgustin Marinov
8fb6d1ab5a REST doc / Mgmt Tenant - fix missed info (#1631)
When spring restdoc was replaces with swagger & open api some info was lost
This commit returns back this info for Mgmt API - Tenant

Signed-off-by: Marinov Avgustin <Avgustin.Marinov@bosch.com>
2024-02-08 17:15:07 +02:00
Avgustin Marinov
5d24142fa9 Rest mme/fix openapi doc losses targettype (#1630)
* REST doc / Mgmt Target Tag - fix missed info

When spring restdoc was replaces with swagger & open api some info was lost
This commit returns back this info for Mgmt API - Target Tag

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

* REST doc / Mgmt Target Type - fix missed info

When spring restdoc was replaces with swagger & open api some info was lost
This commit returns back this info for Mgmt API - Target Type

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

---------

Signed-off-by: Marinov Avgustin <Avgustin.Marinov@bosch.com>
2024-02-08 16:54:01 +02:00
Avgustin Marinov
c944a0da94 REST doc / Mgmt Target Tag - fix missed info (#1629)
When spring restdoc was replaces with swagger & open api some info was lost
This commit returns back this info for Mgmt API - Target Tag

Signed-off-by: Marinov Avgustin <Avgustin.Marinov@bosch.com>
2024-02-08 15:59:49 +02:00
Avgustin Marinov
c4594239a2 REST doc / Mgmt Targets - fix missed info (#1628)
When spring restdoc was replaces with swagger & open api some info was lost
This commit returns back this info for Mgmt API - Targets

Signed-off-by: Marinov Avgustin <Avgustin.Marinov@bosch.com>
2024-02-08 15:50:19 +02:00
Avgustin Marinov
cb88d60226 REST doc / Mgmt Target Filters - fix missed info (#1627)
When spring restdoc was replaces with swagger & open api some info was lost
This commit returns back this info for Mgmt API - TargetFilters

Signed-off-by: Marinov Avgustin <Avgustin.Marinov@bosch.com>
2024-02-08 15:23:32 +02:00
Avgustin Marinov
9afd847cc1 REST doc / Mgmt Software Modules Types - fix missed info (#1626)
When spring restdoc was replaces with swagger & open api some info was lost
This commit returns back this info for Mgmt API - SoftwareModules Types

Signed-off-by: Marinov Avgustin <Avgustin.Marinov@bosch.com>
2024-02-08 15:11:05 +02:00
Avgustin Marinov
f5359d6bc9 REST doc / Mgmt Software Modules - fix missed info (#1625)
When spring restdoc was replaces with swagger & open api some info was lost
This commit returns back this info for Mgmt API - SoftwareModules

Signed-off-by: Marinov Avgustin <Avgustin.Marinov@bosch.com>
2024-02-08 14:55:06 +02:00
Avgustin Marinov
b1cc868386 REST doc / Mgmt DS Rollouts - fix missed info (#1624)
When spring restdoc was replaces with swagger & open api some info was lost
This commit returns back this info for Mgmt API - Rollouts

Signed-off-by: Marinov Avgustin <Avgustin.Marinov@bosch.com>
2024-02-08 14:30:50 +02:00
Avgustin Marinov
fb4af0ecd5 REST doc / Mgmt DS Tags - fix missed info (#1622) (#1623)
When spring restdoc was replaces with swagger & open api some info was lost
This commit returns back this info for Mgmt API - DistributionSetsTags

Signed-off-by: Marinov Avgustin <Avgustin.Marinov@bosch.com>
2024-02-08 12:33:45 +02:00
Avgustin Marinov
8e256f8451 REST doc / Mgmt DS Tags - fix missed info (#1622)
When spring restdoc was replaces with swagger & open api some info was lost
This commit returns back this info for Mgmt API - DistributionSetsTags

Signed-off-by: Marinov Avgustin <Avgustin.Marinov@bosch.com>
2024-02-08 11:15:43 +02:00
Avgustin Marinov
ad022423f2 REST doc / Mgmt DS - fix missed info (#1621)
When spring restdoc was replaces with swagger & open api some info was lost
This commit returns back this info for Mgmt API - DistributionSets

Signed-off-by: Marinov Avgustin <Avgustin.Marinov@bosch.com>
2024-02-08 10:31:28 +02:00
Avgustin Marinov
3808d86b33 REST doc / Mgmt Actions - fix missed info (#1619)
When spring restdoc was replaces with swagger & open api some info was lost
This commit returns back this info for Mgmt API - Actions

Signed-off-by: Marinov Avgustin <Avgustin.Marinov@bosch.com>
2024-02-07 16:36:15 +02:00
Avgustin Marinov
fc561c3eff REST doc / DDI - fix missed info (#1618)
When spring restdoc was replaces with swagger & open api some info was lost
This commit returns back this info for DDI API

Signed-off-by: Marinov Avgustin <Avgustin.Marinov@bosch.com>
2024-02-07 15:36:32 +02:00
Avgustin Marinov
d220553157 Refactoring/Improving source: rest (lombok) (#1614)
Apply data to models

Signed-off-by: Marinov Avgustin <Avgustin.Marinov@bosch.com>
2024-02-04 13:20:26 +02:00
Avgustin Marinov
47f20886c1 Refactoring/Improving source: rest (lombok) (#1613)
Signed-off-by: Marinov Avgustin <Avgustin.Marinov@bosch.com>
2024-02-04 12:26:21 +02:00
Avgustin Marinov
d3cab9a326 [#1383] Spring Boot 3 migration Step 2: fix swagger (#1566)
Signed-off-by: Marinov Avgustin <Avgustin.Marinov@bosch.com

Signed-off-by: Marinov Avgustin <Avgustin.Marinov@bosch.com
2024-01-26 15:41:43 +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
ba496a0f52 Fix HATEOAS support for swagger doc (#1528)
Signed-off-by: Marinov Avgustin <Avgustin.Marinov@bosch.com>
2023-12-22 11:35:28 +02:00
Avgustin Marinov
767a7e6b11 [#1509] Sync Target type with SW and DS types (REST Layer) (#1514)
Signed-off-by: Marinov Avgustin <Avgustin.Marinov@bosch.com>
2023-12-13 14:33:32 +02:00
Avgustin Marinov
0021b03c9a CI friendly maven poms - use $revision for version (#1477)
https://maven.apache.org/maven-ci-friendly.html

Signed-off-by: Marinov Avgustin <Avgustin.Marinov@bosch.com>
2023-11-16 17:23:01 +02:00
Stanislav Trailov
05def2ef1b Fix retryRollout input parameter in order to comply with the API (#1461)
* Fix retryRollout input parameter in order to comply with the API

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

* make exception more informative

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

---------

Signed-off-by: Stanislav Trailov <Stanislav.Trailov@bosch.io>
2023-10-24 08:36:46 +03:00
Stanislav Trailov
44e7a72be3 Rollout retry (#1454)
* Rollout retry mechanism initial commit

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

* Remove test target fields for filter query

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

* minor refactoring

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

* Fixes after review

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

* more refactoring after review

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

* skip compatibility check of dstype for retried rollout

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

* remove dsType from javadoc

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

---------

Signed-off-by: Stanislav Trailov <Stanislav.Trailov@bosch.io>
2023-10-19 09:58:46 +03:00
Stanislav Trailov
60f14691fc Add example values for request/response examples in swagger (#1441)
* Swagger support initial concept

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

* Add descriptions for Target tags

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

* Add target filter queries descriptions

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

* Add target api descriptions

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

* Add software modules API descriptions

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

* Add descriptions for DS, DSTags and SMTypes

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

* Add DistributionSetType API descriptions

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

* Add Rollout API descriptions

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

* Bring back test scope to mariaDb

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

* Add tags and descriptions to System config API

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

* Move away OpenAPI config from Start.java

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

* provide license header and project version for openapi

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

* Fix error responses with example error body

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

* Add DDI API to swagger and make proper API grouping

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

* Revert changes from not merging before commit

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

* Remove more changes

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

* fix circle ci build

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

* Add missing descriptions for downloadArtifact methods in DDI

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

* Make configuration for openApi conditional for flexibility in transitive dependencies

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

* Make beans conditional not config

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

* Remove oAuth and switch to more general description

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

* remove comment

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

* Add example schema values for request responses examples

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

---------

Signed-off-by: Stanislav Trailov <Stanislav.Trailov@bosch.io>
2023-09-29 15:14:53 +03:00