Bosch IoT Rollouts

Milestone 2024-06-10 System Software Update

This pre-release milestone of Bosch IoT Rollouts Extension - Systems Software Update comes with the following improvements:

New features

  • ROLEX-157: Recipe file download

  • ROLEX-166: Systems mgmt api

  • ROLEX-163: Add UI

  • ROLEX-113: Add upload recipe

  • ROLEX-110: Add new product on management API

  • ROLEX-111: Add systems feature

  • ROLEX-296: Introduce e2e tests

  • ROLEX-290: Manage recipe lifecycle via Mgmt API

  • ROLEX-112: Systems list - Expose gateway ID as a target link

  • ROLEX-112: Systems list - Expose modules as a targets link

  • ROLEX-478: Introduce publishedBy audit field for recipes

  • ROLEX-341: Add recipe list UI

  • ROLEX-385: Add mgmt api recipe file download

  • ROLEX-386: Introduce display attributes for modules

  • ROLEX-475: Add recipe details UI

  • ROLEX-385: Management API: Resource collection for recipe signatures

  • ROLEX-506: Expose sha256 hash of recipe file via Management API

  • ROLEX-488: Add signature list in UI

  • ROLEX-506: Introduce WAITING_FOR_APPROVAL state

  • ROLEX-506: Management API: Expose links for "release recipe" and "deny recipe"

  • ROLEX-342: Add recipe lifecycle actions in UI

  • ROLEX-534: Add signature upload in UI

  • ROLEX-539: Introduce new canonical recipe model

  • ROLEX-573: Expose delete link for recipes and recipe signatures

  • ROLEX-573: Delete signature button

  • ROLEX-536: Introduce tagging of recipes

  • ROLEX-532: Mgmt API - Allow to search for recipes by name and ID

  • ROLEX-586: Add tag list in UI

  • ROLEX-634: Extend API to support recipe tagging

  • ROLEX-587: Show tags of recipe in UI

  • ROLEX-542: Management API: Provide read access to module update definitions and system distribution sets

  • ROLEX-537: Added file size and file count validation for signatures

  • ROLEX-542: Management API: Provide read access to meta data of recipes, module update definitions, and system distribution sets

  • ROLEX-587: UI add recipe tag

  • ROLEX-541: Add recipe transformation to install representation

  • ROLEX-603: UI module update definitions

  • ROLEX-602: UI distribution sets list

  • ROLEX-604: Add module update definition details

  • ROLEX-607: Distribution set details

  • ROLEX-609: Mgmt API: Write access to metadata

  • ROLEX-605: UI metadata lists

  • ROLEX-541: Use default template if no tenant specific template found

  • ROLEX-671: Introduce tenant config store

  • ROLEX-605: UI add metadata

  • ROLEX-609: Management API: Write access to system distribution sets and module update definitions

  • ROLEX-609: Management API: add endpoint to update a recipe

  • ROLEX-605: UI edit metadata

  • ROLEX-671: Introduce tenant config cache

  • ROLEX-581: UI add recipe

  • ROLEX-581: UI recipe delete and edit

  • ROLEX-719: Manage module update definitions in the UI

  • ROLEX-718: Manage system distribution sets in the UI

  • ROLEX-675: Introduce validation framework

  • ROLEX-530: UI tag management

  • ROLEX-530: UI tag assignemnt

  • ROLEX-531: UI recipe filtering

  • ROLEX-606: Introduced metadata validator

  • ROLEX-799: Upload recipe endpoint

  • ROLEX-799: Upload recipe ui

  • ROLEX-801: Recipe Validation API incl. data model enhancements

  • ROLEX-282: Introduce RBAC

  • ROLEX-123: Validate recipes via Management UI

  • ROLEX-741: Validation Report UI

  • ROLEX-720: Introduce ordering and sorting of module update definitions via API

  • ROLEX-838: Add extra state to recipe lifecycle for waiting for signature

  • ROLEX-838: Introduce new state "Waiting for signature" in Mgmt UI

  • ROLEX-736: expose system details

  • ROLEX-815: Introduce tenant-config admin API with extended security config

  • ROLEX-928: Introduce RBAC API access tests

  • ROLEX-350: Management API: Allow to filter list of systems

  • ROLEX-969: system actions

  • ROLEX-959: UI extend system properties

  • ROLEX-805: Create match-views and service

  • ROLEX-1030: Add softwareId to "properties" section in recipe

  • ROLEX-350: ui systems filtering

  • ROLEX-1005: Management API: Allow to create a recipe with a pre-defined ID

  • ROLEX-1029: initialSystemReportTime

  • ROLEX-805: Normalize version properties of system report

  • ROLEX-1029: filter systems api

  • ROLEX-1036: Introduce asynchronous match/count jobs

  • ROLEX-1029: UI system filtering

  • ROLEX-1074: Introduce new jobs api

  • ROLEX-1074: Provide recipe info as link

  • ROLEX-1075: Provide timestamp of last recipe match to a system

  • ROLEX-1073: show tag ID

  • ROLEX-355: filter by recipe match

  • ROLEX-1011: Provide option to delete systems

  • ROLEX-929: Provide an option to bind a SOUP tenant with Sign&Encrypt

  • ROLEX-1032: Refine timestamp validation of update and system reports

  • ROLEX-355: UI filter for recipe match

  • ROLEX-1011: Introduce SystemDetailsActions to perform system deletion

  • ROLEX-1107: UI match job info

  • ROLEX-1058: Update JSON schema of update report (Install API)

  • ROLEX-805: adopt version formatting

  • ROLEX-1106: UI recipe coverage

  • ROLEX-1011: Delete multiple systems

  • ROLEX-1141: Extend API security test to confirm CSV is complete

  • ROLEX-1058: Attach module-level logs from update report to actions in IoT Rollouts

  • ROLEX-1080: Provide current matching recipes

  • ROLEX-805: Added missing @TenantId annotation

  • ROLEX-1139: System action status

  • ROLEX-1078: Filter out dated systems

  • ROLEX-1139: Update report: Change log entry timestamps to epoch millis

  • ROLEX-1150: ui recipe info

  • ROLEX-1139: Add reportedAt/-By to SystemActionStatus

  • ROLEX-1132: UI system action logs

  • ROLEX-1071: Recipe match validator

  • ROLEX-1180: Send update attributes event when deleting systems

  • ROLEX-1161: Introduce status code for system action status

  • ROLEX-1082: Introduce dropdown for system actions filter modal

  • ROLEX-1161: Extend System Actions view

  • ROLEX-1170: Introduce tenant config based role mapping

  • ROLEX-1136: Recipe match job and system match

  • ROLEX-895: Avoid characters in install file that break the format (potential attack vector)

  • ROLEX-124: Validate signed reports

  • ROLEX-1138: Calculate and provide recipe count/coverage

  • ROLEX-1230: Added support for IN operator

  • ROLEX-1232: Introduce last system match date time

  • ROLEX-1246: Update SystemMatchs on system-report processing

  • ROLEX-1204: Filter recipes by metadata

