* Optimize maintenance window UI Signed-off-by: Melanie Retter <melanie.retter@bosch-si.com> * Refactor Signed-off-by: Melanie Retter <melanie.retter@bosch-si.com> * Add new downloaded status to UI. Signed-off-by: kaizimmerm <kai.zimmermann@bosch-si.com> * Changed Accordion to Tabsheet for better visualization of action types and maintanance window. Signed-off-by: Markus Block <markus.block@bosch-si.com> * Refined UI for maintenance window, refactoring Added ENTER shortcut for save button in dialog windows Signed-off-by: Bogdan Bondar <Bogdan.Bondar@bosch-si.com> * Extended validation for maintenance window, refactored the maintenance window helper class Added text change listeners for the schedule and duration text fields in order to activate "save all" button Added client Locale identification for cron expression translation Moved maintenance window validation from TargetWithActionType constructor to saveAll method of assignment tab Signed-off-by: Bogdan Bondar <Bogdan.Bondar@bosch-si.com> * Added SupressWarnings annotation for exception handling cases Signed-off-by: Bogdan Bondar <Bogdan.Bondar@bosch-si.com> * Fixed Sonar issue: added private constructor to Maintenance schedule helper class Signed-off-by: Bogdan Bondar <Bogdan.Bondar@bosch-si.com> * Sonar Issue: make utility class Maintenance Schedule final Signed-off-by: Bogdan Bondar <Bogdan.Bondar@bosch-si.com> * Added Maintenance Window validation to Distribution Set and Target Management API Signed-off-by: Bogdan Bondar <Bogdan.Bondar@bosch-si.com> * Added unit tests for MaintenanceScheduleHelper class Signed-off-by: Bogdan Bondar <Bogdan.Bondar@bosch-si.com> * Added the license header to MaintenanceScheduleHelperTest class Signed-off-by: Bogdan Bondar <Bogdan.Bondar@bosch-si.com> * Small changes after PR review Signed-off-by: Bogdan Bondar <Bogdan.Bondar@bosch-si.com> * Added Id for Maintenance Window layout for UI Tests Signed-off-by: Bogdan Bondar <Bogdan.Bondar@bosch-si.com>
hawkBit Update Server
The hawkBit Update Server is a standalone spring-boot application with an embedded servlet container .
Try out the update server in our hawkBit sandbox on Bluemix
- try out Management UI https://hawkbit.eu-gb.mybluemix.net/UI (username: admin, passwd: admin)
- try out Management API https://hawkbit.eu-gb.mybluemix.net/rest/v1/targets (don't forget basic auth header; username: admin, passwd: admin)
- try out DDI API https://hawkbit.eu-gb.mybluemix.net/DEFAULT/controller/v1/MYTESTDEVICE (authentication disabled)
On your own workstation
Run
java -jar hawkbit-runtime/hawkbit-update-server/target/hawkbit-update-server-*-SNAPSHOT.jar
(Note: you have to add the JDBC driver also to your class path if you intend to use another database than H2.)
Or:
run org.eclipse.hawkbit.app.Start
Usage
The Management UI can be accessed via http://localhost:8080/UI The Management API can be accessed via http://localhost:8080/rest/v1
Deploy example app to Cloud Foundry
- Go to
targetsubfolder. - Select one of the two manifests
- manifest-simple.yml for a standalone hawkBit installation with embedded H2.
- manifest.yml for a standalone hawkBit installation with embedded H2 and RabbitMQ service binding for DMF integration (note: this manifest is used for the sandbox above).
- Run
cf pushagainst you cloud foundry environment.
Enable Clustering (experimental)
Clustering in hawkBit is based on Spring Cloud Bus. It is not enabled in the example app by default.
Add to your application.properties :
spring.cloud.bus.enabled=true
Add to your pom.xml :
<dependency>
<groupId>org.springframework.cloud</groupId>
<artifactId>spring-cloud-stream-binder-rabbit</artifactId>
</dependency>
Optional as well is the addition of Protostuff based message payload serialization for improved performance.
Add to your application.properties :
spring.cloud.stream.bindings.springCloudBusInput.content-type=application/binary+protostuff
spring.cloud.stream.bindings.springCloudBusOutput.content-type=application/binary+protostuff
Add to your pom.xml :
<dependency>
<groupId>io.protostuff</groupId>
<artifactId>protostuff-core</artifactId>
</dependency>
<dependency>
<groupId>io.protostuff</groupId>
<artifactId>protostuff-runtime</artifactId>
</dependency>