Improvements

  • ROLEX-297: Implement paging for getRecipes in Mgmt API

  • ROLEX-149: Mgmt API requires suite auth OAUTH2 token

  • ROLEX-149: Spring security authorization code flow

  • ROLEX-149: added encrypted clientid and secret for QA

  • ROLEX-299: Configure spring security for Install API

  • ROLEX-367: Install API enhancements

  • ROLEX-609: Improve OpenAPI spec

  • ROLEX-282: Make Recipes with RELEASE_CANDIDATE state only accessible by the TEST_INSTALLER

  • ROLEX-837: implemented review remarks

  • ROLEX-745: Change section order and expand certain sections by default

  • ROLEX-838: Allow demoting recipes in WAITING_FOR_SIGNATURE state

  • ROLEX-755: Make module update definitions sortable

  • ROLEX-736: UI system details

  • ROLEX-805: Add attributes to modules

  • ROLEX-805: Store module attributes when system-info is processed

  • ROLEX-815: Extend admin API by new endpoint to manage tenants

  • ROLEX-930 Add OWASP ZAP scan to release workflow

  • ROLEX-805: Expand module query and count query on promotion of recipe

  • ROLEX-952: Perform load test in own stage and introduce warmup

  • ROLEX-877: Added integration test execution in our CI/CD build

  • ROLEX-907: link actions of recipe

  • ROLEX-1008: System outdated banner

  • ROLEX-1009: update validity icon

  • ROLEX-1020: Accept partial update reports

  • ROLEX-982: add CORP header

  • ROLEX-77: Introduce E2E test to verify the install scenario

  • ROLEX-1075: Extend RecipeDTO and provide mock data

  • ROLEX-1025: Install API: Return error 400 (Bad Request) if DS ID specified in update report cannot be deserialized

  • ROLEX-1081: Improve error messages for invalid system reports

  • ROLEX-1135: Define recipe match job triggers

  • ROLEX-722: remember blade status

  • ROLEX-1139: Enhance SystemE2E test to verify system action status info

  • ROLEX-1114: Initialize system update status to REGISTERED

  • ROLEX-1165: Change logic to transform first artifact whose type key starts with 'firmware:'

  • ROLEX-1165: Remove : to also allow firmware as a valid key

  • ROLEX-1168: Ensure modifiedAt is updated when tags are added/removed

  • ROLEX-1082: Replace ID fields with name:version or name to improve usability

  • ROLEX-1190: Improve info cards

  • ROLEX-1197: ESLint

  • ROLEX-1197: Add to ESLINT to pipeline

  • ROLEX-14: Add Fossid scan action and add to Release and PR workflow

  • ROLEX-807: Scan UI with sonarqube

  • ROLEX-124: Update report processing improvements

  • ROLEX-124: add signed report performance test

  • ROLEX-1227: Setup SOUP PROD cluster

  • ROLEX-264: Setup WAF for SOUP LB

  • ROLEX-1227: Extend Release flow for PROD environment

  • ROLEX-1298: Update SSL policy to ELBSecurityPolicy-TLS13-1-2-2021-06

  • ROLEX-1013: Upgrade DB cluster to multi-az deployment for prod

  • ROLEX-430: Add WAF geoblocking for sanctioned countries

  • ROLEX-1301: Configure health/liveness checks for soup-app

  • ROLEX-1300: Allow lowercase timestamp as alias in system-report

  • ROLEX-383: Add automated security configuration testing

  • ROLEX-1310: Upgrade TLS configuration to ELBSecurityPolicy-TLS13-1-2-2021-06-Res

Bugs fixed

  • ROLEX-1155: Fix HibernateException in system identification

  • ROLEX-1071: Fix keeping security context in parallel stream

  • ROLEX-1222: Fix UI Sonar issues

  • ROLEX-1224: Fix UI refreshing bug

  • ROLEX-1205: Fix updating locked recipe

  • ROLEX-1136: Fix extracting validation state

  • ROLEX-1138: Avoid cascaded actions on the countJob of a Recipe

  • ROLEX-1138: Fix countJob reference to allow multiple ones

  • ROLEX-1233: Handle NumberFormatException