├── .3rd-party ├── DEPENDENCIES └── README.md ├── .gitattributes ├── .github ├── dependabot.yml └── workflows │ ├── .trivyignore │ ├── first-interaction.yml │ ├── stale.yml │ ├── trivy-scan.yml │ ├── verify-hibernate.yml │ └── verify.yml ├── .gitignore ├── .gitmodules ├── CODE_OF_CONDUCT.md ├── CONTRIBUTING.md ├── LICENSE ├── MIGRATION.md ├── README.md ├── SECURITY.md ├── check-dependencies.sh ├── docker ├── README.md ├── build │ ├── Dockerfile │ ├── Dockerfile_dbinit │ ├── Dockerfile_dbinit_dev │ ├── Dockerfile_dev │ ├── KEY │ ├── README.md │ └── build_dev.sh ├── mysql │ ├── docker-compose-deps-mysql.yml │ ├── docker-compose-micro-services-dbinit-mysql.yml │ ├── docker-compose-micro-services-mysql.yml │ ├── docker-compose-micro-services-with-simple-ui-dbinit-mysql.yml │ ├── docker-compose-micro-services-with-simple-ui-mysql.yml │ ├── docker-compose-monolith-dbinit-mysql.yml │ ├── docker-compose-monolith-mysql.yml │ ├── docker-compose-monolith-with-simple-ui-dbinit-mysql.yml │ └── docker-compose-monolith-with-simple-ui-mysql.yml └── postgres │ ├── docker-compose-deps-postgres.yml │ ├── docker-compose-micro-services-dbinit-postgres.yml │ ├── docker-compose-micro-services-postgres.yml │ ├── docker-compose-micro-services-with-simple-ui-dbinit-postgres.yml │ ├── docker-compose-micro-services-with-simple-ui-postgres.yml │ ├── docker-compose-monolith-dbinit-postgres.yml │ ├── docker-compose-monolith-postgres.yml │ ├── docker-compose-monolith-with-simple-ui-dbinit-postgres.yml │ └── docker-compose-monolith-with-simple-ui-postgres.yml ├── eclipse_codeformatter.xml ├── hawkbit-artifact ├── hawkbit-artifact-api │ ├── README.md │ ├── pom.xml │ └── src │ │ ├── main │ │ └── java │ │ │ └── org │ │ │ └── eclipse │ │ │ └── hawkbit │ │ │ └── artifact │ │ │ └── repository │ │ │ ├── AbstractArtifactRepository.java │ │ │ ├── ArtifactRepository.java │ │ │ ├── ArtifactStoreException.java │ │ │ ├── HashNotMatchException.java │ │ │ ├── model │ │ │ ├── AbstractDbArtifact.java │ │ │ ├── DbArtifact.java │ │ │ └── DbArtifactHash.java │ │ │ └── urlhandler │ │ │ ├── ApiType.java │ │ │ ├── ArtifactUrl.java │ │ │ ├── ArtifactUrlHandler.java │ │ │ ├── ArtifactUrlHandlerProperties.java │ │ │ ├── Base62Util.java │ │ │ ├── PropertyBasedArtifactUrlHandler.java │ │ │ └── URLPlaceholder.java │ │ └── test │ │ └── java │ │ └── org │ │ └── eclipse │ │ └── hawkbit │ │ └── artifact │ │ └── repository │ │ └── urlhandler │ │ ├── Base62UtilTest.java │ │ ├── PropertyBasedArtifactUrlHandlerTest.java │ │ └── URLPlaceholderTest.java ├── hawkbit-artifact-repository-filesystem │ ├── README.md │ ├── pom.xml │ └── src │ │ ├── main │ │ ├── java │ │ │ └── org │ │ │ │ └── eclipse │ │ │ │ └── hawkbit │ │ │ │ ├── artifact │ │ │ │ └── repository │ │ │ │ │ ├── ArtifactFileNotFoundException.java │ │ │ │ │ ├── ArtifactFilesystem.java │ │ │ │ │ ├── ArtifactFilesystemProperties.java │ │ │ │ │ └── ArtifactFilesystemRepository.java │ │ │ │ └── autoconfigure │ │ │ │ └── artifact │ │ │ │ └── repository │ │ │ │ └── filesystem │ │ │ │ └── ArtifactFilesystemConfiguration.java │ │ └── resources │ │ │ └── META-INF │ │ │ └── spring │ │ │ └── org.springframework.boot.autoconfigure.AutoConfiguration.imports │ │ └── test │ │ └── java │ │ └── org │ │ └── eclipse │ │ └── hawkbit │ │ └── artifact │ │ └── repository │ │ ├── ArtifactFilesystemRepositoryTest.java │ │ └── ArtifactFilesystemTest.java └── pom.xml ├── hawkbit-autoconfigure ├── pom.xml └── src │ └── main │ ├── java │ └── org │ │ └── eclipse │ │ └── hawkbit │ │ └── autoconfigure │ │ ├── artifact │ │ └── ArtifactUrlHandlerAutoConfiguration.java │ │ ├── cache │ │ ├── CacheAutoConfiguration.java │ │ └── CacheProperties.java │ │ ├── repository │ │ ├── JpaRepositoryAutoConfiguration.java │ │ └── event │ │ │ └── EventPublisherAutoConfiguration.java │ │ ├── scheduling │ │ ├── AsyncConfigurerAutoConfiguration.java │ │ ├── AsyncConfigurerThreadPoolProperties.java │ │ └── ExecutorAutoConfiguration.java │ │ └── security │ │ ├── InMemoryUserManagementAutoConfiguration.java │ │ └── SecurityAutoConfiguration.java │ └── resources │ ├── META-INF │ └── spring │ │ └── org.springframework.boot.autoconfigure.AutoConfiguration.imports │ ├── hawkbit-artifactdl-defaults.properties │ └── hawkbit-security-defaults.properties ├── hawkbit-core ├── README.md ├── pom.xml └── src │ ├── main │ ├── java │ │ └── org │ │ │ └── eclipse │ │ │ └── hawkbit │ │ │ ├── ContextAware.java │ │ │ ├── cache │ │ │ ├── TenancyCacheManager.java │ │ │ └── TenantAwareCacheManager.java │ │ │ ├── exception │ │ │ ├── AbstractServerRtException.java │ │ │ ├── GenericSpServerException.java │ │ │ └── SpServerError.java │ │ │ ├── repository │ │ │ ├── ActionFields.java │ │ │ ├── ActionStatusFields.java │ │ │ ├── DistributionSetFields.java │ │ │ ├── DistributionSetTagFields.java │ │ │ ├── DistributionSetTypeFields.java │ │ │ ├── FieldValueConverter.java │ │ │ ├── RolloutFields.java │ │ │ ├── RolloutGroupFields.java │ │ │ ├── RsqlQueryField.java │ │ │ ├── SoftwareModuleFields.java │ │ │ ├── SoftwareModuleTypeFields.java │ │ │ ├── TagFields.java │ │ │ ├── TargetFields.java │ │ │ ├── TargetFilterQueryFields.java │ │ │ ├── TargetTagFields.java │ │ │ └── TargetTypeFields.java │ │ │ └── tenancy │ │ │ ├── TenantAware.java │ │ │ ├── TenantAwareAuthenticationDetails.java │ │ │ ├── TenantAwareUser.java │ │ │ ├── TenantAwareUserProperties.java │ │ │ ├── TenantMetricsConfiguration.java │ │ │ └── UserAuthoritiesResolver.java │ └── resources │ │ └── META-INF │ │ └── spring │ │ └── org.springframework.boot.autoconfigure.AutoConfiguration.imports │ └── test │ └── java │ └── org │ └── eclipse │ └── hawkbit │ └── repository │ └── FileNameFieldsTest.java ├── hawkbit-ddi ├── hawkbit-ddi-api │ ├── README.md │ ├── pom.xml │ └── src │ │ ├── main │ │ └── java │ │ │ └── org │ │ │ └── eclipse │ │ │ └── hawkbit │ │ │ └── ddi │ │ │ ├── json │ │ │ └── model │ │ │ │ ├── DdiActionFeedback.java │ │ │ │ ├── DdiActionHistory.java │ │ │ │ ├── DdiActivateAutoConfirmation.java │ │ │ │ ├── DdiArtifact.java │ │ │ │ ├── DdiArtifactHash.java │ │ │ │ ├── DdiAssignedVersion.java │ │ │ │ ├── DdiAutoConfirmationState.java │ │ │ │ ├── DdiCancel.java │ │ │ │ ├── DdiCancelActionToStop.java │ │ │ │ ├── DdiChunk.java │ │ │ │ ├── DdiConfig.java │ │ │ │ ├── DdiConfigData.java │ │ │ │ ├── DdiConfirmationBase.java │ │ │ │ ├── DdiConfirmationBaseAction.java │ │ │ │ ├── DdiConfirmationFeedback.java │ │ │ │ ├── DdiControllerBase.java │ │ │ │ ├── DdiDeployment.java │ │ │ │ ├── DdiDeploymentBase.java │ │ │ │ ├── DdiMetadata.java │ │ │ │ ├── DdiPolling.java │ │ │ │ ├── DdiProgress.java │ │ │ │ ├── DdiResult.java │ │ │ │ ├── DdiStatus.java │ │ │ │ └── DdiUpdateMode.java │ │ │ └── rest │ │ │ └── api │ │ │ ├── DdiRestConstants.java │ │ │ └── DdiRootControllerRestApi.java │ │ └── test │ │ └── java │ │ └── org │ │ └── eclipse │ │ └── hawkbit │ │ └── ddi │ │ └── json │ │ └── model │ │ ├── DdiActionFeedbackTest.java │ │ ├── DdiActionHistoryTest.java │ │ ├── DdiArtifactHashTest.java │ │ ├── DdiArtifactTest.java │ │ ├── DdiCancelActionToStopTest.java │ │ ├── DdiCancelTest.java │ │ ├── DdiChunkTest.java │ │ ├── DdiConfigDataTest.java │ │ ├── DdiConfigTest.java │ │ ├── DdiConfirmationBaseTest.java │ │ ├── DdiControllerBaseTest.java │ │ ├── DdiDeploymentBaseTest.java │ │ ├── DdiDeploymentTest.java │ │ ├── DdiMetadataTest.java │ │ ├── DdiPollingTest.java │ │ ├── DdiProgressTest.java │ │ ├── DdiResultTest.java │ │ ├── DdiStatusTest.java │ │ └── JsonIgnorePropertiesAnnotationTest.java ├── hawkbit-ddi-resource │ ├── README.md │ ├── pom.xml │ └── src │ │ ├── main │ │ └── java │ │ │ └── org │ │ │ └── eclipse │ │ │ └── hawkbit │ │ │ └── ddi │ │ │ └── rest │ │ │ └── resource │ │ │ ├── DataConversionHelper.java │ │ │ ├── DdiApiConfiguration.java │ │ │ ├── DdiOpenApiConfiguration.java │ │ │ └── DdiRootController.java │ │ └── test │ │ ├── java │ │ └── org │ │ │ └── eclipse │ │ │ └── hawkbit │ │ │ └── ddi │ │ │ └── rest │ │ │ └── resource │ │ │ ├── AbstractDDiApiIntegrationTest.java │ │ │ ├── DdiArtifactDownloadTest.java │ │ │ ├── DdiCancelActionTest.java │ │ │ ├── DdiConfigDataTest.java │ │ │ ├── DdiConfirmationBaseTest.java │ │ │ ├── DdiDeploymentBaseTest.java │ │ │ ├── DdiInstalledBaseTest.java │ │ │ ├── DdiRootControllerTest.java │ │ │ ├── DosFilterTest.java │ │ │ └── RequestOnHawkbitDefaultPortPostProcessor.java │ │ └── resources │ │ └── ddi-test.properties ├── hawkbit-ddi-security │ ├── pom.xml │ └── src │ │ ├── main │ │ └── java │ │ │ └── org │ │ │ └── eclipse │ │ │ └── hawkbit │ │ │ └── security │ │ │ └── controller │ │ │ ├── AuthenticationFilters.java │ │ │ ├── Authenticator.java │ │ │ ├── ControllerSecurityToken.java │ │ │ ├── GatewayTokenAuthenticator.java │ │ │ ├── SecurityHeaderAuthenticator.java │ │ │ └── SecurityTokenAuthenticator.java │ │ └── test │ │ └── java │ │ └── org │ │ └── eclipse │ │ └── hawkbit │ │ └── security │ │ └── controller │ │ ├── GatewayTokenAuthenticatorTest.java │ │ ├── SecurityHeaderAuthenticatorTest.java │ │ └── SecurityTokenAuthenticatorTest.java ├── hawkbit-ddi-server │ ├── README.md │ ├── pom.xml │ └── src │ │ ├── main │ │ ├── java │ │ │ └── org │ │ │ │ └── eclipse │ │ │ │ └── hawkbit │ │ │ │ └── app │ │ │ │ └── ddi │ │ │ │ └── DDIStart.java │ │ └── resources │ │ │ ├── application-mysql.properties │ │ │ ├── application-postgresql.properties │ │ │ ├── application.properties │ │ │ ├── banner.txt │ │ │ └── public │ │ │ └── robots.txt │ │ └── test │ │ └── java │ │ └── org │ │ └── eclipse │ │ └── hawkbit │ │ └── app │ │ └── ddi │ │ ├── AbstractSecurityTest.java │ │ ├── AllowedHostNamesTest.java │ │ └── PreAuthorizeEnabledTest.java ├── hawkbit-ddi-starter │ ├── README.md │ ├── pom.xml │ └── src │ │ └── main │ │ ├── java │ │ └── org │ │ │ └── eclipse │ │ │ └── hawkbit │ │ │ └── autoconfigure │ │ │ └── ddi │ │ │ ├── ControllerDownloadSecurityConfiguration.java │ │ │ ├── ControllerSecurityConfiguration.java │ │ │ └── DdiApiAutoConfiguration.java │ │ └── resources │ │ └── META-INF │ │ └── spring │ │ └── org.springframework.boot.autoconfigure.AutoConfiguration.imports └── pom.xml ├── hawkbit-dmf ├── README.md ├── hawkbit-dmf-amqp │ ├── .gitignore │ ├── pom.xml │ └── src │ │ ├── main │ │ ├── java │ │ │ └── org │ │ │ │ └── eclipse │ │ │ │ └── hawkbit │ │ │ │ └── amqp │ │ │ │ ├── AmqpConfiguration.java │ │ │ │ ├── AmqpDeadletterProperties.java │ │ │ │ ├── AmqpErrorMessageComposer.java │ │ │ │ ├── AmqpMessageDispatcherService.java │ │ │ │ ├── AmqpMessageHandlerService.java │ │ │ │ ├── AmqpMessageSenderService.java │ │ │ │ ├── AmqpProperties.java │ │ │ │ ├── BaseAmqpService.java │ │ │ │ ├── ConfigurableRabbitListenerContainerFactory.java │ │ │ │ ├── DefaultAmqpMessageSenderService.java │ │ │ │ ├── DmfApiConfiguration.java │ │ │ │ └── RequeueExceptionStrategy.java │ │ └── resources │ │ │ └── hawkbit-dmf-defaults.properties │ │ └── test │ │ └── java │ │ └── org │ │ └── eclipse │ │ └── hawkbit │ │ ├── amqp │ │ ├── AmqpMessageDispatcherServiceTest.java │ │ ├── AmqpMessageHandlerServiceTest.java │ │ ├── BaseAmqpServiceTest.java │ │ └── RequestExceptionStrategyTest.java │ │ ├── integration │ │ ├── AbstractAmqpServiceIntegrationTest.java │ │ ├── AmqpMessageDispatcherServiceIntegrationTest.java │ │ ├── AmqpMessageHandlerServiceIntegrationTest.java │ │ ├── DmfTestConfiguration.java │ │ └── listener │ │ │ ├── DeadletterListener.java │ │ │ └── ReplyToListener.java │ │ └── matcher │ │ └── SoftwareModuleJsonMatcher.java ├── hawkbit-dmf-api │ ├── README.md │ ├── pom.xml │ └── src │ │ └── main │ │ └── java │ │ └── org │ │ └── eclipse │ │ └── hawkbit │ │ └── dmf │ │ ├── amqp │ │ └── api │ │ │ ├── AmqpSettings.java │ │ │ ├── EventTopic.java │ │ │ ├── MessageHeaderKey.java │ │ │ └── MessageType.java │ │ └── json │ │ └── model │ │ ├── DmfActionRequest.java │ │ ├── DmfActionStatus.java │ │ ├── DmfActionUpdateStatus.java │ │ ├── DmfArtifact.java │ │ ├── DmfArtifactHash.java │ │ ├── DmfAttributeUpdate.java │ │ ├── DmfAutoConfirmation.java │ │ ├── DmfBatchDownloadAndUpdateRequest.java │ │ ├── DmfConfirmRequest.java │ │ ├── DmfCreateThing.java │ │ ├── DmfDownloadAndUpdateRequest.java │ │ ├── DmfMetadata.java │ │ ├── DmfMultiActionRequest.java │ │ ├── DmfSoftwareModule.java │ │ ├── DmfTarget.java │ │ └── DmfUpdateMode.java ├── hawkbit-dmf-rabbitmq-test │ ├── pom.xml │ └── src │ │ └── main │ │ └── java │ │ └── org │ │ └── eclipse │ │ └── hawkbit │ │ └── rabbitmq │ │ └── test │ │ ├── AbstractAmqpIntegrationTest.java │ │ ├── AmqpTestConfiguration.java │ │ ├── RabbitMqSetupService.java │ │ └── listener │ │ └── TestRabbitListener.java ├── hawkbit-dmf-server │ ├── README.md │ ├── pom.xml │ └── src │ │ └── main │ │ ├── java │ │ └── org │ │ │ └── eclipse │ │ │ └── hawkbit │ │ │ └── app │ │ │ └── dmf │ │ │ └── DMFStart.java │ │ └── resources │ │ ├── application-mysql.properties │ │ ├── application-postgresql.properties │ │ ├── application.properties │ │ ├── banner.txt │ │ └── public │ │ └── robots.txt ├── hawkbit-dmf-starter │ ├── README.md │ ├── pom.xml │ └── src │ │ └── main │ │ ├── java │ │ └── org │ │ │ └── eclipse │ │ │ └── hawkbit │ │ │ └── autoconfigure │ │ │ └── dmf │ │ │ └── amqp │ │ │ └── DmfApiAutoConfiguration.java │ │ └── resources │ │ └── META-INF │ │ └── spring │ │ └── org.springframework.boot.autoconfigure.AutoConfiguration.imports └── pom.xml ├── hawkbit-mgmt ├── hawkbit-mgmt-api │ ├── README.md │ ├── pom.xml │ └── src │ │ ├── main │ │ └── java │ │ │ └── org │ │ │ └── eclipse │ │ │ └── hawkbit │ │ │ └── mgmt │ │ │ ├── json │ │ │ └── model │ │ │ │ ├── MgmtBaseEntity.java │ │ │ │ ├── MgmtId.java │ │ │ │ ├── MgmtMaintenanceWindow.java │ │ │ │ ├── MgmtMaintenanceWindowRequestBody.java │ │ │ │ ├── MgmtMetadata.java │ │ │ │ ├── MgmtMetadataBodyPut.java │ │ │ │ ├── MgmtNamedEntity.java │ │ │ │ ├── MgmtPollStatus.java │ │ │ │ ├── MgmtTypeEntity.java │ │ │ │ ├── PagedList.java │ │ │ │ ├── action │ │ │ │ ├── MgmtAction.java │ │ │ │ ├── MgmtActionConfirmationRequestBodyPut.java │ │ │ │ ├── MgmtActionRequestBodyPut.java │ │ │ │ └── MgmtActionStatus.java │ │ │ │ ├── artifact │ │ │ │ ├── MgmtArtifact.java │ │ │ │ └── MgmtArtifactHash.java │ │ │ │ ├── auth │ │ │ │ └── MgmtUserInfo.java │ │ │ │ ├── distributionset │ │ │ │ ├── MgmtActionId.java │ │ │ │ ├── MgmtActionType.java │ │ │ │ ├── MgmtCancelationType.java │ │ │ │ ├── MgmtDistributionSet.java │ │ │ │ ├── MgmtDistributionSetRequestBodyPost.java │ │ │ │ ├── MgmtDistributionSetRequestBodyPut.java │ │ │ │ ├── MgmtDistributionSetStatistics.java │ │ │ │ ├── MgmtInvalidateDistributionSetRequestBody.java │ │ │ │ ├── MgmtTargetAssignmentRequestBody.java │ │ │ │ └── MgmtTargetAssignmentResponseBody.java │ │ │ │ ├── distributionsettype │ │ │ │ ├── MgmtDistributionSetType.java │ │ │ │ ├── MgmtDistributionSetTypeAssignment.java │ │ │ │ ├── MgmtDistributionSetTypeRequestBodyPost.java │ │ │ │ └── MgmtDistributionSetTypeRequestBodyPut.java │ │ │ │ ├── rollout │ │ │ │ ├── AbstractMgmtRolloutConditionsEntity.java │ │ │ │ ├── MgmtRolloutCondition.java │ │ │ │ ├── MgmtRolloutErrorAction.java │ │ │ │ ├── MgmtRolloutResponseBody.java │ │ │ │ ├── MgmtRolloutRestRequestBodyPost.java │ │ │ │ ├── MgmtRolloutRestRequestBodyPut.java │ │ │ │ └── MgmtRolloutSuccessAction.java │ │ │ │ ├── rolloutgroup │ │ │ │ ├── MgmtDynamicRolloutGroupTemplate.java │ │ │ │ ├── MgmtRolloutGroup.java │ │ │ │ └── MgmtRolloutGroupResponseBody.java │ │ │ │ ├── softwaremodule │ │ │ │ ├── MgmtSoftwareModule.java │ │ │ │ ├── MgmtSoftwareModuleAssignment.java │ │ │ │ ├── MgmtSoftwareModuleMetadata.java │ │ │ │ ├── MgmtSoftwareModuleMetadataBodyPut.java │ │ │ │ ├── MgmtSoftwareModuleRequestBodyPost.java │ │ │ │ └── MgmtSoftwareModuleRequestBodyPut.java │ │ │ │ ├── softwaremoduletype │ │ │ │ ├── MgmtSoftwareModuleType.java │ │ │ │ ├── MgmtSoftwareModuleTypeAssignment.java │ │ │ │ ├── MgmtSoftwareModuleTypeRequestBodyPost.java │ │ │ │ └── MgmtSoftwareModuleTypeRequestBodyPut.java │ │ │ │ ├── system │ │ │ │ ├── MgmtSystemTenantConfigurationValue.java │ │ │ │ └── MgmtSystemTenantConfigurationValueRequest.java │ │ │ │ ├── systemmanagement │ │ │ │ ├── MgmtSystemCache.java │ │ │ │ ├── MgmtSystemStatisticsRest.java │ │ │ │ └── MgmtSystemTenantServiceUsage.java │ │ │ │ ├── tag │ │ │ │ ├── MgmtTag.java │ │ │ │ └── MgmtTagRequestBodyPut.java │ │ │ │ ├── target │ │ │ │ ├── MgmtDistributionSetAssignment.java │ │ │ │ ├── MgmtDistributionSetAssignments.java │ │ │ │ ├── MgmtDistributionSetAssignmentsDeserializer.java │ │ │ │ ├── MgmtTarget.java │ │ │ │ ├── MgmtTargetAttributes.java │ │ │ │ ├── MgmtTargetAutoConfirm.java │ │ │ │ ├── MgmtTargetAutoConfirmUpdate.java │ │ │ │ └── MgmtTargetRequestBody.java │ │ │ │ ├── targetfilter │ │ │ │ ├── MgmtDistributionSetAutoAssignment.java │ │ │ │ ├── MgmtTargetFilterQuery.java │ │ │ │ └── MgmtTargetFilterQueryRequestBody.java │ │ │ │ └── targettype │ │ │ │ ├── MgmtTargetType.java │ │ │ │ ├── MgmtTargetTypeRequestBodyPost.java │ │ │ │ └── MgmtTargetTypeRequestBodyPut.java │ │ │ ├── rest │ │ │ └── api │ │ │ │ ├── MgmtActionRestApi.java │ │ │ │ ├── MgmtBasicAuthRestApi.java │ │ │ │ ├── MgmtDistributionSetRestApi.java │ │ │ │ ├── MgmtDistributionSetTagRestApi.java │ │ │ │ ├── MgmtDistributionSetTypeRestApi.java │ │ │ │ ├── MgmtDownloadArtifactRestApi.java │ │ │ │ ├── MgmtRepresentationMode.java │ │ │ │ ├── MgmtRestConstants.java │ │ │ │ ├── MgmtRolloutRestApi.java │ │ │ │ ├── MgmtSoftwareModuleRestApi.java │ │ │ │ ├── MgmtSoftwareModuleTypeRestApi.java │ │ │ │ ├── MgmtSystemManagementRestApi.java │ │ │ │ ├── MgmtTargetFilterQueryRestApi.java │ │ │ │ ├── MgmtTargetRestApi.java │ │ │ │ ├── MgmtTargetTagRestApi.java │ │ │ │ ├── MgmtTargetTypeRestApi.java │ │ │ │ ├── MgmtTenantManagementRestApi.java │ │ │ │ └── SortDirection.java │ │ │ └── sdfs.java │ │ └── test │ │ └── java │ │ └── org │ │ └── eclipse │ │ └── hawkbit │ │ └── mgmt │ │ └── json │ │ └── model │ │ ├── AuditFieldSerializationTest.java │ │ ├── PagedListTest.java │ │ └── distributionset │ │ └── MgmtTargetAssignmentResponseBodyTest.java ├── hawkbit-mgmt-resource │ ├── .gitignore │ ├── README.md │ ├── pom.xml │ └── src │ │ ├── main │ │ ├── java │ │ │ └── org │ │ │ │ └── eclipse │ │ │ │ └── hawkbit │ │ │ │ └── mgmt │ │ │ │ └── rest │ │ │ │ └── resource │ │ │ │ ├── MgmtActionMapper.java │ │ │ │ ├── MgmtActionResource.java │ │ │ │ ├── MgmtApiConfiguration.java │ │ │ │ ├── MgmtBasicAuthResource.java │ │ │ │ ├── MgmtDeploymentRequestMapper.java │ │ │ │ ├── MgmtDistributionSetMapper.java │ │ │ │ ├── MgmtDistributionSetResource.java │ │ │ │ ├── MgmtDistributionSetTagResource.java │ │ │ │ ├── MgmtDistributionSetTypeMapper.java │ │ │ │ ├── MgmtDistributionSetTypeResource.java │ │ │ │ ├── MgmtDownloadArtifactResource.java │ │ │ │ ├── MgmtOpenApiConfiguration.java │ │ │ │ ├── MgmtRestModelMapper.java │ │ │ │ ├── MgmtRolloutMapper.java │ │ │ │ ├── MgmtRolloutResource.java │ │ │ │ ├── MgmtSoftwareModuleMapper.java │ │ │ │ ├── MgmtSoftwareModuleResource.java │ │ │ │ ├── MgmtSoftwareModuleTypeMapper.java │ │ │ │ ├── MgmtSoftwareModuleTypeResource.java │ │ │ │ ├── MgmtSystemManagementResource.java │ │ │ │ ├── MgmtTagMapper.java │ │ │ │ ├── MgmtTargetFilterQueryMapper.java │ │ │ │ ├── MgmtTargetFilterQueryResource.java │ │ │ │ ├── MgmtTargetMapper.java │ │ │ │ ├── MgmtTargetResource.java │ │ │ │ ├── MgmtTargetTagResource.java │ │ │ │ ├── MgmtTargetTypeMapper.java │ │ │ │ ├── MgmtTargetTypeResource.java │ │ │ │ ├── MgmtTenantManagementMapper.java │ │ │ │ ├── MgmtTenantManagementResource.java │ │ │ │ ├── exception │ │ │ │ ├── SortParameterSyntaxErrorException.java │ │ │ │ ├── SortParameterUnsupportedDirectionException.java │ │ │ │ └── SortParameterUnsupportedFieldException.java │ │ │ │ └── util │ │ │ │ ├── PagingUtility.java │ │ │ │ └── SortUtility.java │ │ └── resources │ │ │ └── hawkbit-mgmt-api-defaults.properties │ │ └── test │ │ ├── java │ │ └── org │ │ │ └── eclipse │ │ │ └── hawkbit │ │ │ └── mgmt │ │ │ └── rest │ │ │ └── resource │ │ │ ├── AbstractManagementApiIntegrationTest.java │ │ │ ├── MgmtActionResourceTest.java │ │ │ ├── MgmtBasicAuthResourceTest.java │ │ │ ├── MgmtContentTypeTest.java │ │ │ ├── MgmtDistributionSetResourceTest.java │ │ │ ├── MgmtDistributionSetTagResourceTest.java │ │ │ ├── MgmtDistributionSetTypeResourceTest.java │ │ │ ├── MgmtRolloutResourceTest.java │ │ │ ├── MgmtSoftwareModuleResourceTest.java │ │ │ ├── MgmtSoftwareModuleTypeResourceTest.java │ │ │ ├── MgmtTargetFilterQueryResourceTest.java │ │ │ ├── MgmtTargetResourceTest.java │ │ │ ├── MgmtTargetTagResourceTest.java │ │ │ ├── MgmtTargetTypeResourceTest.java │ │ │ ├── MgmtTenantManagementResourceTest.java │ │ │ └── util │ │ │ ├── ResourceUtility.java │ │ │ └── SortUtilityTest.java │ │ └── resources │ │ └── mgmt-test.properties ├── hawkbit-mgmt-server │ ├── README.md │ ├── pom.xml │ └── src │ │ ├── main │ │ ├── java │ │ │ └── org │ │ │ │ └── eclipse │ │ │ │ └── hawkbit │ │ │ │ └── app │ │ │ │ └── mgmt │ │ │ │ ├── ErrorController.java │ │ │ │ └── MgmtServerStart.java │ │ └── resources │ │ │ ├── application-mysql.properties │ │ │ ├── application-postgresql.properties │ │ │ ├── application.properties │ │ │ ├── banner.txt │ │ │ └── public │ │ │ └── robots.txt │ │ └── test │ │ └── java │ │ └── org │ │ └── eclipse │ │ └── hawkbit │ │ └── app │ │ └── mgmt │ │ ├── AbstractSecurityTest.java │ │ ├── AllowedHostNamesTest.java │ │ ├── CorsTest.java │ │ └── PreAuthorizeEnabledTest.java ├── hawkbit-mgmt-starter │ ├── README.md │ ├── pom.xml │ └── src │ │ └── main │ │ ├── java │ │ └── org │ │ │ └── eclipse │ │ │ └── hawkbit │ │ │ ├── autoconfigure │ │ │ └── mgmt │ │ │ │ ├── MgmtApiAutoConfiguration.java │ │ │ │ └── MgmtSecurityConfiguration.java │ │ │ └── oidc │ │ │ └── OidcProperties.java │ │ └── resources │ │ └── META-INF │ │ └── spring │ │ └── org.springframework.boot.autoconfigure.AutoConfiguration.imports └── pom.xml ├── hawkbit-monolith ├── .gitignore ├── README.md ├── hawkbit-starter │ ├── README.MD │ └── pom.xml ├── hawkbit-update-server │ ├── README.md │ ├── pom.xml │ └── src │ │ ├── main │ │ ├── java │ │ │ └── org │ │ │ │ └── eclipse │ │ │ │ └── hawkbit │ │ │ │ └── app │ │ │ │ ├── ErrorController.java │ │ │ │ └── Start.java │ │ └── resources │ │ │ ├── application-mysql.properties │ │ │ ├── application-postgresql.properties │ │ │ ├── application.properties │ │ │ ├── banner.txt │ │ │ └── public │ │ │ └── robots.txt │ │ └── test │ │ └── java │ │ └── org │ │ └── eclipse │ │ └── hawkbit │ │ └── app │ │ ├── AbstractSecurityTest.java │ │ ├── AllowedHostNamesTest.java │ │ ├── CorsTest.java │ │ └── PreAuthorizeEnabledTest.java └── pom.xml ├── hawkbit-repository ├── .gitignore ├── README.md ├── hawkbit-repository-api │ ├── README.md │ ├── pom.xml │ └── src │ │ ├── main │ │ └── java │ │ │ └── org │ │ │ └── eclipse │ │ │ └── hawkbit │ │ │ ├── repository │ │ │ ├── ArtifactEncryption.java │ │ │ ├── ArtifactEncryptionSecretsStore.java │ │ │ ├── ArtifactEncryptionService.java │ │ │ ├── ArtifactManagement.java │ │ │ ├── BaseRepositoryTypeProvider.java │ │ │ ├── ConfirmationManagement.java │ │ │ ├── Constants.java │ │ │ ├── ControllerManagement.java │ │ │ ├── DeploymentManagement.java │ │ │ ├── DistributionSetInvalidationManagement.java │ │ │ ├── DistributionSetManagement.java │ │ │ ├── DistributionSetTagManagement.java │ │ │ ├── DistributionSetTypeManagement.java │ │ │ ├── EntityFactory.java │ │ │ ├── FilterParams.java │ │ │ ├── Identifiable.java │ │ │ ├── MaintenanceScheduleHelper.java │ │ │ ├── OffsetBasedPageRequest.java │ │ │ ├── QuotaManagement.java │ │ │ ├── RegexCharacterCollection.java │ │ │ ├── RepositoryConstants.java │ │ │ ├── RepositoryManagement.java │ │ │ ├── RepositoryProperties.java │ │ │ ├── RolloutExecutor.java │ │ │ ├── RolloutGroupManagement.java │ │ │ ├── RolloutHandler.java │ │ │ ├── RolloutManagement.java │ │ │ ├── SizeConversionHelper.java │ │ │ ├── SoftwareModuleManagement.java │ │ │ ├── SoftwareModuleTypeManagement.java │ │ │ ├── SystemManagement.java │ │ │ ├── TargetFilterQueryManagement.java │ │ │ ├── TargetManagement.java │ │ │ ├── TargetTagManagement.java │ │ │ ├── TargetTypeManagement.java │ │ │ ├── TenantConfigurationManagement.java │ │ │ ├── TenantStatsManagement.java │ │ │ ├── UpdateMode.java │ │ │ ├── ValidString.java │ │ │ ├── ValidStringValidator.java │ │ │ ├── autoassign │ │ │ │ └── AutoAssignExecutor.java │ │ │ ├── builder │ │ │ │ ├── ActionStatusBuilder.java │ │ │ │ ├── ActionStatusCreate.java │ │ │ │ ├── AutoAssignDistributionSetUpdate.java │ │ │ │ ├── DistributionSetBuilder.java │ │ │ │ ├── DistributionSetCreate.java │ │ │ │ ├── DistributionSetTypeBuilder.java │ │ │ │ ├── DistributionSetTypeCreate.java │ │ │ │ ├── DistributionSetTypeUpdate.java │ │ │ │ ├── DistributionSetUpdate.java │ │ │ │ ├── DynamicRolloutGroupTemplate.java │ │ │ │ ├── RolloutBuilder.java │ │ │ │ ├── RolloutCreate.java │ │ │ │ ├── RolloutGroupBuilder.java │ │ │ │ ├── RolloutGroupCreate.java │ │ │ │ ├── RolloutUpdate.java │ │ │ │ ├── SoftwareModuleBuilder.java │ │ │ │ ├── SoftwareModuleCreate.java │ │ │ │ ├── SoftwareModuleMetadataBuilder.java │ │ │ │ ├── SoftwareModuleMetadataCreate.java │ │ │ │ ├── SoftwareModuleMetadataUpdate.java │ │ │ │ ├── SoftwareModuleTypeBuilder.java │ │ │ │ ├── SoftwareModuleTypeCreate.java │ │ │ │ ├── SoftwareModuleTypeUpdate.java │ │ │ │ ├── SoftwareModuleUpdate.java │ │ │ │ ├── TagBuilder.java │ │ │ │ ├── TagCreate.java │ │ │ │ ├── TagUpdate.java │ │ │ │ ├── TargetBuilder.java │ │ │ │ ├── TargetCreate.java │ │ │ │ ├── TargetFilterQueryBuilder.java │ │ │ │ ├── TargetFilterQueryCreate.java │ │ │ │ ├── TargetFilterQueryUpdate.java │ │ │ │ ├── TargetTypeBuilder.java │ │ │ │ ├── TargetTypeCreate.java │ │ │ │ ├── TargetTypeUpdate.java │ │ │ │ └── TargetUpdate.java │ │ │ ├── event │ │ │ │ ├── ApplicationEventFilter.java │ │ │ │ ├── TenantAwareEvent.java │ │ │ │ ├── entity │ │ │ │ │ ├── EntityCreatedEvent.java │ │ │ │ │ ├── EntityDeletedEvent.java │ │ │ │ │ ├── EntityIdEvent.java │ │ │ │ │ └── EntityUpdatedEvent.java │ │ │ │ └── remote │ │ │ │ │ ├── AbstractAssignmentEvent.java │ │ │ │ │ ├── CancelTargetAssignmentEvent.java │ │ │ │ │ ├── DistributionSetDeletedEvent.java │ │ │ │ │ ├── DistributionSetTagDeletedEvent.java │ │ │ │ │ ├── DistributionSetTypeDeletedEvent.java │ │ │ │ │ ├── DownloadProgressEvent.java │ │ │ │ │ ├── EventEntityManager.java │ │ │ │ │ ├── EventEntityManagerHolder.java │ │ │ │ │ ├── MultiActionAssignEvent.java │ │ │ │ │ ├── MultiActionCancelEvent.java │ │ │ │ │ ├── MultiActionEvent.java │ │ │ │ │ ├── RemoteIdEvent.java │ │ │ │ │ ├── RemoteTenantAwareEvent.java │ │ │ │ │ ├── RolloutDeletedEvent.java │ │ │ │ │ ├── RolloutGroupDeletedEvent.java │ │ │ │ │ ├── RolloutStoppedEvent.java │ │ │ │ │ ├── SoftwareModuleDeletedEvent.java │ │ │ │ │ ├── SoftwareModuleTypeDeletedEvent.java │ │ │ │ │ ├── TargetAssignDistributionSetEvent.java │ │ │ │ │ ├── TargetAttributesRequestedEvent.java │ │ │ │ │ ├── TargetDeletedEvent.java │ │ │ │ │ ├── TargetFilterQueryDeletedEvent.java │ │ │ │ │ ├── TargetPollEvent.java │ │ │ │ │ ├── TargetTagDeletedEvent.java │ │ │ │ │ ├── TargetTypeDeletedEvent.java │ │ │ │ │ ├── TenantConfigurationDeletedEvent.java │ │ │ │ │ └── entity │ │ │ │ │ ├── AbstractActionEvent.java │ │ │ │ │ ├── AbstractRolloutGroupEvent.java │ │ │ │ │ ├── ActionCreatedEvent.java │ │ │ │ │ ├── ActionUpdatedEvent.java │ │ │ │ │ ├── DistributionSetCreatedEvent.java │ │ │ │ │ ├── DistributionSetTagCreatedEvent.java │ │ │ │ │ ├── DistributionSetTagUpdatedEvent.java │ │ │ │ │ ├── DistributionSetTypeCreatedEvent.java │ │ │ │ │ ├── DistributionSetTypeUpdatedEvent.java │ │ │ │ │ ├── DistributionSetUpdatedEvent.java │ │ │ │ │ ├── RemoteEntityEvent.java │ │ │ │ │ ├── RolloutCreatedEvent.java │ │ │ │ │ ├── RolloutGroupCreatedEvent.java │ │ │ │ │ ├── RolloutGroupUpdatedEvent.java │ │ │ │ │ ├── RolloutUpdatedEvent.java │ │ │ │ │ ├── SoftwareModuleCreatedEvent.java │ │ │ │ │ ├── SoftwareModuleTypeCreatedEvent.java │ │ │ │ │ ├── SoftwareModuleTypeUpdatedEvent.java │ │ │ │ │ ├── SoftwareModuleUpdatedEvent.java │ │ │ │ │ ├── TargetCreatedEvent.java │ │ │ │ │ ├── TargetFilterQueryCreatedEvent.java │ │ │ │ │ ├── TargetFilterQueryUpdatedEvent.java │ │ │ │ │ ├── TargetTagCreatedEvent.java │ │ │ │ │ ├── TargetTagUpdatedEvent.java │ │ │ │ │ ├── TargetTypeCreatedEvent.java │ │ │ │ │ ├── TargetTypeUpdatedEvent.java │ │ │ │ │ ├── TargetUpdatedEvent.java │ │ │ │ │ ├── TenantConfigurationCreatedEvent.java │ │ │ │ │ └── TenantConfigurationUpdatedEvent.java │ │ │ ├── exception │ │ │ │ ├── ArtifactBinaryNoLongerExistsException.java │ │ │ │ ├── ArtifactBinaryNotFoundException.java │ │ │ │ ├── ArtifactDeleteFailedException.java │ │ │ │ ├── ArtifactEncryptionFailedException.java │ │ │ │ ├── ArtifactEncryptionUnsupportedException.java │ │ │ │ ├── ArtifactUploadFailedException.java │ │ │ │ ├── AssignmentQuotaExceededException.java │ │ │ │ ├── AutoConfirmationAlreadyActiveException.java │ │ │ │ ├── CancelActionNotAllowedException.java │ │ │ │ ├── ConcurrentModificationException.java │ │ │ │ ├── DeletedException.java │ │ │ │ ├── DistributionSetTypeUndefinedException.java │ │ │ │ ├── EntityAlreadyExistsException.java │ │ │ │ ├── EntityNotFoundException.java │ │ │ │ ├── EntityReadOnlyException.java │ │ │ │ ├── FileSizeQuotaExceededException.java │ │ │ │ ├── ForceQuitActionNotAllowedException.java │ │ │ │ ├── IncompatibleTargetTypeException.java │ │ │ │ ├── IncompleteDistributionSetException.java │ │ │ │ ├── InsufficientPermissionException.java │ │ │ │ ├── InvalidAutoAssignActionTypeException.java │ │ │ │ ├── InvalidConfirmationFeedbackException.java │ │ │ │ ├── InvalidDistributionSetException.java │ │ │ │ ├── InvalidMD5HashException.java │ │ │ │ ├── InvalidMaintenanceScheduleException.java │ │ │ │ ├── InvalidSHA1HashException.java │ │ │ │ ├── InvalidSHA256HashException.java │ │ │ │ ├── InvalidTargetAddressException.java │ │ │ │ ├── InvalidTargetAttributeException.java │ │ │ │ ├── InvalidTenantConfigurationKeyException.java │ │ │ │ ├── LockedException.java │ │ │ │ ├── MethodNotSupportedException.java │ │ │ │ ├── MultiAssignmentIsNotEnabledException.java │ │ │ │ ├── NoWeightProvidedInMultiAssignmentModeException.java │ │ │ │ ├── RSQLParameterSyntaxException.java │ │ │ │ ├── RSQLParameterUnsupportedFieldException.java │ │ │ │ ├── RolloutIllegalStateException.java │ │ │ │ ├── SoftwareModuleNotAssignedToTargetException.java │ │ │ │ ├── SoftwareModuleTypeNotInDistributionSetTypeException.java │ │ │ │ ├── StopRolloutException.java │ │ │ │ ├── StorageQuotaExceededException.java │ │ │ │ ├── TargetTypeInUseException.java │ │ │ │ ├── TargetTypeKeyOrNameRequiredException.java │ │ │ │ ├── TenantConfigurationValidatorException.java │ │ │ │ ├── TenantConfigurationValueChangeNotAllowedException.java │ │ │ │ ├── TenantNotExistException.java │ │ │ │ └── UnsupportedSoftwareModuleForThisDistributionSetException.java │ │ │ ├── model │ │ │ │ ├── AbstractAssignmentResult.java │ │ │ │ ├── Action.java │ │ │ │ ├── ActionProperties.java │ │ │ │ ├── ActionStatus.java │ │ │ │ ├── Artifact.java │ │ │ │ ├── ArtifactUpload.java │ │ │ │ ├── AssignedSoftwareModule.java │ │ │ │ ├── AutoConfirmationStatus.java │ │ │ │ ├── BaseEntity.java │ │ │ │ ├── DeploymentRequest.java │ │ │ │ ├── DeploymentRequestBuilder.java │ │ │ │ ├── DistributionSet.java │ │ │ │ ├── DistributionSetAssignmentResult.java │ │ │ │ ├── DistributionSetFilter.java │ │ │ │ ├── DistributionSetInvalidation.java │ │ │ │ ├── DistributionSetInvalidationCount.java │ │ │ │ ├── DistributionSetTag.java │ │ │ │ ├── DistributionSetType.java │ │ │ │ ├── NamedEntity.java │ │ │ │ ├── NamedVersionedEntity.java │ │ │ │ ├── PollStatus.java │ │ │ │ ├── RepositoryModelConstants.java │ │ │ │ ├── Rollout.java │ │ │ │ ├── RolloutGroup.java │ │ │ │ ├── RolloutGroupConditionBuilder.java │ │ │ │ ├── RolloutGroupConditions.java │ │ │ │ ├── RolloutGroupsValidation.java │ │ │ │ ├── SoftwareModule.java │ │ │ │ ├── SoftwareModuleMetadata.java │ │ │ │ ├── SoftwareModuleType.java │ │ │ │ ├── Statistic.java │ │ │ │ ├── Tag.java │ │ │ │ ├── Target.java │ │ │ │ ├── TargetFilterQuery.java │ │ │ │ ├── TargetTag.java │ │ │ │ ├── TargetType.java │ │ │ │ ├── TargetTypeAssignmentResult.java │ │ │ │ ├── TargetUpdateStatus.java │ │ │ │ ├── TargetWithActionType.java │ │ │ │ ├── TenantAwareBaseEntity.java │ │ │ │ ├── TenantConfiguration.java │ │ │ │ ├── TenantConfigurationValue.java │ │ │ │ ├── TenantMetaData.java │ │ │ │ ├── TotalTargetCountActionStatus.java │ │ │ │ ├── TotalTargetCountStatus.java │ │ │ │ └── Type.java │ │ │ ├── report │ │ │ │ └── model │ │ │ │ │ ├── SystemUsageReport.java │ │ │ │ │ ├── SystemUsageReportWithTenants.java │ │ │ │ │ └── TenantUsage.java │ │ │ └── rsql │ │ │ │ ├── RsqlConfigHolder.java │ │ │ │ └── VirtualPropertyReplacer.java │ │ │ ├── tenancy │ │ │ └── configuration │ │ │ │ ├── ControllerPollProperties.java │ │ │ │ ├── DurationHelper.java │ │ │ │ ├── TenantConfigurationProperties.java │ │ │ │ └── validator │ │ │ │ ├── TenantConfigurationBooleanValidator.java │ │ │ │ ├── TenantConfigurationIntegerValidator.java │ │ │ │ ├── TenantConfigurationLongValidator.java │ │ │ │ ├── TenantConfigurationPollingDurationValidator.java │ │ │ │ ├── TenantConfigurationStringValidator.java │ │ │ │ └── TenantConfigurationValidator.java │ │ │ └── utils │ │ │ └── TenantConfigHelper.java │ │ └── test │ │ └── java │ │ └── org │ │ └── eclipse │ │ └── hawkbit │ │ └── repository │ │ ├── ArtifactEncryptionServiceTest.java │ │ ├── MaintenanceScheduleHelperTest.java │ │ ├── RegexCharTest.java │ │ ├── RepositoryManagementMethodPreAuthorizeAnnotatedTest.java │ │ └── model │ │ └── TotalTargetCountStatusTest.java ├── hawkbit-repository-core │ ├── README.md │ ├── pom.xml │ └── src │ │ ├── main │ │ ├── java │ │ │ └── org │ │ │ │ └── eclipse │ │ │ │ └── hawkbit │ │ │ │ ├── event │ │ │ │ ├── BusProtoStuffMessageConverter.java │ │ │ │ ├── EventPublisherConfiguration.java │ │ │ │ └── EventType.java │ │ │ │ └── repository │ │ │ │ ├── PropertiesQuotaManagement.java │ │ │ │ ├── RepositoryDefaultConfiguration.java │ │ │ │ ├── RolloutApprovalStrategy.java │ │ │ │ ├── RolloutHelper.java │ │ │ │ ├── RolloutStatusCache.java │ │ │ │ ├── TimestampCalculator.java │ │ │ │ ├── builder │ │ │ │ ├── AbstractActionStatusCreate.java │ │ │ │ ├── AbstractBaseEntityBuilder.java │ │ │ │ ├── AbstractDistributionSetTypeUpdateCreate.java │ │ │ │ ├── AbstractDistributionSetUpdateCreate.java │ │ │ │ ├── AbstractMetadataUpdateCreate.java │ │ │ │ ├── AbstractNamedEntityBuilder.java │ │ │ │ ├── AbstractRolloutGroupCreate.java │ │ │ │ ├── AbstractSoftwareModuleMetadataUpdateCreate.java │ │ │ │ ├── AbstractSoftwareModuleTypeUpdateCreate.java │ │ │ │ ├── AbstractSoftwareModuleUpdateCreate.java │ │ │ │ ├── AbstractTagUpdateCreate.java │ │ │ │ ├── AbstractTargetFilterQueryUpdateCreate.java │ │ │ │ ├── AbstractTargetTypeUpdateCreate.java │ │ │ │ ├── AbstractTargetUpdateCreate.java │ │ │ │ ├── AbstractTypeUpdateCreate.java │ │ │ │ ├── GenericDistributionSetTypeUpdate.java │ │ │ │ ├── GenericDistributionSetUpdate.java │ │ │ │ ├── GenericRolloutUpdate.java │ │ │ │ ├── GenericSoftwareModuleMetadataUpdate.java │ │ │ │ ├── GenericSoftwareModuleTypeUpdate.java │ │ │ │ ├── GenericSoftwareModuleUpdate.java │ │ │ │ ├── GenericTagUpdate.java │ │ │ │ ├── GenericTargetFilterQueryUpdate.java │ │ │ │ └── GenericTargetTypeUpdate.java │ │ │ │ ├── model │ │ │ │ └── helper │ │ │ │ │ ├── EventPublisherHolder.java │ │ │ │ │ ├── SystemSecurityContextHolder.java │ │ │ │ │ └── TenantConfigurationManagementHolder.java │ │ │ │ └── rsql │ │ │ │ └── VirtualPropertyResolver.java │ │ └── resources │ │ │ ├── hawkbit-eventbus-defaults.properties │ │ │ └── hawkbit-repository-defaults.properties │ │ └── test │ │ └── java │ │ └── org │ │ └── eclipse │ │ └── hawkbit │ │ └── event │ │ └── BusProtoStuffMessageConverterTest.java ├── hawkbit-repository-jpa-api │ ├── README.md │ ├── pom.xml │ └── src │ │ └── main │ │ └── java │ │ └── org │ │ └── eclipse │ │ └── hawkbit │ │ └── repository │ │ └── jpa │ │ ├── EntityInterceptor.java │ │ ├── executor │ │ ├── AfterTransactionCommitDefaultServiceExecutor.java │ │ └── AfterTransactionCommitExecutor.java │ │ ├── model │ │ ├── EntityInterceptorListener.java │ │ ├── EventAwareEntity.java │ │ └── helper │ │ │ ├── AfterTransactionCommitExecutorHolder.java │ │ │ ├── EntityInterceptorHolder.java │ │ │ ├── SecurityTokenGeneratorHolder.java │ │ │ └── TenantAwareHolder.java │ │ └── utils │ │ ├── JpaExceptionTranslator.java │ │ └── MapAttributeConverter.java ├── hawkbit-repository-jpa-eclipselink │ ├── README.md │ ├── pom.xml │ └── src │ │ ├── main │ │ ├── java │ │ │ └── org │ │ │ │ └── eclipse │ │ │ │ └── hawkbit │ │ │ │ └── repository │ │ │ │ └── jpa │ │ │ │ ├── EclipselinkUtils.java │ │ │ │ ├── HawkbitEclipseLinkJpaDialect.java │ │ │ │ ├── Jpa.java │ │ │ │ ├── JpaConfiguration.java │ │ │ │ ├── MultiTenantJpaTransactionManager.java │ │ │ │ ├── Statistics.java │ │ │ │ └── model │ │ │ │ ├── AbstractJpaBaseEntity.java │ │ │ │ ├── AbstractJpaTenantAwareBaseEntity.java │ │ │ │ ├── EntityPropertyChangeListener.java │ │ │ │ └── FakeJpaEntityForStaticCompilation.java │ │ └── resources │ │ │ └── META-INF │ │ │ └── spring │ │ │ └── org.springframework.boot.autoconfigure.AutoConfiguration.imports │ │ └── test │ │ └── java │ │ └── org │ │ └── eclipse │ │ └── hawkbit │ │ └── repository │ │ └── jpa │ │ └── HawkBitEclipseLinkJpaDialectTest.java ├── hawkbit-repository-jpa-flyway │ ├── README.md │ ├── pom.xml │ └── src │ │ └── main │ │ ├── java │ │ └── org │ │ │ └── eclipse │ │ │ └── hawkbit │ │ │ └── autoconfigure │ │ │ └── repository │ │ │ └── jpa │ │ │ └── flyway │ │ │ └── HawkbitFlywayAutoConfiguration.java │ │ └── resources │ │ ├── META-INF │ │ └── spring │ │ │ └── org.springframework.boot.autoconfigure.AutoConfiguration.imports │ │ ├── db │ │ └── migration │ │ │ ├── H2 │ │ │ ├── V1_0_1__init___H2.sql │ │ │ ├── V1_10_0__advanced_rolloutgroup__H2.sql │ │ │ ├── V1_10_1__consolidate_artifact_sha1__H2.sql │ │ │ ├── V1_10_2__rollout_auto_start__H2.sql │ │ │ ├── V1_10_3__add_rollout_deleted_flag__H2.sql │ │ │ ├── V1_11_0__drop_target_info__H2.sql │ │ │ ├── V1_11_1__target_filter_query_UQ___H2.sql │ │ │ ├── V1_11_2__remove_unused_idexes___H2.sql │ │ │ ├── V1_11_3__add_module_md_targetvis__H2.sql │ │ │ ├── V1_12_0__action_performance___H2.sql │ │ │ ├── V1_12_10__change_length_of_target_attributes_key___H2.sql │ │ │ ├── V1_12_11__add_auto_assign_action_type___H2.sql │ │ │ ├── V1_12_12__change_length_of_controller_id_and_name___H2.sql │ │ │ ├── V1_12_13__add_action_external_id___H2.sql │ │ │ ├── V1_12_14__add_sha256_hash___H2.sql │ │ │ ├── V1_12_15__add_weight___H2.sql │ │ │ ├── V1_12_16__add_action_initiated_by___H2.sql │ │ │ ├── V1_12_17__add_index_target_modified___H2.sql │ │ │ ├── V1_12_18__add_target_type___H2.sql │ │ │ ├── V1_12_19__add_valid_flag_to_ds___H2.sql │ │ │ ├── V1_12_1__missing_non_null___H2.sql │ │ │ ├── V1_12_20__add_encryption_flag_to_sm___H2.sql │ │ │ ├── V1_12_21__add_rollouts_status_index___H2.sql │ │ │ ├── V1_12_22__change_target_type_name_length___H2.sql │ │ │ ├── V1_12_23__add_action_status_code___H2.sql │ │ │ ├── V1_12_24__add_last_action_status_code___H2.sql │ │ │ ├── V1_12_25__add_confirmation_flag___H2.sql │ │ │ ├── V1_12_26__add_access_control_context___H2.sql │ │ │ ├── V1_12_27__target_type_inherit_type___H2.sql │ │ │ ├── V1_12_28__add_dynamic_rollout___H2.sql │ │ │ ├── V1_12_29__add_ds_sm_locked___H2.sql │ │ │ ├── V1_12_2__missing_non_null_enum___H2.sql │ │ │ ├── V1_12_30__add_distrubuted_lock___H2.sql │ │ │ ├── V1_12_31__add_type_to_ds_index___H2.sql │ │ │ ├── V1_12_32__refactoring_rename___H2.sql │ │ │ ├── V1_12_3__cascade_delete___H2.sql │ │ │ ├── V1_12_4__add_maintenance_window___H2.sql │ │ │ ├── V1_12_6__add_index___H2.sql │ │ │ ├── V1_12_7__add_rollout_approval_fields___H2.sql │ │ │ ├── V1_12_8__change_length_of_created_last_modified_by___H2.sql │ │ │ ├── V1_12_9__add_target_metadata___H2.sql │ │ │ ├── V1_2_0__update_target_info_for_message___H2.sql │ │ │ ├── V1_4_0__cascade_delete___H2.sql │ │ │ ├── V1_4_1__cascade_delete___H2.sql │ │ │ ├── V1_5_0__target_filter_query___H2.sql │ │ │ ├── V1_6_0__rollout_management___H2.sql │ │ │ ├── V1_7_0__swmType_maxAssignment_greater_0__H2.sql │ │ │ ├── V1_7_1__reduce_length_enums___H2.sql │ │ │ ├── V1_8_0__auto_assign_ds_filter__H2.sql │ │ │ ├── V1_8_1__cascade_delete___H2.sql │ │ │ ├── V1_8_2__remove_external_artifact___H2.sql │ │ │ └── V1_9_0__add_rollout_groups_created___H2.sql │ │ │ ├── MYSQL │ │ │ ├── V1_0_1__init___MYSQL.sql │ │ │ ├── V1_10_0__advanced_rolloutgroup__MYSQL.sql │ │ │ ├── V1_10_1__consolidate_artifact_sha1__MYSQL.sql │ │ │ ├── V1_10_2__rollout_auto_start__MYSQL.sql │ │ │ ├── V1_10_3__add_rollout_deleted_flag__MYSQL.sql │ │ │ ├── V1_11_0__drop_target_info__MYSQL.sql │ │ │ ├── V1_11_1__target_filter_query_UQ___MYSQL.sql │ │ │ ├── V1_11_2__remove_unused_idexes___MYSQL.sql │ │ │ ├── V1_11_3__add_module_md_targetvis__MYSQL.sql │ │ │ ├── V1_12_0__action_performance___MYSQL.sql │ │ │ ├── V1_12_10__change_length_of_target_attributes_key___MYSQL.sql │ │ │ ├── V1_12_11__add_auto_assign_action_type___MYSQL.sql │ │ │ ├── V1_12_12__change_length_of_controller_id_and_name___MYSQL.sql │ │ │ ├── V1_12_13__add_action_external_id___MYSQL.sql │ │ │ ├── V1_12_14__add_sha256_hash___MYSQL.sql │ │ │ ├── V1_12_15__add_weight___MYSQL.sql │ │ │ ├── V1_12_16__add_action_initiated_by___MYSQL.sql │ │ │ ├── V1_12_17__add_index_target_modified___MYSQL.sql │ │ │ ├── V1_12_18__add_target_type___MYSQL.sql │ │ │ ├── V1_12_19__add_valid_flag_to_ds___MYSQL.sql │ │ │ ├── V1_12_1__missing_non_null___MYSQL.sql │ │ │ ├── V1_12_20__add_encryption_flag_to_sm___MYSQL.sql │ │ │ ├── V1_12_21__add_rollouts_status_index___MYSQL.sql │ │ │ ├── V1_12_22__change_target_type_name_length___MYSQL.sql │ │ │ ├── V1_12_23__add_action_status_code___MYSQL.sql │ │ │ ├── V1_12_24__add_last_action_status_code___MYSQL.sql │ │ │ ├── V1_12_25__add_confirmation_flag___MYSQL.sql │ │ │ ├── V1_12_26__add_access_control_context___MYSQL.sql │ │ │ ├── V1_12_27__target_type_inherit_type___MYSQL.sql │ │ │ ├── V1_12_28__add_dynamic_rollout___MYSQL.sql │ │ │ ├── V1_12_29__add_ds_sm_locked___MYSQL.sql │ │ │ ├── V1_12_2__missing_non_null_enum___MYSQL.sql │ │ │ ├── V1_12_30__add_distrubuted_lock___MYSQL.sql │ │ │ ├── V1_12_31__add_type_to_ds_index___MYSQL.sql │ │ │ ├── V1_12_32__refactoring_rename____MYSQL.sql │ │ │ ├── V1_12_3__cascade_delete___MYSQL.sql │ │ │ ├── V1_12_4__add_maintenance_window___MYSQL.sql │ │ │ ├── V1_12_6__add_index___MYSQL.sql │ │ │ ├── V1_12_7__add_rollout_approval_fields___MYSQL.sql │ │ │ ├── V1_12_8__change_length_of_created_last_modified_by___MYSQL.sql │ │ │ ├── V1_12_9__add_target_metadata___MYSQL.sql │ │ │ ├── V1_2_0__update_target_info_for_message___MYSQL.sql │ │ │ ├── V1_4_0__cascade_delete___MYSQL.sql │ │ │ ├── V1_4_1__cascade_delete___MYSQL.sql │ │ │ ├── V1_5_0__target_filter_query___MYSQL.sql │ │ │ ├── V1_6_0__rollout_management___MYSQL.sql │ │ │ ├── V1_7_0__swmType_maxAssignment_greater_0__MYSQL.sql │ │ │ ├── V1_7_1__reduce_length_enums___MYSQL.sql │ │ │ ├── V1_8_0__auto_assign_ds_filter__MYSQL.sql │ │ │ ├── V1_8_1__cascade_delete___MYSQL.sql │ │ │ ├── V1_8_2__remove_external_artifact___MYSQL.sql │ │ │ └── V1_9_0__add_rollout_groups_created___MYSQL.sql │ │ │ └── POSTGRESQL │ │ │ ├── V1_12_15__baseline___POSTGRESQL.sql │ │ │ ├── V1_12_16__add_action_initiated_by___POSTGRESQL.sql │ │ │ ├── V1_12_17__add_index_target_modified___POSTGRESQL.sql │ │ │ ├── V1_12_18__add_target_type___POSTGRESQL.sql │ │ │ ├── V1_12_19__add_valid_flag_to_ds___POSTGRESQL.sql │ │ │ ├── V1_12_20__add_encryption_flag_to_sm___POSTGRESQL.sql │ │ │ ├── V1_12_21__add_rollouts_status_index___POSTGRESQL.sql │ │ │ ├── V1_12_22__change_target_type_name_length___POSTGRESQL.sql │ │ │ ├── V1_12_23__add_action_status_code___POSTGRESQL.sql │ │ │ ├── V1_12_24__add_last_action_status_code___POSTGRESQL.sql │ │ │ ├── V1_12_25__add_confirmation_flag___POSTGRESQL.sql │ │ │ ├── V1_12_26__add_access_control_context___POSTGRESQL.sql │ │ │ ├── V1_12_27__target_type_inherit_type___POSTGRESQL.sql │ │ │ ├── V1_12_28__add_dynamic_rollout___POSTGRESQL.sql │ │ │ ├── V1_12_29__add_ds_sm_locked___POSTGRESQL.sql │ │ │ ├── V1_12_30__add_indexes___POSTGRESQL.sql │ │ │ ├── V1_12_31__add_distrubuted_lock___POSTGRESQL.sql │ │ │ ├── V1_12_32__add_type_to_ds_index___POSTGRESQL.sql │ │ │ └── V1_12_33__refactoring_rename___POSTGRESQL.sql │ │ └── hawkbit-jpa-flyway-defaults.properties ├── hawkbit-repository-jpa-hibernate │ ├── README.md │ ├── pom.xml │ └── src │ │ └── main │ │ ├── java │ │ └── org │ │ │ └── eclipse │ │ │ └── hawkbit │ │ │ └── repository │ │ │ └── jpa │ │ │ ├── Jpa.java │ │ │ ├── JpaConfiguration.java │ │ │ ├── Statistics.java │ │ │ ├── TenantIdentifier.java │ │ │ └── model │ │ │ ├── AbstractJpaBaseEntity.java │ │ │ ├── AbstractJpaTenantAwareBaseEntity.java │ │ │ └── EntityPropertyChangeListener.java │ │ └── resources │ │ └── META-INF │ │ └── spring │ │ └── org.springframework.boot.autoconfigure.AutoConfiguration.imports ├── hawkbit-repository-jpa-init │ ├── README.md │ ├── pom.xml │ └── src │ │ ├── assembly │ │ └── jar-with-dependencies.xml │ │ └── main │ │ ├── java │ │ └── org │ │ │ └── eclipse │ │ │ └── hawkbit │ │ │ └── repository │ │ │ └── jpa │ │ │ └── init │ │ │ └── HawkbitFlywayDbInit.java │ │ └── resources │ │ └── logback.xml ├── hawkbit-repository-jpa │ ├── README.md │ ├── pom.xml │ └── src │ │ ├── main │ │ ├── java │ │ │ └── org │ │ │ │ └── eclipse │ │ │ │ └── hawkbit │ │ │ │ └── repository │ │ │ │ └── jpa │ │ │ │ ├── CurrentTenantCacheKeyGenerator.java │ │ │ │ ├── CustomBaseRepositoryFactoryBean.java │ │ │ │ ├── DefaultRolloutApprovalStrategy.java │ │ │ │ ├── EncryptionAwareDbArtifact.java │ │ │ │ ├── JpaEntityFactory.java │ │ │ │ ├── JpaManagementHelper.java │ │ │ │ ├── JpaRolloutExecutor.java │ │ │ │ ├── JpaRolloutHandler.java │ │ │ │ ├── RepositoryApplicationConfiguration.java │ │ │ │ ├── SystemManagementCacheKeyGenerator.java │ │ │ │ ├── TenantKeyGenerator.java │ │ │ │ ├── acm │ │ │ │ └── AccessController.java │ │ │ │ ├── aspects │ │ │ │ └── ExceptionMappingAspectHandler.java │ │ │ │ ├── autoassign │ │ │ │ ├── AbstractAutoAssignExecutor.java │ │ │ │ ├── AutoAssignChecker.java │ │ │ │ └── AutoAssignScheduler.java │ │ │ │ ├── autocleanup │ │ │ │ ├── AutoActionCleanup.java │ │ │ │ ├── AutoCleanupScheduler.java │ │ │ │ └── CleanupTask.java │ │ │ │ ├── builder │ │ │ │ ├── JpaActionStatusBuilder.java │ │ │ │ ├── JpaActionStatusCreate.java │ │ │ │ ├── JpaDistributionSetBuilder.java │ │ │ │ ├── JpaDistributionSetCreate.java │ │ │ │ ├── JpaDistributionSetTypeBuilder.java │ │ │ │ ├── JpaDistributionSetTypeCreate.java │ │ │ │ ├── JpaRolloutBuilder.java │ │ │ │ ├── JpaRolloutCreate.java │ │ │ │ ├── JpaRolloutGroupBuilder.java │ │ │ │ ├── JpaRolloutGroupCreate.java │ │ │ │ ├── JpaSoftwareModuleBuilder.java │ │ │ │ ├── JpaSoftwareModuleCreate.java │ │ │ │ ├── JpaSoftwareModuleMetadataBuilder.java │ │ │ │ ├── JpaSoftwareModuleMetadataCreate.java │ │ │ │ ├── JpaSoftwareModuleTypeBuilder.java │ │ │ │ ├── JpaSoftwareModuleTypeCreate.java │ │ │ │ ├── JpaTagBuilder.java │ │ │ │ ├── JpaTagCreate.java │ │ │ │ ├── JpaTargetBuilder.java │ │ │ │ ├── JpaTargetCreate.java │ │ │ │ ├── JpaTargetFilterQueryBuilder.java │ │ │ │ ├── JpaTargetFilterQueryCreate.java │ │ │ │ ├── JpaTargetTypeBuilder.java │ │ │ │ ├── JpaTargetTypeCreate.java │ │ │ │ └── JpaTargetUpdate.java │ │ │ │ ├── cluster │ │ │ │ ├── DistributedLockRepository.java │ │ │ │ └── LockProperties.java │ │ │ │ ├── configuration │ │ │ │ └── Constants.java │ │ │ │ ├── event │ │ │ │ └── JpaEventEntityManager.java │ │ │ │ ├── management │ │ │ │ ├── AbstractDsAssignmentStrategy.java │ │ │ │ ├── JpaActionManagement.java │ │ │ │ ├── JpaArtifactManagement.java │ │ │ │ ├── JpaConfirmationManagement.java │ │ │ │ ├── JpaControllerManagement.java │ │ │ │ ├── JpaDeploymentManagement.java │ │ │ │ ├── JpaDistributionSetInvalidationManagement.java │ │ │ │ ├── JpaDistributionSetManagement.java │ │ │ │ ├── JpaDistributionSetTagManagement.java │ │ │ │ ├── JpaDistributionSetTypeManagement.java │ │ │ │ ├── JpaRolloutGroupManagement.java │ │ │ │ ├── JpaRolloutManagement.java │ │ │ │ ├── JpaSoftwareModuleManagement.java │ │ │ │ ├── JpaSoftwareModuleTypeManagement.java │ │ │ │ ├── JpaSystemManagement.java │ │ │ │ ├── JpaTargetFilterQueryManagement.java │ │ │ │ ├── JpaTargetManagement.java │ │ │ │ ├── JpaTargetTagManagement.java │ │ │ │ ├── JpaTargetTypeManagement.java │ │ │ │ ├── JpaTenantConfigurationManagement.java │ │ │ │ ├── JpaTenantStatsManagement.java │ │ │ │ ├── OfflineDsAssignmentStrategy.java │ │ │ │ └── OnlineDsAssignmentStrategy.java │ │ │ │ ├── model │ │ │ │ ├── AbstractJpaNamedEntity.java │ │ │ │ ├── AbstractJpaNamedVersionedEntity.java │ │ │ │ ├── AbstractJpaTypeEntity.java │ │ │ │ ├── DistributionSetTypeElement.java │ │ │ │ ├── DistributionSetTypeElementCompositeKey.java │ │ │ │ ├── JpaAction.java │ │ │ │ ├── JpaActionStatus.java │ │ │ │ ├── JpaArtifact.java │ │ │ │ ├── JpaAutoConfirmationStatus.java │ │ │ │ ├── JpaDistributionSet.java │ │ │ │ ├── JpaDistributionSetTag.java │ │ │ │ ├── JpaDistributionSetType.java │ │ │ │ ├── JpaRollout.java │ │ │ │ ├── JpaRolloutGroup.java │ │ │ │ ├── JpaSoftwareModule.java │ │ │ │ ├── JpaSoftwareModuleMetadata.java │ │ │ │ ├── JpaSoftwareModuleType.java │ │ │ │ ├── JpaStatistic.java │ │ │ │ ├── JpaTag.java │ │ │ │ ├── JpaTarget.java │ │ │ │ ├── JpaTargetFilterQuery.java │ │ │ │ ├── JpaTargetTag.java │ │ │ │ ├── JpaTargetType.java │ │ │ │ ├── JpaTenantConfiguration.java │ │ │ │ ├── JpaTenantMetaData.java │ │ │ │ ├── RolloutTargetGroup.java │ │ │ │ ├── RolloutTargetGroupId.java │ │ │ │ └── SwMetadataCompositeKey.java │ │ │ │ ├── repository │ │ │ │ ├── ACMRepository.java │ │ │ │ ├── ActionRepository.java │ │ │ │ ├── ActionStatusRepository.java │ │ │ │ ├── BaseEntityRepository.java │ │ │ │ ├── BaseEntityRepositoryACM.java │ │ │ │ ├── DistributionSetRepository.java │ │ │ │ ├── DistributionSetTagRepository.java │ │ │ │ ├── DistributionSetTypeRepository.java │ │ │ │ ├── HawkbitBaseRepository.java │ │ │ │ ├── JpaSpecificationEntityGraphExecutor.java │ │ │ │ ├── LocalArtifactRepository.java │ │ │ │ ├── NoCountSliceRepository.java │ │ │ │ ├── RolloutGroupRepository.java │ │ │ │ ├── RolloutRepository.java │ │ │ │ ├── RolloutTargetGroupRepository.java │ │ │ │ ├── SoftwareModuleMetadataRepository.java │ │ │ │ ├── SoftwareModuleRepository.java │ │ │ │ ├── SoftwareModuleTypeRepository.java │ │ │ │ ├── TargetFilterQueryRepository.java │ │ │ │ ├── TargetRepository.java │ │ │ │ ├── TargetTagRepository.java │ │ │ │ ├── TargetTypeRepository.java │ │ │ │ ├── TenantConfigurationRepository.java │ │ │ │ └── TenantMetaDataRepository.java │ │ │ │ ├── rollout │ │ │ │ ├── BlockWhenFullPolicy.java │ │ │ │ ├── RolloutScheduler.java │ │ │ │ └── condition │ │ │ │ │ ├── EvaluatorNotConfiguredException.java │ │ │ │ │ ├── PauseRolloutGroupAction.java │ │ │ │ │ ├── RolloutGroupActionEvaluator.java │ │ │ │ │ ├── RolloutGroupConditionEvaluator.java │ │ │ │ │ ├── RolloutGroupEvaluationManager.java │ │ │ │ │ ├── StartNextGroupRolloutGroupSuccessAction.java │ │ │ │ │ ├── ThresholdRolloutGroupErrorCondition.java │ │ │ │ │ └── ThresholdRolloutGroupSuccessCondition.java │ │ │ │ ├── rsql │ │ │ │ ├── Node.java │ │ │ │ ├── RSQLUtility.java │ │ │ │ ├── RsqlParser.java │ │ │ │ └── SpecificationBuilder.java │ │ │ │ ├── rsqllegacy │ │ │ │ ├── AbstractRSQLVisitor.java │ │ │ │ ├── JpaQueryRsqlVisitor.java │ │ │ │ ├── JpaQueryRsqlVisitorG2.java │ │ │ │ └── SpecificationBuilderLegacy.java │ │ │ │ ├── specifications │ │ │ │ ├── ActionSpecifications.java │ │ │ │ ├── ArtifactSpecifications.java │ │ │ │ ├── DistributionSetSpecification.java │ │ │ │ ├── DistributionSetTagSpecifications.java │ │ │ │ ├── DistributionSetTypeSpecification.java │ │ │ │ ├── RolloutSpecification.java │ │ │ │ ├── SoftwareModuleSpecification.java │ │ │ │ ├── SoftwareModuleTypeSpecification.java │ │ │ │ ├── SpecificationsBuilder.java │ │ │ │ ├── TagSpecification.java │ │ │ │ ├── TargetFilterQuerySpecification.java │ │ │ │ ├── TargetSpecifications.java │ │ │ │ └── TargetTypeSpecification.java │ │ │ │ └── utils │ │ │ │ ├── DeploymentHelper.java │ │ │ │ ├── FileSizeAndStorageQuotaCheckingInputStream.java │ │ │ │ ├── QuotaHelper.java │ │ │ │ ├── StatisticsUtils.java │ │ │ │ └── WeightValidationHelper.java │ │ └── resources │ │ │ └── hawkbit-jpa-defaults.properties │ │ └── test │ │ ├── java │ │ └── org │ │ │ └── eclipse │ │ │ └── hawkbit │ │ │ └── repository │ │ │ ├── event │ │ │ └── remote │ │ │ │ ├── AbstractRemoteEventTest.java │ │ │ │ ├── RemoteIdEventTest.java │ │ │ │ ├── RemoteTenantAwareEventTest.java │ │ │ │ └── entity │ │ │ │ ├── AbstractRemoteEntityEventTest.java │ │ │ │ ├── ActionEventTest.java │ │ │ │ ├── DistributionSetCreatedEventTest.java │ │ │ │ ├── DistributionSetTagEventTest.java │ │ │ │ ├── DistributionSetUpdatedEventTest.java │ │ │ │ ├── RolloutEventTest.java │ │ │ │ ├── RolloutGroupEventTest.java │ │ │ │ ├── SoftwareModuleEventTest.java │ │ │ │ ├── TargetEventTest.java │ │ │ │ └── TargetTagEventTest.java │ │ │ └── jpa │ │ │ ├── AbstractJpaIntegrationTest.java │ │ │ ├── AbstractRepositoryManagementSecurityTest.java │ │ │ ├── ConcurrentDistributionSetInvalidationTest.java │ │ │ ├── RandomGeneratedInputStream.java │ │ │ ├── acm │ │ │ ├── context │ │ │ │ └── ContextAwareTest.java │ │ │ └── controller │ │ │ │ ├── AbstractAccessControllerTest.java │ │ │ │ ├── DistributionSetAccessControllerTest.java │ │ │ │ ├── TargetAccessControllerTest.java │ │ │ │ ├── TargetTypeAccessControllerTest.java │ │ │ │ └── TestAccessControlManger.java │ │ │ ├── autoassign │ │ │ ├── AutoAssignCheckerIntTest.java │ │ │ └── AutoAssignCheckerTest.java │ │ │ ├── autocleanup │ │ │ ├── AutoActionCleanupTest.java │ │ │ └── AutoCleanupSchedulerTest.java │ │ │ ├── cluster │ │ │ └── DistributedLockTest.java │ │ │ ├── event │ │ │ └── RepositoryEntityEventTest.java │ │ │ ├── management │ │ │ ├── ActionTest.java │ │ │ ├── ArtifactManagementSecurityTest.java │ │ │ ├── ArtifactManagementTest.java │ │ │ ├── ConfirmationManagementSecurityTest.java │ │ │ ├── ConfirmationManagementTest.java │ │ │ ├── ControllerManagementSecurityTest.java │ │ │ ├── ControllerManagementTest.java │ │ │ ├── DeploymentManagementSecurityTest.java │ │ │ ├── DeploymentManagementTest.java │ │ │ ├── DistributionSetInvalidationManagementTest.java │ │ │ ├── DistributionSetManagementSecurityTest.java │ │ │ ├── DistributionSetManagementTest.java │ │ │ ├── DistributionSetTagManagementSecurityTest.java │ │ │ ├── DistributionSetTagManagementTest.java │ │ │ ├── DistributionSetTypeManagementSecurityTest.java │ │ │ ├── DistributionSetTypeManagementTest.java │ │ │ ├── LazyControllerManagementTest.java │ │ │ ├── RolloutGroupManagementSecurityTest.java │ │ │ ├── RolloutGroupManagementTest.java │ │ │ ├── RolloutManagementFlowTest.java │ │ │ ├── RolloutManagementSecurityTest.java │ │ │ ├── RolloutManagementTest.java │ │ │ ├── SoftwareManagementSecurityTest.java │ │ │ ├── SoftwareModuleManagementTest.java │ │ │ ├── SoftwareModuleTypeManagementSecurityTest.java │ │ │ ├── SoftwareModuleTypeManagementTest.java │ │ │ ├── SystemManagementSecurityTest.java │ │ │ ├── SystemManagementTest.java │ │ │ ├── TargetFilterQueryManagementSecurityTest.java │ │ │ ├── TargetFilterQueryManagementTest.java │ │ │ ├── TargetManagementSearchTest.java │ │ │ ├── TargetManagementSecurityTest.java │ │ │ ├── TargetManagementTest.java │ │ │ ├── TargetTagManagementSecurityTest.java │ │ │ ├── TargetTagManagementTest.java │ │ │ ├── TargetTypeManagementSecurityTest.java │ │ │ ├── TargetTypeManagementTest.java │ │ │ ├── TenantConfigurationManagementSecurityTest.java │ │ │ └── TenantConfigurationManagementTest.java │ │ │ ├── model │ │ │ ├── EntityInterceptorListenerTest.java │ │ │ └── ModelEqualsHashcodeTest.java │ │ │ ├── rsql │ │ │ ├── HibernateUtils.java │ │ │ ├── NodeTest.java │ │ │ ├── RSQLActionFieldsTest.java │ │ │ ├── RSQLRolloutGroupFieldTest.java │ │ │ ├── RSQLSoftwareModuleFieldTest.java │ │ │ ├── RSQLSoftwareModuleTypeFieldsTest.java │ │ │ ├── RSQLTagFieldsTest.java │ │ │ ├── RSQLTargetFieldTest.java │ │ │ ├── RSQLTargetFilterQueryFieldsTest.java │ │ │ ├── RSQLToSQL.java │ │ │ ├── RSQLToSQLTest.java │ │ │ ├── RSQLUtilityTest.java │ │ │ ├── RsqlParserTest.java │ │ │ ├── VirtualPropertyResolverTest.java │ │ │ └── sa │ │ │ │ ├── ReferenceMatcher.java │ │ │ │ ├── Root.java │ │ │ │ ├── RootRepository.java │ │ │ │ ├── SpecificationBuilderLegacyTest.java │ │ │ │ ├── SpecificationBuilderTest.java │ │ │ │ ├── Sub.java │ │ │ │ └── SubRepository.java │ │ │ ├── specifications │ │ │ └── SpecificationsBuilderTest.java │ │ │ └── tenancy │ │ │ └── MultiTenancyEntityTest.java │ │ └── resources │ │ └── jpa-test.properties ├── hawkbit-repository-test │ ├── pom.xml │ └── src │ │ └── main │ │ ├── java │ │ └── org │ │ │ └── eclipse │ │ │ └── hawkbit │ │ │ └── repository │ │ │ └── test │ │ │ ├── TestConfiguration.java │ │ │ ├── matcher │ │ │ ├── BaseEntityMatcher.java │ │ │ ├── EventVerifier.java │ │ │ ├── Expect.java │ │ │ └── ExpectEvents.java │ │ │ └── util │ │ │ ├── AbstractIntegrationTest.java │ │ │ ├── AbstractSqlTestDatabase.java │ │ │ ├── CleanupTestExecutionListener.java │ │ │ ├── DatasourceContext.java │ │ │ ├── DisposableSqlTestDatabaseExtension.java │ │ │ ├── H2TestDatabase.java │ │ │ ├── HashGeneratorUtils.java │ │ │ ├── JUnitTestLoggerExtension.java │ │ │ ├── JpaTestRepositoryManagement.java │ │ │ ├── MySqlTestDatabase.java │ │ │ ├── PostgreSqlTestDatabase.java │ │ │ ├── RolloutTestApprovalStrategy.java │ │ │ ├── SecurityContextSwitch.java │ │ │ ├── SharedSqlTestDatabaseExtension.java │ │ │ ├── SystemManagementHolder.java │ │ │ ├── TargetTestData.java │ │ │ ├── TestdataFactory.java │ │ │ └── WithUser.java │ │ └── resources │ │ └── hawkbit-test-defaults.properties └── pom.xml ├── hawkbit-rest-core ├── pom.xml └── src │ ├── main │ └── java │ │ └── org │ │ └── eclipse │ │ └── hawkbit │ │ └── rest │ │ ├── OpenApiConfiguration.java │ │ ├── RestConfiguration.java │ │ ├── SecurityManagedConfiguration.java │ │ ├── exception │ │ ├── MessageNotReadableException.java │ │ └── MultiPartFileUploadException.java │ │ ├── json │ │ └── model │ │ │ ├── ExceptionInfo.java │ │ │ └── ResponseList.java │ │ ├── security │ │ └── DosFilter.java │ │ └── util │ │ ├── FileStreamingFailedException.java │ │ ├── FileStreamingUtil.java │ │ ├── HttpUtil.java │ │ └── RequestResponseContextHolder.java │ └── test │ └── java │ └── org │ └── eclipse │ └── hawkbit │ └── rest │ ├── AbstractRestIntegrationTest.java │ ├── ExcludePathAwareShallowETagFilterTest.java │ ├── json │ └── model │ │ └── ExceptionInfoTest.java │ └── util │ ├── FileStreamingUtilTest.java │ ├── JsonBuilder.java │ ├── MockMvcResultPrinter.java │ └── SuccessCondition.java ├── hawkbit-sdk ├── hawkbit-sdk-commons │ ├── pom.xml │ └── src │ │ └── main │ │ ├── java │ │ └── org │ │ │ └── eclipse │ │ │ └── hawkbit │ │ │ └── sdk │ │ │ ├── Certificate.java │ │ │ ├── Controller.java │ │ │ ├── HawkbitClient.java │ │ │ ├── HawkbitSDKConfiguration.java │ │ │ ├── HawkbitServer.java │ │ │ ├── Tenant.java │ │ │ ├── ca │ │ │ └── CA.java │ │ │ └── spi │ │ │ └── ArtifactHandler.java │ │ └── resources │ │ ├── META-INF │ │ └── spring │ │ │ └── org.springframework.boot.autoconfigure.AutoConfiguration.imports │ │ └── hawkbit-sdk-defaults.properties ├── hawkbit-sdk-demo │ ├── pom.xml │ └── src │ │ └── main │ │ ├── java │ │ └── org │ │ │ └── eclipse │ │ │ └── hawkbit │ │ │ └── sdk │ │ │ └── demo │ │ │ ├── device │ │ │ └── DeviceApp.java │ │ │ ├── dmf │ │ │ └── DmfApp.java │ │ │ └── multidevice │ │ │ └── MultiDeviceApp.java │ │ └── resources │ │ └── application.properties ├── hawkbit-sdk-device │ ├── pom.xml │ └── src │ │ └── main │ │ ├── java │ │ └── org │ │ │ └── eclipse │ │ │ └── hawkbit │ │ │ └── sdk │ │ │ └── device │ │ │ ├── DdiController.java │ │ │ ├── DdiTenant.java │ │ │ ├── UpdateHandler.java │ │ │ └── UpdateStatus.java │ │ └── resources │ │ └── application.properties ├── hawkbit-sdk-dmf │ ├── pom.xml │ └── src │ │ └── main │ │ ├── java │ │ └── org │ │ │ └── eclipse │ │ │ └── hawkbit │ │ │ └── sdk │ │ │ └── dmf │ │ │ ├── DmfController.java │ │ │ ├── DmfTenant.java │ │ │ ├── UpdateHandler.java │ │ │ ├── UpdateStatus.java │ │ │ ├── amqp │ │ │ ├── Amqp.java │ │ │ ├── AmqpProperties.java │ │ │ ├── DmfSender.java │ │ │ └── VHost.java │ │ │ └── health │ │ │ └── HealthService.java │ │ └── resources │ │ └── application.properties ├── hawkbit-sdk-mgmt │ ├── pom.xml │ └── src │ │ └── main │ │ └── java │ │ └── org │ │ └── eclipse │ │ └── hawkbit │ │ └── sdk │ │ └── mgmt │ │ └── AuthenticationSetupHelper.java └── pom.xml ├── hawkbit-security-core ├── pom.xml └── src │ ├── main │ └── java │ │ └── org │ │ └── eclipse │ │ └── hawkbit │ │ ├── audit │ │ ├── AuditContextProvider.java │ │ ├── AuditLog.java │ │ ├── AuditLogger.java │ │ └── AuditLoggingAspect.java │ │ ├── im │ │ └── authentication │ │ │ ├── SpPermission.java │ │ │ ├── SpRole.java │ │ │ └── StaticAuthenticationProvider.java │ │ ├── security │ │ ├── DdiSecurityProperties.java │ │ ├── HawkbitSecurityProperties.java │ │ ├── InMemoryUserAuthoritiesResolver.java │ │ ├── MdcHandler.java │ │ ├── SecurityConstants.java │ │ ├── SecurityContextSerializer.java │ │ ├── SecurityContextTenantAware.java │ │ ├── SecurityTokenGenerator.java │ │ ├── SpringSecurityAuditorAware.java │ │ └── SystemSecurityContext.java │ │ └── util │ │ ├── IpUtil.java │ │ └── UrlUtils.java │ └── test │ └── java │ └── org │ └── eclipse │ └── hawkbit │ ├── im │ └── authentication │ │ └── SpPermissionTest.java │ └── util │ └── IpUtilTest.java ├── hawkbit-simple-ui ├── .gitignore ├── pom.xml └── src │ └── main │ ├── frontend │ └── themes │ │ └── hawkbit │ │ ├── styles.css │ │ └── theme.json │ ├── java │ └── org │ │ └── eclipse │ │ └── hawkbit │ │ └── ui │ │ └── simple │ │ ├── HawkbitMgmtClient.java │ │ ├── MainLayout.java │ │ ├── SimpleUIApp.java │ │ ├── security │ │ ├── AuthenticatedUser.java │ │ ├── OAuth2TokenManager.java │ │ ├── Oauth2ClientConfig.java │ │ ├── OidcClientProperties.java │ │ └── SecurityConfiguration.java │ │ └── view │ │ ├── AboutView.java │ │ ├── ConfigView.java │ │ ├── Constants.java │ │ ├── DistributionSetView.java │ │ ├── LoginView.java │ │ ├── RolloutView.java │ │ ├── SoftwareModuleView.java │ │ ├── TargetView.java │ │ └── util │ │ ├── Filter.java │ │ ├── SelectionGrid.java │ │ ├── TableView.java │ │ └── Utils.java │ └── resources │ ├── META-INF │ └── resources │ │ └── images │ │ ├── about_image.png │ │ └── header_icon.png │ ├── application.properties │ └── banner.txt ├── hawkbit-test-report ├── placeholder.txt ├── pom.xml └── src │ └── main │ └── resources │ └── assemblies │ └── test-report.xml ├── hawkbit_logo.png ├── intellij_codeformatter.xml ├── licenses ├── LICENSE_HEADER_TEMPLATE.txt ├── LICENSE_HEADER_TEMPLATE_BLUEZONE_25.txt ├── LICENSE_HEADER_TEMPLATE_BOSCH_15.txt ├── LICENSE_HEADER_TEMPLATE_BOSCH_18.txt ├── LICENSE_HEADER_TEMPLATE_BOSCH_19.txt ├── LICENSE_HEADER_TEMPLATE_BOSCH_20.txt ├── LICENSE_HEADER_TEMPLATE_BOSCH_21.txt ├── LICENSE_HEADER_TEMPLATE_BOSCH_22.txt ├── LICENSE_HEADER_TEMPLATE_BOSCH_23.txt ├── LICENSE_HEADER_TEMPLATE_CONTRIBUTORS_23.txt ├── LICENSE_HEADER_TEMPLATE_CONTRIBUTORS_24.txt ├── LICENSE_HEADER_TEMPLATE_DEVOLO_19.txt ├── LICENSE_HEADER_TEMPLATE_DEVOLO_20.txt ├── LICENSE_HEADER_TEMPLATE_ENAPTER.txt ├── LICENSE_HEADER_TEMPLATE_KIWIGRID_19.txt ├── LICENSE_HEADER_TEMPLATE_MICROSOFT_18.txt ├── LICENSE_HEADER_TEMPLATE_MICROSOFT_20.txt ├── LICENSE_HEADER_TEMPLATE_SIEMENS.txt └── LICENSE_HEADER_TEMPLATE_SIEMENS_18.txt ├── lombok.config ├── pom.xml └── site ├── .gitignore ├── README.md ├── build-htmls.bat ├── build-htmls.sh ├── cleanup.bat ├── cleanup.sh ├── config.toml ├── content ├── apis │ ├── ddi_api.md │ ├── dmf_api.md │ └── management_api.md ├── architecture.md ├── blog │ ├── 2018-07-26-first-release.md │ ├── 2023-09-21-epl2.0.md │ ├── 2023-11-22-vaadin8_ui_discontinuation.md │ └── 2024-01-16-0.4.1-release.md ├── community.md ├── concepts │ ├── authentication.md │ ├── authorization.md │ ├── datamodel.md │ ├── rollout-management.md │ └── targetstate.md ├── features.md ├── gettingstarted.md ├── guides │ ├── clustering.md │ ├── feignclient.md │ ├── multitenancy.md │ └── runhawkbit.md ├── release-notes.md └── whatishawkbit.md ├── install-theme.bat ├── install-theme.sh ├── layouts ├── _default │ ├── list.html │ └── single.html ├── index.html └── partials │ ├── copyright.html │ ├── drawer.html │ ├── footer_js.html │ ├── head.html │ ├── header.html │ └── nav_link.html ├── pom.xml ├── src ├── main │ ├── java │ │ └── org │ │ │ └── eclipse │ │ │ └── hawkbit │ │ │ └── doc │ │ │ └── Start.java │ └── resources │ │ ├── application.properties │ │ └── banner.txt └── test │ └── java │ └── org │ └── eclipse │ └── hawkbit │ └── doc │ └── RestApiDocTest.java └── static ├── css └── hawkbit.css ├── images ├── architecture │ ├── architecture.png │ └── targetStatusStates.png ├── eclipse_foundation_logo.png ├── eventing-within-cluster.png ├── favicon.ico ├── hawkBit_overview.jpeg ├── hawkbit_icon.png ├── hawkbit_logo.png ├── hawkbit_transparency.png ├── interfaces.png ├── overall_cluster.png ├── packagemodel.png ├── rollout.png ├── rolloutgroupstatediagram.png ├── rolloutstatediagram.png └── security │ ├── exampleReverseProxyArchitecture.png │ ├── exampleReverseProxySettings.png │ ├── gatewayToken.png │ └── targetToken.png └── slides ├── community-day-2018.html ├── community-day-2019.html ├── community-day-2020.html ├── css ├── reveal.css └── theme │ └── hawkBit.css ├── js └── reveal.js ├── lib └── js │ ├── classList.js │ └── head.min.js ├── plugin ├── highlight │ └── highlight.js ├── markdown │ ├── markdown.js │ └── marked.js ├── math │ └── math.js ├── multiplex │ ├── client.js │ ├── index.js │ └── master.js ├── notes-server │ ├── client.js │ ├── index.js │ └── notes.html ├── notes │ ├── notes.html │ └── notes.js ├── print-pdf │ └── print-pdf.js ├── search │ └── search.js └── zoom-js │ └── zoom.js ├── resources └── images │ ├── hawkBit_overview.jpg │ └── hawkbit_logo.png └── reveal.js.txt /.3rd-party/README.md: -------------------------------------------------------------------------------- 1 | # Third-Party Dependencies 2 | 3 | This folder provides listings of all 3rd-party dependencies incl. their licenses. There is a dedicated subfolder for 4 | each release (and milestone) holding the release-specific information. 5 | 6 | The files are generated using 7 | the [check-dependencies.sh](https://github.com/eclipse-hawkbit/hawkbit/tree/master/check-dependencies.sh) script. The 8 | script makes use of the [Eclipse Dash License Tool](https://github.com/eclipse/dash-licenses) which identifies and vets 9 | the licenses of the project content. 10 | -------------------------------------------------------------------------------- /.gitattributes: -------------------------------------------------------------------------------- 1 | * text eol=lf 2 | *.bat text eol=crlf 3 | # Denote all files that are truly binary and should not be modified. 4 | *.png binary 5 | *.jpg binary 6 | *.jpeg binary 7 | *.pdf binary 8 | *.PNG binary 9 | *.pptx binary 10 | *.eot binary 11 | *.ttf binary 12 | *.woff binary 13 | *.jks binary 14 | *.pfx binary 15 | *.p12 binary 16 | -------------------------------------------------------------------------------- /.github/dependabot.yml: -------------------------------------------------------------------------------- 1 | version: 2 2 | updates: 3 | # Enable version updates for maven 4 | - package-ecosystem: "maven" 5 | # Look for a pom.xml everywhere 6 | directory: "/" 7 | # Check daily 8 | schedule: 9 | interval: "daily" 10 | # Enable version updates for docker 11 | - package-ecosystem: "docker" 12 | # Look for Dockerfile in the /docker directory only 13 | directory: "/docker" 14 | # Check daily 15 | schedule: 16 | interval: "daily" 17 | -------------------------------------------------------------------------------- /.github/workflows/.trivyignore: -------------------------------------------------------------------------------- 1 | # org.springframework:spring-web:5.3.31.RELEASE, ineffective vulnerability - hawkBit doesn't use beans of type HttpInvokerServiceExporter in applications 2 | CVE-2016-1000027 3 | 4 | # org.yaml:snakeyaml:1.33, ineffective vulnerability - Not applicable. Applications does not consume user-provided YAML data 5 | CVE-2022-1471 -------------------------------------------------------------------------------- /.github/workflows/first-interaction.yml: -------------------------------------------------------------------------------- 1 | name: First User Interaction 2 | 3 | on: 4 | pull_request_target: 5 | types: [ opened ] 6 | 7 | jobs: 8 | greeting: 9 | runs-on: ubuntu-latest 10 | steps: 11 | - uses: actions/first-interaction@v1 12 | with: 13 | repo-token: ${{ secrets.PAT_SECRET }} 14 | pr-message: |- 15 | Thanks @${{ github.actor }} for taking the time to contribute to hawkBit! We really appreciate this. Make yourself comfortable while I'm looking for a committer to help you with your contribution. 16 | Please make sure you read the [contribution guide](https://github.com/eclipse-hawkbit/hawkbit/blob/master/CONTRIBUTING.md) and signed the Eclipse Contributor Agreement (ECA). 17 | -------------------------------------------------------------------------------- /.github/workflows/stale.yml: -------------------------------------------------------------------------------- 1 | name: Mark & close stale issues 2 | 3 | on: 4 | workflow_dispatch: 5 | schedule: 6 | - cron: "0 0 * * *" 7 | 8 | jobs: 9 | stale: 10 | runs-on: ubuntu-latest 11 | steps: 12 | - uses: actions/stale@v9 13 | with: 14 | repo-token: ${{ secrets.PAT_SECRET }} 15 | days-before-stale: -1 16 | days-before-close: 15 17 | stale-issue-label: 'awaiting' 18 | close-issue-message: |- 19 | There has been no response from the original author so I closed this issue. 20 | Please reach out if you have or find the answers we need so that we can investigate further. 21 | only-labels: 'awaiting' 22 | skip-stale-issue-message: 'true' 23 | skip-stale-pr-message: 'true' 24 | -------------------------------------------------------------------------------- /.gitmodules: -------------------------------------------------------------------------------- 1 | [submodule "site/themes/hugo-material-docs"] 2 | path = site/themes/hugo-material-docs 3 | url = https://github.com/digitalcraftsman/hugo-material-docs.git 4 | -------------------------------------------------------------------------------- /SECURITY.md: -------------------------------------------------------------------------------- 1 | # Reporting a Security Vulnerability 2 | 3 | If you find a vulnerability, **DO NOT** disclose it in the public immediately! Instead, give us the possibility to fix 4 | it beforehand. 5 | So please don’t report your finding using GitHub issues and better head over 6 | to [https://eclipse.org/security](https://eclipse.org/security) and learn how to disclose a vulnerability in a safe and 7 | responsible manner 8 | -------------------------------------------------------------------------------- /check-dependencies.sh: -------------------------------------------------------------------------------- 1 | #!/bin/bash 2 | # 3 | # Copyright (c) 2023 Bosch.IO GmbH and others 4 | # 5 | # This program and the accompanying materials are made 6 | # available under the terms of the Eclipse Public License 2.0 7 | # which is available at https://www.eclipse.org/legal/epl-2.0/ 8 | # 9 | # SPDX-License-Identifier: EPL-2.0 10 | # 11 | 12 | DASH_SUMMARY=".3rd-party/DEPENDENCIES" 13 | DASH_REVIEW_SUMMARY=".3rd-party/DEPENDENCIES_REVIEW" 14 | 15 | if [ -z "$1" ] 16 | then 17 | DASH_IP_LAB= 18 | else 19 | DASH_IP_LAB="-Ddash.review.summary=${DASH_REVIEW_SUMMARY} -Ddash.iplab.token=$1" 20 | fi 21 | 22 | mvn clean install -DskipTests -Ddash.skip=false \ 23 | --projects '!org.eclipse.hawkbit:hawkbit-repository-test,!org.eclipse.hawkbit:hawkbit-dmf-rabbitmq-test' \ 24 | -Ddash.summary=${DASH_SUMMARY} ${DASH_IP_LAB} -------------------------------------------------------------------------------- /docker/mysql/docker-compose-micro-services-with-simple-ui-dbinit-mysql.yml: -------------------------------------------------------------------------------- 1 | # 2 | # Copyright (c) 2018 Bosch Software Innovations GmbH and others 3 | # 4 | # This program and the accompanying materials are made 5 | # available under the terms of the Eclipse Public License 2.0 6 | # which is available at https://www.eclipse.org/legal/epl-2.0/ 7 | # 8 | # SPDX-License-Identifier: EPL-2.0 9 | # 10 | version: '3.7' 11 | 12 | include: 13 | - docker-compose-micro-services-dbinit-mysql.yml 14 | 15 | services: 16 | 17 | # --------------------- 18 | # HawkBit Simple UI 19 | # --------------------- 20 | hawkbit-simple-ui: 21 | image: "hawkbit/hawkbit-simple-ui:latest" 22 | environment: 23 | - 'SPRING_APPLICATION_JSON={"hawkbit.server.mgmtUrl": "http://hawkbit-mgmt:8080"}' 24 | restart: always 25 | ports: 26 | - 8088:8088 27 | labels: 28 | NAME: "hawkbit-simple-ui" 29 | 30 | volumes: 31 | artifactrepo: 32 | driver: local 33 | -------------------------------------------------------------------------------- /docker/mysql/docker-compose-micro-services-with-simple-ui-mysql.yml: -------------------------------------------------------------------------------- 1 | # 2 | # Copyright (c) 2018 Bosch Software Innovations GmbH and others 3 | # 4 | # This program and the accompanying materials are made 5 | # available under the terms of the Eclipse Public License 2.0 6 | # which is available at https://www.eclipse.org/legal/epl-2.0/ 7 | # 8 | # SPDX-License-Identifier: EPL-2.0 9 | # 10 | version: '3.7' 11 | 12 | include: 13 | - docker-compose-micro-services-mysql.yml 14 | 15 | services: 16 | 17 | # --------------------- 18 | # HawkBit Simple UI 19 | # --------------------- 20 | hawkbit-simple-ui: 21 | image: "hawkbit/hawkbit-simple-ui:latest" 22 | environment: 23 | - 'SPRING_APPLICATION_JSON={"hawkbit.server.mgmtUrl": "http://hawkbit-mgmt:8080"}' 24 | restart: always 25 | ports: 26 | - 8088:8088 27 | labels: 28 | NAME: "hawkbit-simple-ui" 29 | 30 | volumes: 31 | artifactrepo: 32 | driver: local 33 | -------------------------------------------------------------------------------- /docker/mysql/docker-compose-monolith-with-simple-ui-dbinit-mysql.yml: -------------------------------------------------------------------------------- 1 | # 2 | # Copyright (c) 2018 Bosch Software Innovations GmbH and others 3 | # 4 | # This program and the accompanying materials are made 5 | # available under the terms of the Eclipse Public License 2.0 6 | # which is available at https://www.eclipse.org/legal/epl-2.0/ 7 | # 8 | # SPDX-License-Identifier: EPL-2.0 9 | # 10 | version: '3' 11 | 12 | include: 13 | - docker-compose-monolith-dbinit-mysql.yml 14 | 15 | services: 16 | 17 | # --------------------- 18 | # HawkBit Simple UI service 19 | # --------------------- 20 | hawkbit-simple-ui: 21 | image: "hawkbit/hawkbit-simple-ui:latest" 22 | environment: 23 | - 'SPRING_APPLICATION_JSON={"hawkbit.server.mgmtUrl": "http://hawkbit:8080"}' 24 | restart: always 25 | ports: 26 | - 8088:8088 27 | labels: 28 | NAME: "hawkbit-simple-ui" 29 | 30 | volumes: 31 | artifactrepo: 32 | driver: local 33 | -------------------------------------------------------------------------------- /docker/mysql/docker-compose-monolith-with-simple-ui-mysql.yml: -------------------------------------------------------------------------------- 1 | # 2 | # Copyright (c) 2018 Bosch Software Innovations GmbH and others 3 | # 4 | # This program and the accompanying materials are made 5 | # available under the terms of the Eclipse Public License 2.0 6 | # which is available at https://www.eclipse.org/legal/epl-2.0/ 7 | # 8 | # SPDX-License-Identifier: EPL-2.0 9 | # 10 | version: '3' 11 | 12 | include: 13 | - docker-compose-monolith-mysql.yml 14 | 15 | services: 16 | 17 | # --------------------- 18 | # HawkBit Simple UI service 19 | # --------------------- 20 | hawkbit-simple-ui: 21 | image: "hawkbit/hawkbit-simple-ui:latest" 22 | environment: 23 | - 'SPRING_APPLICATION_JSON={"hawkbit.server.mgmtUrl": "http://hawkbit:8080"}' 24 | restart: always 25 | ports: 26 | - 8088:8088 27 | labels: 28 | NAME: "hawkbit-simple-ui" 29 | 30 | volumes: 31 | artifactrepo: 32 | driver: local 33 | -------------------------------------------------------------------------------- /docker/postgres/docker-compose-micro-services-with-simple-ui-dbinit-postgres.yml: -------------------------------------------------------------------------------- 1 | # 2 | # Copyright (c) 2018 Bosch Software Innovations GmbH and others 3 | # 4 | # This program and the accompanying materials are made 5 | # available under the terms of the Eclipse Public License 2.0 6 | # which is available at https://www.eclipse.org/legal/epl-2.0/ 7 | # 8 | # SPDX-License-Identifier: EPL-2.0 9 | # 10 | version: '3.7' 11 | 12 | include: 13 | - docker-compose-micro-services-dbinit-postgres.yml 14 | 15 | services: 16 | 17 | # --------------------- 18 | # HawkBit Simple UI 19 | # --------------------- 20 | hawkbit-simple-ui: 21 | image: "hawkbit/hawkbit-simple-ui:latest" 22 | environment: 23 | - 'SPRING_APPLICATION_JSON={"hawkbit.server.mgmtUrl": "http://hawkbit-mgmt:8080"}' 24 | restart: always 25 | ports: 26 | - 8088:8088 27 | labels: 28 | NAME: "hawkbit-simple-ui" 29 | 30 | volumes: 31 | artifactrepo: 32 | driver: local 33 | -------------------------------------------------------------------------------- /docker/postgres/docker-compose-micro-services-with-simple-ui-postgres.yml: -------------------------------------------------------------------------------- 1 | # 2 | # Copyright (c) 2018 Bosch Software Innovations GmbH and others 3 | # 4 | # This program and the accompanying materials are made 5 | # available under the terms of the Eclipse Public License 2.0 6 | # which is available at https://www.eclipse.org/legal/epl-2.0/ 7 | # 8 | # SPDX-License-Identifier: EPL-2.0 9 | # 10 | version: '3.7' 11 | 12 | include: 13 | - docker-compose-micro-services-postgres.yml 14 | 15 | services: 16 | 17 | # --------------------- 18 | # HawkBit Simple UI 19 | # --------------------- 20 | hawkbit-simple-ui: 21 | image: "hawkbit/hawkbit-simple-ui:latest" 22 | environment: 23 | - 'SPRING_APPLICATION_JSON={"hawkbit.server.mgmtUrl": "http://hawkbit-mgmt:8080"}' 24 | restart: always 25 | ports: 26 | - 8088:8088 27 | labels: 28 | NAME: "hawkbit-simple-ui" 29 | 30 | volumes: 31 | artifactrepo: 32 | driver: local 33 | -------------------------------------------------------------------------------- /docker/postgres/docker-compose-monolith-with-simple-ui-dbinit-postgres.yml: -------------------------------------------------------------------------------- 1 | # 2 | # Copyright (c) 2018 Bosch Software Innovations GmbH and others 3 | # 4 | # This program and the accompanying materials are made 5 | # available under the terms of the Eclipse Public License 2.0 6 | # which is available at https://www.eclipse.org/legal/epl-2.0/ 7 | # 8 | # SPDX-License-Identifier: EPL-2.0 9 | # 10 | version: '3' 11 | 12 | include: 13 | - docker-compose-monolith-postgres.yml 14 | 15 | services: 16 | 17 | # --------------------- 18 | # HawkBit Simple UI service 19 | # --------------------- 20 | hawkbit-simple-ui: 21 | image: "hawkbit/hawkbit-simple-ui:latest" 22 | environment: 23 | - 'SPRING_APPLICATION_JSON={"hawkbit.server.mgmtUrl": "http://hawkbit:8080"}' 24 | restart: always 25 | ports: 26 | - 8088:8088 27 | labels: 28 | NAME: "hawkbit-simple-ui" 29 | 30 | volumes: 31 | artifactrepo: 32 | driver: local 33 | -------------------------------------------------------------------------------- /docker/postgres/docker-compose-monolith-with-simple-ui-postgres.yml: -------------------------------------------------------------------------------- 1 | # 2 | # Copyright (c) 2018 Bosch Software Innovations GmbH and others 3 | # 4 | # This program and the accompanying materials are made 5 | # available under the terms of the Eclipse Public License 2.0 6 | # which is available at https://www.eclipse.org/legal/epl-2.0/ 7 | # 8 | # SPDX-License-Identifier: EPL-2.0 9 | # 10 | version: '3' 11 | 12 | include: 13 | - docker-compose-monolith-dbinit-postgres.yml 14 | 15 | services: 16 | 17 | # --------------------- 18 | # HawkBit Simple UI service 19 | # --------------------- 20 | hawkbit-simple-ui: 21 | image: "hawkbit/hawkbit-simple-ui:latest" 22 | environment: 23 | - 'SPRING_APPLICATION_JSON={"hawkbit.server.mgmtUrl": "http://hawkbit:8080"}' 24 | restart: always 25 | ports: 26 | - 8088:8088 27 | labels: 28 | NAME: "hawkbit-simple-ui" 29 | 30 | volumes: 31 | artifactrepo: 32 | driver: local 33 | -------------------------------------------------------------------------------- /hawkbit-artifact/hawkbit-artifact-api/README.md: -------------------------------------------------------------------------------- 1 | # hawkBit Artifact API 2 | 3 | Various internal interfaces artifact API classes. -------------------------------------------------------------------------------- /hawkbit-artifact/hawkbit-artifact-api/src/main/java/org/eclipse/hawkbit/artifact/repository/urlhandler/ApiType.java: -------------------------------------------------------------------------------- 1 | /** 2 | * Copyright (c) 2015 Bosch Software Innovations GmbH and others 3 | * 4 | * This program and the accompanying materials are made 5 | * available under the terms of the Eclipse Public License 2.0 6 | * which is available at https://www.eclipse.org/legal/epl-2.0/ 7 | * 8 | * SPDX-License-Identifier: EPL-2.0 9 | */ 10 | package org.eclipse.hawkbit.artifact.repository.urlhandler; 11 | 12 | /** 13 | * hawkBit API type. 14 | */ 15 | public enum ApiType { 16 | 17 | /** 18 | * Support for Device Management Federation API. 19 | */ 20 | DMF, 21 | 22 | /** 23 | * Support for Direct Device Integration API. 24 | */ 25 | DDI, 26 | 27 | /** 28 | * Support for Management API. 29 | */ 30 | MGMT 31 | } -------------------------------------------------------------------------------- /hawkbit-artifact/hawkbit-artifact-repository-filesystem/README.md: -------------------------------------------------------------------------------- 1 | # Eclipse.IoT hawkBit - Artifact Repository File System 2 | 3 | This module contains the implementation of the `ArtifactRepository` based on the file-system. 4 | It's a very convenient and easy implementation of storing the artifact binaries into the file-system based on the SHA-1 5 | hash naming. 6 | 7 | Due the limit of many file-systems of files within one directory, the files 8 | are stored in different sub-directories based on the last four digits of the 9 | SHA1-hash `/basepath/[two digit sha1]/[two digit sha1/sha1-hash-filename]`. 10 | 11 | # Compile 12 | 13 | #### Build hawkbit-artifact-repository-filesystem 14 | 15 | ``` 16 | $ cd hawkbit/hawkbit-artifact-repository-filesystem 17 | $ mvn clean install 18 | ``` 19 | -------------------------------------------------------------------------------- /hawkbit-artifact/hawkbit-artifact-repository-filesystem/src/main/java/org/eclipse/hawkbit/artifact/repository/ArtifactFileNotFoundException.java: -------------------------------------------------------------------------------- 1 | /** 2 | * Copyright (c) 2022 Bosch.IO GmbH and others 3 | * 4 | * This program and the accompanying materials are made 5 | * available under the terms of the Eclipse Public License 2.0 6 | * which is available at https://www.eclipse.org/legal/epl-2.0/ 7 | * 8 | * SPDX-License-Identifier: EPL-2.0 9 | */ 10 | package org.eclipse.hawkbit.artifact.repository; 11 | 12 | /** 13 | * Exception thrown in case that the artifact could not be read. 14 | */ 15 | public class ArtifactFileNotFoundException extends RuntimeException { 16 | 17 | /** 18 | * Creates the Exception from its cause 19 | * 20 | * @param cause the original exception 21 | */ 22 | public ArtifactFileNotFoundException(final Exception cause) { 23 | super(cause); 24 | } 25 | } -------------------------------------------------------------------------------- /hawkbit-artifact/hawkbit-artifact-repository-filesystem/src/main/java/org/eclipse/hawkbit/artifact/repository/ArtifactFilesystemProperties.java: -------------------------------------------------------------------------------- 1 | /** 2 | * Copyright (c) 2015 Bosch Software Innovations GmbH and others 3 | * 4 | * This program and the accompanying materials are made 5 | * available under the terms of the Eclipse Public License 2.0 6 | * which is available at https://www.eclipse.org/legal/epl-2.0/ 7 | * 8 | * SPDX-License-Identifier: EPL-2.0 9 | */ 10 | package org.eclipse.hawkbit.artifact.repository; 11 | 12 | import lombok.Data; 13 | import org.springframework.boot.context.properties.ConfigurationProperties; 14 | 15 | /** 16 | * Configuration properties for the file-system repository, e.g. the base-path to store the files. 17 | */ 18 | @Data 19 | @ConfigurationProperties("org.eclipse.hawkbit.repository.file") 20 | public class ArtifactFilesystemProperties { 21 | 22 | /** 23 | * The base-path of the directory to store the artifacts. 24 | */ 25 | private String path = "./artifactrepo"; 26 | } -------------------------------------------------------------------------------- /hawkbit-artifact/hawkbit-artifact-repository-filesystem/src/main/resources/META-INF/spring/org.springframework.boot.autoconfigure.AutoConfiguration.imports: -------------------------------------------------------------------------------- 1 | org.eclipse.hawkbit.autoconfigure.artifact.repository.filesystem.ArtifactFilesystemConfiguration -------------------------------------------------------------------------------- /hawkbit-artifact/pom.xml: -------------------------------------------------------------------------------- 1 | 12 | 14 | 4.0.0 15 | 16 | org.eclipse.hawkbit 17 | hawkbit-parent 18 | ${revision} 19 | 20 | 21 | hawkbit-artifact-parent 22 | hawkBit :: Artifact :: Parent 23 | pom 24 | 25 | 26 | hawkbit-artifact-api 27 | hawkbit-artifact-repository-filesystem 28 | 29 | -------------------------------------------------------------------------------- /hawkbit-autoconfigure/src/main/java/org/eclipse/hawkbit/autoconfigure/repository/event/EventPublisherAutoConfiguration.java: -------------------------------------------------------------------------------- 1 | /** 2 | * Copyright (c) 2015 Bosch Software Innovations GmbH and others 3 | * 4 | * This program and the accompanying materials are made 5 | * available under the terms of the Eclipse Public License 2.0 6 | * which is available at https://www.eclipse.org/legal/epl-2.0/ 7 | * 8 | * SPDX-License-Identifier: EPL-2.0 9 | */ 10 | package org.eclipse.hawkbit.autoconfigure.repository.event; 11 | 12 | 13 | import org.eclipse.hawkbit.event.EventPublisherConfiguration; 14 | import org.springframework.context.annotation.Configuration; 15 | import org.springframework.context.annotation.Import; 16 | 17 | /** 18 | * Autoconfiguration for the event bus. 19 | */ 20 | @Configuration 21 | @Import(EventPublisherConfiguration.class) 22 | public class EventPublisherAutoConfiguration {} -------------------------------------------------------------------------------- /hawkbit-autoconfigure/src/main/resources/META-INF/spring/org.springframework.boot.autoconfigure.AutoConfiguration.imports: -------------------------------------------------------------------------------- 1 | org.eclipse.hawkbit.autoconfigure.artifact.ArtifactUrlHandlerAutoConfiguration 2 | org.eclipse.hawkbit.autoconfigure.cache.CacheAutoConfiguration 3 | org.eclipse.hawkbit.autoconfigure.repository.event.EventPublisherAutoConfiguration 4 | org.eclipse.hawkbit.autoconfigure.repository.JpaRepositoryAutoConfiguration 5 | org.eclipse.hawkbit.autoconfigure.scheduling.AsyncConfigurerAutoConfiguration 6 | org.eclipse.hawkbit.autoconfigure.scheduling.ExecutorAutoConfiguration 7 | org.eclipse.hawkbit.autoconfigure.security.SecurityAutoConfiguration 8 | org.eclipse.hawkbit.autoconfigure.security.InMemoryUserManagementAutoConfiguration 9 | -------------------------------------------------------------------------------- /hawkbit-autoconfigure/src/main/resources/hawkbit-security-defaults.properties: -------------------------------------------------------------------------------- 1 | # 2 | # Copyright (c) 2015 Bosch Software Innovations GmbH and others 3 | # 4 | # This program and the accompanying materials are made 5 | # available under the terms of the Eclipse Public License 2.0 6 | # which is available at https://www.eclipse.org/legal/epl-2.0/ 7 | # 8 | # SPDX-License-Identifier: EPL-2.0 9 | # 10 | 11 | # DDI and download security 12 | hawkbit.server.ddi.security.authentication.header.enabled=false 13 | hawkbit.server.ddi.security.authentication.header.authority= 14 | hawkbit.server.ddi.security.authentication.targettoken.enabled=false 15 | hawkbit.server.ddi.security.authentication.gatewaytoken.enabled=false 16 | hawkbit.server.ddi.security.authentication.gatewaytoken.key= 17 | hawkbit.server.download.anonymous.enabled=false -------------------------------------------------------------------------------- /hawkbit-core/README.md: -------------------------------------------------------------------------------- 1 | # hawkBit Core 2 | 3 | Various internal interfaces and utility classes. -------------------------------------------------------------------------------- /hawkbit-core/src/main/java/org/eclipse/hawkbit/exception/GenericSpServerException.java: -------------------------------------------------------------------------------- 1 | /** 2 | * Copyright (c) 2015 Bosch Software Innovations GmbH and others 3 | * 4 | * This program and the accompanying materials are made 5 | * available under the terms of the Eclipse Public License 2.0 6 | * which is available at https://www.eclipse.org/legal/epl-2.0/ 7 | * 8 | * SPDX-License-Identifier: EPL-2.0 9 | */ 10 | package org.eclipse.hawkbit.exception; 11 | 12 | import java.io.Serial; 13 | 14 | /** 15 | * {@link GenericSpServerException} is thrown when a given entity in's actual and cannot be stored within the current session. Reason could be 16 | * that it has been changed within another session. 17 | */ 18 | public class GenericSpServerException extends AbstractServerRtException { 19 | 20 | @Serial 21 | private static final long serialVersionUID = 1L; 22 | 23 | private static final SpServerError THIS_ERROR = SpServerError.SP_REPO_GENERIC_ERROR; 24 | 25 | public GenericSpServerException(final Throwable cause) { 26 | super(THIS_ERROR, cause); 27 | } 28 | } -------------------------------------------------------------------------------- /hawkbit-core/src/main/java/org/eclipse/hawkbit/repository/ActionStatusFields.java: -------------------------------------------------------------------------------- 1 | /** 2 | * Copyright (c) 2015 Bosch Software Innovations GmbH and others 3 | * 4 | * This program and the accompanying materials are made 5 | * available under the terms of the Eclipse Public License 2.0 6 | * which is available at https://www.eclipse.org/legal/epl-2.0/ 7 | * 8 | * SPDX-License-Identifier: EPL-2.0 9 | */ 10 | package org.eclipse.hawkbit.repository; 11 | 12 | import lombok.Getter; 13 | 14 | /** 15 | * Sort and search fields for action status. 16 | */ 17 | @Getter 18 | public enum ActionStatusFields implements RsqlQueryField { 19 | 20 | ID("id"), 21 | REPORTEDAT("createdAt"); 22 | 23 | private final String jpaEntityFieldName; 24 | 25 | ActionStatusFields(final String jpaEntityFieldName) { 26 | this.jpaEntityFieldName = jpaEntityFieldName; 27 | } 28 | } -------------------------------------------------------------------------------- /hawkbit-core/src/main/java/org/eclipse/hawkbit/repository/DistributionSetTypeFields.java: -------------------------------------------------------------------------------- 1 | /** 2 | * Copyright (c) 2015 Bosch Software Innovations GmbH and others 3 | * 4 | * This program and the accompanying materials are made 5 | * available under the terms of the Eclipse Public License 2.0 6 | * which is available at https://www.eclipse.org/legal/epl-2.0/ 7 | * 8 | * SPDX-License-Identifier: EPL-2.0 9 | */ 10 | package org.eclipse.hawkbit.repository; 11 | 12 | import lombok.Getter; 13 | 14 | /** 15 | * Describing the fields of the DistributionSetType model which can be used in 16 | * the REST API e.g. for sorting etc. 17 | */ 18 | @Getter 19 | public enum DistributionSetTypeFields implements RsqlQueryField { 20 | 21 | ID("id"), 22 | KEY("key"), 23 | NAME("name"), 24 | DESCRIPTION("description"); 25 | 26 | private final String jpaEntityFieldName; 27 | 28 | DistributionSetTypeFields(final String jpaEntityFieldName) { 29 | this.jpaEntityFieldName = jpaEntityFieldName; 30 | } 31 | } 32 | -------------------------------------------------------------------------------- /hawkbit-core/src/main/java/org/eclipse/hawkbit/repository/RolloutGroupFields.java: -------------------------------------------------------------------------------- 1 | /** 2 | * Copyright (c) 2015 Bosch Software Innovations GmbH and others 3 | * 4 | * This program and the accompanying materials are made 5 | * available under the terms of the Eclipse Public License 2.0 6 | * which is available at https://www.eclipse.org/legal/epl-2.0/ 7 | * 8 | * SPDX-License-Identifier: EPL-2.0 9 | */ 10 | package org.eclipse.hawkbit.repository; 11 | 12 | import lombok.Getter; 13 | 14 | /** 15 | * Describing the fields of the RolloutGroup model which can be used in the REST API e.g. for sorting etc. 16 | */ 17 | @Getter 18 | public enum RolloutGroupFields implements RsqlQueryField { 19 | 20 | ID("id"), 21 | NAME("name"), 22 | DESCRIPTION("description"); 23 | 24 | private final String jpaEntityFieldName; 25 | 26 | RolloutGroupFields(final String jpaEntityFieldName) { 27 | this.jpaEntityFieldName = jpaEntityFieldName; 28 | } 29 | } -------------------------------------------------------------------------------- /hawkbit-core/src/main/java/org/eclipse/hawkbit/repository/SoftwareModuleTypeFields.java: -------------------------------------------------------------------------------- 1 | /** 2 | * Copyright (c) 2015 Bosch Software Innovations GmbH and others 3 | * 4 | * This program and the accompanying materials are made 5 | * available under the terms of the Eclipse Public License 2.0 6 | * which is available at https://www.eclipse.org/legal/epl-2.0/ 7 | * 8 | * SPDX-License-Identifier: EPL-2.0 9 | */ 10 | package org.eclipse.hawkbit.repository; 11 | 12 | import lombok.Getter; 13 | 14 | /** 15 | * Describing the fields of the SoftwareModuleType model which can be used in the REST API e.g. for sorting etc. 16 | */ 17 | @Getter 18 | public enum SoftwareModuleTypeFields implements RsqlQueryField { 19 | 20 | ID("id"), 21 | KEY("key"), 22 | NAME("name"), 23 | DESCRIPTION("description"), 24 | MAXASSIGNMENTS("maxAssignments"); 25 | 26 | private final String jpaEntityFieldName; 27 | 28 | SoftwareModuleTypeFields(final String jpaEntityFieldName) { 29 | this.jpaEntityFieldName = jpaEntityFieldName; 30 | } 31 | } 32 | -------------------------------------------------------------------------------- /hawkbit-core/src/main/java/org/eclipse/hawkbit/repository/TagFields.java: -------------------------------------------------------------------------------- 1 | /** 2 | * Copyright (c) 2015 Bosch Software Innovations GmbH and others 3 | * 4 | * This program and the accompanying materials are made 5 | * available under the terms of the Eclipse Public License 2.0 6 | * which is available at https://www.eclipse.org/legal/epl-2.0/ 7 | * 8 | * SPDX-License-Identifier: EPL-2.0 9 | */ 10 | package org.eclipse.hawkbit.repository; 11 | 12 | import lombok.Getter; 13 | 14 | /** 15 | * Describing the fields of the Tag model which can be used in the REST API e.g. for sorting etc. 16 | */ 17 | @Getter 18 | public enum TagFields implements RsqlQueryField { 19 | 20 | ID("id"), 21 | NAME("name"), 22 | DESCRIPTION("description"), 23 | COLOUR("colour"); 24 | 25 | private final String jpaEntityFieldName; 26 | 27 | TagFields(final String jpaEntityFieldName) { 28 | this.jpaEntityFieldName = jpaEntityFieldName; 29 | } 30 | } -------------------------------------------------------------------------------- /hawkbit-core/src/main/java/org/eclipse/hawkbit/repository/TargetTypeFields.java: -------------------------------------------------------------------------------- 1 | /** 2 | * Copyright (c) 2021 Bosch.IO GmbH and others 3 | * 4 | * This program and the accompanying materials are made 5 | * available under the terms of the Eclipse Public License 2.0 6 | * which is available at https://www.eclipse.org/legal/epl-2.0/ 7 | * 8 | * SPDX-License-Identifier: EPL-2.0 9 | */ 10 | package org.eclipse.hawkbit.repository; 11 | 12 | import lombok.Getter; 13 | 14 | /** 15 | * Describing the fields of the TargetType model which can be used in the REST API 16 | */ 17 | @Getter 18 | public enum TargetTypeFields implements RsqlQueryField { 19 | 20 | ID("id"), 21 | KEY("key"), 22 | NAME("name"), 23 | DESCRIPTION("description"); 24 | 25 | private final String jpaEntityFieldName; 26 | 27 | TargetTypeFields(final String jpaEntityFieldName) { 28 | this.jpaEntityFieldName = jpaEntityFieldName; 29 | } 30 | } -------------------------------------------------------------------------------- /hawkbit-core/src/main/java/org/eclipse/hawkbit/tenancy/UserAuthoritiesResolver.java: -------------------------------------------------------------------------------- 1 | /** 2 | * Copyright (c) 2020 Bosch.IO GmbH and others 3 | * 4 | * This program and the accompanying materials are made 5 | * available under the terms of the Eclipse Public License 2.0 6 | * which is available at https://www.eclipse.org/legal/epl-2.0/ 7 | * 8 | * SPDX-License-Identifier: EPL-2.0 9 | */ 10 | package org.eclipse.hawkbit.tenancy; 11 | 12 | import java.util.Collection; 13 | 14 | /** 15 | * The service responsible for making the lookup for user authorities/roles based on his tenant and username 16 | */ 17 | @FunctionalInterface 18 | public interface UserAuthoritiesResolver { 19 | 20 | /** 21 | * User authorities/roles lookup based on the tenant and the username 22 | * 23 | * @param tenant The tenant that this user belongs to 24 | * @param username The username of the user 25 | * @return a {@link Collection} of authorities/roles for this user 26 | */ 27 | Collection getUserAuthorities(String tenant, String username); 28 | } -------------------------------------------------------------------------------- /hawkbit-core/src/main/resources/META-INF/spring/org.springframework.boot.autoconfigure.AutoConfiguration.imports: -------------------------------------------------------------------------------- 1 | org.eclipse.hawkbit.tenancy.TenantMetricsConfiguration.WebConfig 2 | org.eclipse.hawkbit.tenancy.TenantMetricsConfiguration.RepositoryConfig 3 | -------------------------------------------------------------------------------- /hawkbit-ddi/hawkbit-ddi-api/README.md: -------------------------------------------------------------------------------- 1 | # Eclipse.IoT hawkBit - Direct Device Integration API - Model and Resources 2 | 3 | The Direct Device Integration (DDI) API is used by devices for communicating with the HawkBit Update Server through 4 | HTTP. 5 | 6 | # Version 1 7 | 8 | The model follows [semantic versioning](http://semver.org) with MAJOR version, i.e. breaking changes will result in a 9 | new MAJOR version. 10 | 11 | # Compile 12 | 13 | #### Build hawkbit-ddi-api 14 | 15 | ``` 16 | $ cd hawkbit/hawkbit-ddi-api 17 | $ mvn clean install 18 | ``` 19 | -------------------------------------------------------------------------------- /hawkbit-ddi/hawkbit-ddi-resource/README.md: -------------------------------------------------------------------------------- 1 | # Eclipse.IoT hawkBit - DDI Resource 2 | 3 | This is the server-side implementation of the hawkBit DDI API and the hawkBit DDI Download API that is used by devices 4 | for communicating with the HawkBit Update Server through HTTP. 5 | 6 | # Compile 7 | 8 | #### Build hawkbit-ddi-resource 9 | 10 | ``` 11 | $ cd hawkbit/hawkbit-ddi-resource 12 | $ mvn clean install 13 | ``` 14 | 15 | -------------------------------------------------------------------------------- /hawkbit-ddi/hawkbit-ddi-resource/src/test/java/org/eclipse/hawkbit/ddi/rest/resource/RequestOnHawkbitDefaultPortPostProcessor.java: -------------------------------------------------------------------------------- 1 | /** 2 | * Copyright (c) 2024 Contributors to the Eclipse Foundation 3 | * 4 | * This program and the accompanying materials are made 5 | * available under the terms of the Eclipse Public License 2.0 6 | * which is available at https://www.eclipse.org/legal/epl-2.0/ 7 | * 8 | * SPDX-License-Identifier: EPL-2.0 9 | */ 10 | package org.eclipse.hawkbit.ddi.rest.resource; 11 | 12 | import static org.eclipse.hawkbit.ddi.rest.resource.AbstractDDiApiIntegrationTest.HTTP_PORT; 13 | 14 | import org.springframework.mock.web.MockHttpServletRequest; 15 | import org.springframework.test.web.servlet.request.RequestPostProcessor; 16 | 17 | public class RequestOnHawkbitDefaultPortPostProcessor implements RequestPostProcessor { 18 | 19 | @Override 20 | public MockHttpServletRequest postProcessRequest(MockHttpServletRequest request) { 21 | request.setRemotePort(HTTP_PORT); 22 | request.setServerPort(HTTP_PORT); 23 | return request; 24 | } 25 | } 26 | -------------------------------------------------------------------------------- /hawkbit-ddi/hawkbit-ddi-resource/src/test/resources/ddi-test.properties: -------------------------------------------------------------------------------- 1 | # 2 | # Copyright (c) 2015 Bosch Software Innovations GmbH and others 3 | # 4 | # This program and the accompanying materials are made 5 | # available under the terms of the Eclipse Public License 2.0 6 | # which is available at https://www.eclipse.org/legal/epl-2.0/ 7 | # 8 | # SPDX-License-Identifier: EPL-2.0 9 | # 10 | 11 | # DDI configuration - START 12 | hawkbit.controller.pollingTime=00:01:00 13 | hawkbit.controller.pollingOverdueTime=00:01:00 14 | hawkbit.controller.minPollingTime=00:00:30 15 | hawkbit.controller.maintenanceWindowPollCount=3 16 | # DDI configuration - END 17 | # Upload configuration - START 18 | spring.servlet.multipart.max-file-size=5MB 19 | # Upload configuration - END 20 | # Quota - START 21 | hawkbit.server.security.dos.maxStatusEntriesPerAction=100 22 | hawkbit.server.security.dos.maxAttributeEntriesPerTarget=10 23 | # Quota - END 24 | # Logging START - activate to see request/response details 25 | #logging.level.org.eclipse.hawkbit.rest.util.MockMvcResultPrinter=DEBUG 26 | # Logging END 27 | -------------------------------------------------------------------------------- /hawkbit-ddi/hawkbit-ddi-server/src/main/resources/application-mysql.properties: -------------------------------------------------------------------------------- 1 | # 2 | # Copyright (c) 2015 Bosch Software Innovations GmbH and others 3 | # 4 | # This program and the accompanying materials are made 5 | # available under the terms of the Eclipse Public License 2.0 6 | # which is available at https://www.eclipse.org/legal/epl-2.0/ 7 | # 8 | # SPDX-License-Identifier: EPL-2.0 9 | # 10 | 11 | # This profile adds basic configurations for a MySQL DB usage. 12 | # Keep in mind that you need the MariaDB driver in your classpath on compile. 13 | # see https://www.eclipse.org/hawkbit/guides/runhawkbit/ 14 | 15 | spring.jpa.database=MYSQL 16 | spring.datasource.url=jdbc:mariadb://localhost:3306/hawkbit 17 | spring.datasource.username=root 18 | spring.datasource.password= 19 | spring.datasource.driverClassName=org.mariadb.jdbc.Driver 20 | -------------------------------------------------------------------------------- /hawkbit-ddi/hawkbit-ddi-server/src/main/resources/application-postgresql.properties: -------------------------------------------------------------------------------- 1 | # 2 | # Copyright (c) 2020 Enapter Co.,Ltd 3 | # 4 | # This program and the accompanying materials are made 5 | # available under the terms of the Eclipse Public License 2.0 6 | # which is available at https://www.eclipse.org/legal/epl-2.0/ 7 | # 8 | # SPDX-License-Identifier: EPL-2.0 9 | # 10 | 11 | # This profile adds basic configurations for a PostgreSQL usage. 12 | # Keep in mind that you need the PostgreSQL driver in your classpath on compile. 13 | # see https://www.eclipse.org/hawkbit/guides/runhawkbit/ 14 | 15 | spring.jpa.database=POSTGRESQL 16 | spring.datasource.url=jdbc:postgresql://localhost:5432/hawkbit 17 | spring.datasource.username=postgres 18 | spring.datasource.password=admin 19 | spring.datasource.driverClassName=org.postgresql.Driver 20 | -------------------------------------------------------------------------------- /hawkbit-ddi/hawkbit-ddi-server/src/main/resources/banner.txt: -------------------------------------------------------------------------------- 1 | ______ _ _ _ _ ____ _ _ _____ _____ _____ 2 | | ____| | (_) | | | | | _ \(_) | | __ \| __ \_ _| 3 | | |__ ___| |_ _ __ ___ ___ | |__ __ ___ _| | _| |_) |_| |_ | | | | | | || | 4 | | __| / __| | | '_ \/ __|/ _ \ | '_ \ / _` \ \ /\ / / |/ / _ <| | __| | | | | | | || | 5 | | |___| (__| | | |_) \__ \ __/ | | | | (_| |\ V V /| <| |_) | | |_ | |__| | |__| || |_ 6 | |______\___|_|_| .__/|___/\___| |_| |_|\__,_| \_/\_/ |_|\_\____/|_|\__| |_____/|_____/_____| 7 | | | 8 | |_| 9 | 10 | Eclipse hawkBit DDI Server ${application.formatted-version} 11 | using Spring Boot ${spring-boot.formatted-version} 12 | 13 | Go to https://www.eclipse.org/hawkbit for more information. 14 | -------------------------------------------------------------------------------- /hawkbit-ddi/hawkbit-ddi-server/src/main/resources/public/robots.txt: -------------------------------------------------------------------------------- 1 | User-agent: * 2 | Disallow: / -------------------------------------------------------------------------------- /hawkbit-ddi/hawkbit-ddi-starter/README.md: -------------------------------------------------------------------------------- 1 | [Spring Boot Starter](http://docs.spring.io/spring-boot/docs/current/reference/htmlsingle/#using-boot-starter) for 2 | the [Direct Device Integration API](https://www.eclipse.org/hawkbit/documentation/interfaces/ddi-api.html). -------------------------------------------------------------------------------- /hawkbit-ddi/hawkbit-ddi-starter/src/main/resources/META-INF/spring/org.springframework.boot.autoconfigure.AutoConfiguration.imports: -------------------------------------------------------------------------------- 1 | org.eclipse.hawkbit.autoconfigure.ddi.DdiApiAutoConfiguration 2 | org.eclipse.hawkbit.rest.SecurityManagedConfiguration 3 | org.eclipse.hawkbit.autoconfigure.ddi.ControllerSecurityConfiguration 4 | org.eclipse.hawkbit.autoconfigure.ddi.ControllerDownloadSecurityConfiguration 5 | -------------------------------------------------------------------------------- /hawkbit-dmf/README.md: -------------------------------------------------------------------------------- 1 | # hawkBit device management federation API - implementation 2 | 3 | This is the AMQP implementation for the device management federation API. The implementation uses the spring-amqp 4 | project. 5 | 6 | # Integration Test 7 | 8 | This modules contains some integration tests for the device management federation API implementation which uses a 9 | RabbitMQ. If there is no RabbitMQ running on the system, all tests will be marked as skipped. You can disable this rule 10 | and the tests will fail if there is no RabbitMQ running. n order to disable the rule at runtime, set an environment 11 | variable RABBITMQ_SERVER_REQUIRED=true. 12 | The default RabbitMQ hostname is localhost. To set another hostname, set the property spring.rabbitmq.host to the new 13 | hostname. 14 | The default RabbitMQ username is guest. To set another username, set the property spring.rabbitmq.username to the new 15 | username. 16 | The default RabbitMQ password is guest. To set another password, set the property spring.rabbitmq.password to the new 17 | password. -------------------------------------------------------------------------------- /hawkbit-dmf/hawkbit-dmf-amqp/.gitignore: -------------------------------------------------------------------------------- 1 | /artifactrepo/ 2 | -------------------------------------------------------------------------------- /hawkbit-dmf/hawkbit-dmf-amqp/src/main/java/org/eclipse/hawkbit/amqp/AmqpMessageSenderService.java: -------------------------------------------------------------------------------- 1 | /** 2 | * Copyright (c) 2015 Bosch Software Innovations GmbH and others 3 | * 4 | * This program and the accompanying materials are made 5 | * available under the terms of the Eclipse Public License 2.0 6 | * which is available at https://www.eclipse.org/legal/epl-2.0/ 7 | * 8 | * SPDX-License-Identifier: EPL-2.0 9 | */ 10 | package org.eclipse.hawkbit.amqp; 11 | 12 | import java.net.URI; 13 | 14 | import jakarta.validation.constraints.NotNull; 15 | 16 | import org.springframework.amqp.core.Message; 17 | 18 | /** 19 | * Interface to send a amqp message. 20 | */ 21 | @FunctionalInterface 22 | public interface AmqpMessageSenderService { 23 | 24 | /** 25 | * Send the given message to the given uri. The uri contains the (virtual) 26 | * host and exchange e.g. amqp://host/exchange. 27 | * 28 | * @param message the amqp message 29 | * @param replyTo the reply to uri 30 | */ 31 | void sendMessage(@NotNull final Message message, @NotNull final URI replyTo); 32 | } -------------------------------------------------------------------------------- /hawkbit-dmf/hawkbit-dmf-amqp/src/main/java/org/eclipse/hawkbit/amqp/DmfApiConfiguration.java: -------------------------------------------------------------------------------- 1 | /** 2 | * Copyright (c) 2015 Bosch Software Innovations GmbH and others 3 | * 4 | * This program and the accompanying materials are made 5 | * available under the terms of the Eclipse Public License 2.0 6 | * which is available at https://www.eclipse.org/legal/epl-2.0/ 7 | * 8 | * SPDX-License-Identifier: EPL-2.0 9 | */ 10 | package org.eclipse.hawkbit.amqp; 11 | 12 | import org.springframework.context.annotation.ComponentScan; 13 | import org.springframework.context.annotation.Configuration; 14 | import org.springframework.context.annotation.Import; 15 | 16 | /** 17 | * Enable Device Management Federation API. 18 | */ 19 | @Configuration 20 | @ComponentScan 21 | @Import(AmqpConfiguration.class) 22 | public class DmfApiConfiguration {} -------------------------------------------------------------------------------- /hawkbit-dmf/hawkbit-dmf-amqp/src/main/resources/hawkbit-dmf-defaults.properties: -------------------------------------------------------------------------------- 1 | # 2 | # Copyright (c) 2015 Bosch Software Innovations GmbH and others 3 | # 4 | # This program and the accompanying materials are made 5 | # available under the terms of the Eclipse Public License 2.0 6 | # which is available at https://www.eclipse.org/legal/epl-2.0/ 7 | # 8 | # SPDX-License-Identifier: EPL-2.0 9 | # 10 | 11 | ## DMF RabbitMQ configuration - START 12 | spring.rabbitmq.listener.simple.prefetch=250 13 | spring.rabbitmq.listener.simple.concurrency=1 14 | spring.rabbitmq.listener.simple.max-concurrency=10 15 | spring.rabbitmq.requested-heartbeat=60 16 | 17 | hawkbit.dmf.rabbitmq.declaration-retries=10000 18 | ##DMF RabbitMQ configuration - END 19 | 20 | 21 | -------------------------------------------------------------------------------- /hawkbit-dmf/hawkbit-dmf-amqp/src/test/java/org/eclipse/hawkbit/integration/listener/DeadletterListener.java: -------------------------------------------------------------------------------- 1 | /** 2 | * Copyright (c) 2015 Bosch Software Innovations GmbH and others 3 | * 4 | * This program and the accompanying materials are made 5 | * available under the terms of the Eclipse Public License 2.0 6 | * which is available at https://www.eclipse.org/legal/epl-2.0/ 7 | * 8 | * SPDX-License-Identifier: EPL-2.0 9 | */ 10 | package org.eclipse.hawkbit.integration.listener; 11 | 12 | import org.eclipse.hawkbit.rabbitmq.test.listener.TestRabbitListener; 13 | import org.springframework.amqp.core.Message; 14 | import org.springframework.amqp.rabbit.annotation.RabbitListener; 15 | 16 | public class DeadletterListener implements TestRabbitListener { 17 | 18 | public static final String LISTENER_ID = "deadletter"; 19 | 20 | @Override 21 | @RabbitListener(id = "deadletter", queues = "dmf_connector_deadletter_ttl") 22 | public void handleMessage(Message message) { 23 | // currently the message is not needed 24 | } 25 | } -------------------------------------------------------------------------------- /hawkbit-dmf/hawkbit-dmf-api/README.md: -------------------------------------------------------------------------------- 1 | # hawkBit device management federation API - model definition 2 | 3 | This API is used for communicating with the hawkBit Update Server through AMQP. 4 | It is used to integrate other device management system through a high throughput protocol optimized for service to 5 | service communication. 6 | 7 | # Version 1 8 | 9 | The model follows [semantic versioning](http://semver.org) with MAJOR version, i.e. breaking changes will result in a 10 | new MAJOR version. -------------------------------------------------------------------------------- /hawkbit-dmf/hawkbit-dmf-api/src/main/java/org/eclipse/hawkbit/dmf/amqp/api/AmqpSettings.java: -------------------------------------------------------------------------------- 1 | /** 2 | * Copyright (c) 2015 Bosch Software Innovations GmbH and others 3 | * 4 | * This program and the accompanying materials are made 5 | * available under the terms of the Eclipse Public License 2.0 6 | * which is available at https://www.eclipse.org/legal/epl-2.0/ 7 | * 8 | * SPDX-License-Identifier: EPL-2.0 9 | */ 10 | package org.eclipse.hawkbit.dmf.amqp.api; 11 | 12 | import lombok.AccessLevel; 13 | import lombok.NoArgsConstructor; 14 | 15 | /** 16 | * Global constants for RabbitMQ settings. 17 | */ 18 | @NoArgsConstructor(access = AccessLevel.PRIVATE) 19 | public final class AmqpSettings { 20 | 21 | public static final String DMF_EXCHANGE = "dmf.exchange"; 22 | } -------------------------------------------------------------------------------- /hawkbit-dmf/hawkbit-dmf-api/src/main/java/org/eclipse/hawkbit/dmf/amqp/api/MessageType.java: -------------------------------------------------------------------------------- 1 | /** 2 | * Copyright (c) 2015 Bosch Software Innovations GmbH and others 3 | * 4 | * This program and the accompanying materials are made 5 | * available under the terms of the Eclipse Public License 2.0 6 | * which is available at https://www.eclipse.org/legal/epl-2.0/ 7 | * 8 | * SPDX-License-Identifier: EPL-2.0 9 | */ 10 | package org.eclipse.hawkbit.dmf.amqp.api; 11 | 12 | /** 13 | * The amqp message types which can be handled. 14 | */ 15 | public enum MessageType { 16 | 17 | /** 18 | * The event type related to interaction with a thing. 19 | */ 20 | EVENT, 21 | /** 22 | * The thing created type. 23 | */ 24 | THING_CREATED, 25 | /** 26 | * The thing deleted type. 27 | */ 28 | THING_DELETED, 29 | /** 30 | * The request to delete a target. 31 | */ 32 | THING_REMOVED, 33 | /** 34 | * DMF receiver health check type. 35 | */ 36 | PING, 37 | /** 38 | * DMF receiver health check response type. 39 | */ 40 | PING_RESPONSE 41 | } -------------------------------------------------------------------------------- /hawkbit-dmf/hawkbit-dmf-api/src/main/java/org/eclipse/hawkbit/dmf/json/model/DmfUpdateMode.java: -------------------------------------------------------------------------------- 1 | /** 2 | * Copyright (c) 2018 Bosch Software Innovations GmbH and others 3 | * 4 | * This program and the accompanying materials are made 5 | * available under the terms of the Eclipse Public License 2.0 6 | * which is available at https://www.eclipse.org/legal/epl-2.0/ 7 | * 8 | * SPDX-License-Identifier: EPL-2.0 9 | */ 10 | package org.eclipse.hawkbit.dmf.json.model; 11 | 12 | /** 13 | * Enumerates the supported update modes. Each mode represents an attribute 14 | * update strategy. 15 | * 16 | * @see DmfAttributeUpdate 17 | */ 18 | public enum DmfUpdateMode { 19 | 20 | /** 21 | * Merge update strategy 22 | */ 23 | MERGE, 24 | /** 25 | * Replacement update strategy 26 | */ 27 | REPLACE, 28 | /** 29 | * Removal update strategy 30 | */ 31 | REMOVE 32 | } -------------------------------------------------------------------------------- /hawkbit-dmf/hawkbit-dmf-rabbitmq-test/src/main/java/org/eclipse/hawkbit/rabbitmq/test/listener/TestRabbitListener.java: -------------------------------------------------------------------------------- 1 | /** 2 | * Copyright (c) 2015 Bosch Software Innovations GmbH and others 3 | * 4 | * This program and the accompanying materials are made 5 | * available under the terms of the Eclipse Public License 2.0 6 | * which is available at https://www.eclipse.org/legal/epl-2.0/ 7 | * 8 | * SPDX-License-Identifier: EPL-2.0 9 | */ 10 | package org.eclipse.hawkbit.rabbitmq.test.listener; 11 | 12 | import org.springframework.amqp.core.Message; 13 | 14 | @FunctionalInterface 15 | public interface TestRabbitListener { 16 | 17 | /** 18 | * handle incoming message 19 | * 20 | * @param message the message 21 | */ 22 | void handleMessage(Message message); 23 | } -------------------------------------------------------------------------------- /hawkbit-dmf/hawkbit-dmf-server/src/main/resources/application-mysql.properties: -------------------------------------------------------------------------------- 1 | # 2 | # Copyright (c) 2015 Bosch Software Innovations GmbH and others 3 | # 4 | # This program and the accompanying materials are made 5 | # available under the terms of the Eclipse Public License 2.0 6 | # which is available at https://www.eclipse.org/legal/epl-2.0/ 7 | # 8 | # SPDX-License-Identifier: EPL-2.0 9 | # 10 | 11 | # This profile adds basic configurations for a MySQL DB usage. 12 | # Keep in mind that you need the MariaDB driver in your classpath on compile. 13 | # see https://www.eclipse.org/hawkbit/guides/runhawkbit/ 14 | 15 | spring.jpa.database=MYSQL 16 | spring.datasource.url=jdbc:mariadb://localhost:3306/hawkbit 17 | spring.datasource.username=root 18 | spring.datasource.password= 19 | spring.datasource.driverClassName=org.mariadb.jdbc.Driver 20 | -------------------------------------------------------------------------------- /hawkbit-dmf/hawkbit-dmf-server/src/main/resources/application-postgresql.properties: -------------------------------------------------------------------------------- 1 | # 2 | # Copyright (c) 2020 Enapter Co.,Ltd 3 | # 4 | # This program and the accompanying materials are made 5 | # available under the terms of the Eclipse Public License 2.0 6 | # which is available at https://www.eclipse.org/legal/epl-2.0/ 7 | # 8 | # SPDX-License-Identifier: EPL-2.0 9 | # 10 | 11 | # This profile adds basic configurations for a PostgreSQL usage. 12 | # Keep in mind that you need the PostgreSQL driver in your classpath on compile. 13 | # see https://www.eclipse.org/hawkbit/guides/runhawkbit/ 14 | 15 | spring.jpa.database=POSTGRESQL 16 | spring.datasource.url=jdbc:postgresql://localhost:5432/hawkbit 17 | spring.datasource.username=postgres 18 | spring.datasource.password=admin 19 | spring.datasource.driverClassName=org.postgresql.Driver 20 | -------------------------------------------------------------------------------- /hawkbit-dmf/hawkbit-dmf-server/src/main/resources/banner.txt: -------------------------------------------------------------------------------- 1 | ______ _ _ _ _ ____ _ _ _____ __ __ ______ 2 | | ____| | (_) | | | | | _ \(_) | | __ \| \/ | ____| 3 | | |__ ___| |_ _ __ ___ ___ | |__ __ ___ _| | _| |_) |_| |_ | | | | \ / | |__ 4 | | __| / __| | | '_ \/ __|/ _ \ | '_ \ / _` \ \ /\ / / |/ / _ <| | __| | | | | |\/| | __| 5 | | |___| (__| | | |_) \__ \ __/ | | | | (_| |\ V V /| <| |_) | | |_ | |__| | | | | | 6 | |______\___|_|_| .__/|___/\___| |_| |_|\__,_| \_/\_/ |_|\_\____/|_|\__| |_____/|_| |_|_| 7 | | | 8 | |_| 9 | 10 | Eclipse hawkBit DMF Server ${application.formatted-version} 11 | using Spring Boot ${spring-boot.formatted-version} 12 | 13 | Go to https://www.eclipse.org/hawkbit for more information. 14 | -------------------------------------------------------------------------------- /hawkbit-dmf/hawkbit-dmf-server/src/main/resources/public/robots.txt: -------------------------------------------------------------------------------- 1 | User-agent: * 2 | Disallow: / -------------------------------------------------------------------------------- /hawkbit-dmf/hawkbit-dmf-starter/README.md: -------------------------------------------------------------------------------- 1 | [Spring Boot Starter](http://docs.spring.io/spring-boot/docs/current/reference/htmlsingle/#using-boot-starter) for 2 | the [Device Management Federation API (AMQP 0.9)](https://www.eclipse.org/hawkbit/documentation/interfaces/dmf-api.html). -------------------------------------------------------------------------------- /hawkbit-dmf/hawkbit-dmf-starter/src/main/resources/META-INF/spring/org.springframework.boot.autoconfigure.AutoConfiguration.imports: -------------------------------------------------------------------------------- 1 | org.eclipse.hawkbit.autoconfigure.dmf.amqp.DmfApiAutoConfiguration 2 | -------------------------------------------------------------------------------- /hawkbit-mgmt/hawkbit-mgmt-api/README.md: -------------------------------------------------------------------------------- 1 | # Eclipse.IoT hawkBit - Management API - Model and Resources 2 | 3 | This Management (Mgmt) API is used to manage and monitor the HawkBit Update Server via HTTP. This API allows 4 | Create/Read/Update/Delete operations for provisioning targets (i.e. devices) and repository content (i.e. software). 5 | 6 | # Version 1 7 | 8 | The model follows [semantic versioning](http://semver.org) with MAJOR version, i.e. breaking changes will result in a 9 | new MAJOR version. 10 | 11 | # Compile 12 | 13 | #### Build hawkbit-mgmt-api 14 | 15 | ``` 16 | $ cd hawkbit/hawkbit-mgmt-api 17 | $ mvn clean install 18 | ``` 19 | 20 | -------------------------------------------------------------------------------- /hawkbit-mgmt/hawkbit-mgmt-api/src/main/java/org/eclipse/hawkbit/mgmt/json/model/action/MgmtActionRequestBodyPut.java: -------------------------------------------------------------------------------- 1 | /** 2 | * Copyright (c) 2015 Bosch Software Innovations GmbH and others 3 | * 4 | * This program and the accompanying materials are made 5 | * available under the terms of the Eclipse Public License 2.0 6 | * which is available at https://www.eclipse.org/legal/epl-2.0/ 7 | * 8 | * SPDX-License-Identifier: EPL-2.0 9 | */ 10 | package org.eclipse.hawkbit.mgmt.json.model.action; 11 | 12 | import lombok.Data; 13 | import lombok.ToString; 14 | import lombok.experimental.Accessors; 15 | import org.eclipse.hawkbit.mgmt.json.model.distributionset.MgmtActionType; 16 | 17 | /** 18 | * A json annotated model for Action updates in RESTful API representation. 19 | */ 20 | @Data 21 | @Accessors(chain = true) 22 | @ToString 23 | public class MgmtActionRequestBodyPut { 24 | 25 | private MgmtActionType forceType; 26 | } -------------------------------------------------------------------------------- /hawkbit-mgmt/hawkbit-mgmt-api/src/main/java/org/eclipse/hawkbit/mgmt/json/model/auth/MgmtUserInfo.java: -------------------------------------------------------------------------------- 1 | /** 2 | * Copyright (c) 2021 Bosch.IO GmbH and others 3 | * 4 | * This program and the accompanying materials are made 5 | * available under the terms of the Eclipse Public License 2.0 6 | * which is available at https://www.eclipse.org/legal/epl-2.0/ 7 | * 8 | * SPDX-License-Identifier: EPL-2.0 9 | */ 10 | package org.eclipse.hawkbit.mgmt.json.model.auth; 11 | 12 | import lombok.Data; 13 | import lombok.experimental.Accessors; 14 | 15 | /** 16 | * A json annotated rest model for Userinfo to RESTful API representation. 17 | */ 18 | @Data 19 | @Accessors(chain = true) 20 | public class MgmtUserInfo { 21 | 22 | private String tenant; 23 | private String username; 24 | private String[] permissions; 25 | } -------------------------------------------------------------------------------- /hawkbit-mgmt/hawkbit-mgmt-api/src/main/java/org/eclipse/hawkbit/mgmt/json/model/distributionsettype/MgmtDistributionSetTypeAssignment.java: -------------------------------------------------------------------------------- 1 | /** 2 | * Copyright (c) 2021 Bosch.IO GmbH and others 3 | * 4 | * This program and the accompanying materials are made 5 | * available under the terms of the Eclipse Public License 2.0 6 | * which is available at https://www.eclipse.org/legal/epl-2.0/ 7 | * 8 | * SPDX-License-Identifier: EPL-2.0 9 | */ 10 | package org.eclipse.hawkbit.mgmt.json.model.distributionsettype; 11 | 12 | import com.fasterxml.jackson.annotation.JsonIgnoreProperties; 13 | import org.eclipse.hawkbit.mgmt.json.model.MgmtId; 14 | 15 | /** 16 | * Request Body of DistributionSetType for assignment operations (ID only). 17 | */ 18 | @JsonIgnoreProperties(ignoreUnknown = true) 19 | public class MgmtDistributionSetTypeAssignment extends MgmtId {} 20 | -------------------------------------------------------------------------------- /hawkbit-mgmt/hawkbit-mgmt-api/src/main/java/org/eclipse/hawkbit/mgmt/json/model/softwaremodule/MgmtSoftwareModuleAssignment.java: -------------------------------------------------------------------------------- 1 | /** 2 | * Copyright (c) 2015 Bosch Software Innovations GmbH and others 3 | * 4 | * This program and the accompanying materials are made 5 | * available under the terms of the Eclipse Public License 2.0 6 | * which is available at https://www.eclipse.org/legal/epl-2.0/ 7 | * 8 | * SPDX-License-Identifier: EPL-2.0 9 | */ 10 | package org.eclipse.hawkbit.mgmt.json.model.softwaremodule; 11 | 12 | import com.fasterxml.jackson.annotation.JsonIgnoreProperties; 13 | import org.eclipse.hawkbit.mgmt.json.model.MgmtId; 14 | 15 | /** 16 | * Request Body of SoftwareModule for assignment operations (ID only). 17 | */ 18 | @JsonIgnoreProperties(ignoreUnknown = true) 19 | public class MgmtSoftwareModuleAssignment extends MgmtId {} 20 | -------------------------------------------------------------------------------- /hawkbit-mgmt/hawkbit-mgmt-api/src/main/java/org/eclipse/hawkbit/mgmt/json/model/softwaremoduletype/MgmtSoftwareModuleTypeAssignment.java: -------------------------------------------------------------------------------- 1 | /** 2 | * Copyright (c) 2015 Bosch Software Innovations GmbH and others 3 | * 4 | * This program and the accompanying materials are made 5 | * available under the terms of the Eclipse Public License 2.0 6 | * which is available at https://www.eclipse.org/legal/epl-2.0/ 7 | * 8 | * SPDX-License-Identifier: EPL-2.0 9 | */ 10 | package org.eclipse.hawkbit.mgmt.json.model.softwaremoduletype; 11 | 12 | import com.fasterxml.jackson.annotation.JsonIgnoreProperties; 13 | import org.eclipse.hawkbit.mgmt.json.model.MgmtId; 14 | 15 | /** 16 | * Request Body of SoftwareModuleType for assignment operations (ID only). 17 | */ 18 | @JsonIgnoreProperties(ignoreUnknown = true) 19 | public class MgmtSoftwareModuleTypeAssignment extends MgmtId {} 20 | -------------------------------------------------------------------------------- /hawkbit-mgmt/hawkbit-mgmt-api/src/main/java/org/eclipse/hawkbit/mgmt/json/model/softwaremoduletype/MgmtSoftwareModuleTypeRequestBodyPut.java: -------------------------------------------------------------------------------- 1 | /** 2 | * Copyright (c) 2015 Bosch Software Innovations GmbH and others 3 | * 4 | * This program and the accompanying materials are made 5 | * available under the terms of the Eclipse Public License 2.0 6 | * which is available at https://www.eclipse.org/legal/epl-2.0/ 7 | * 8 | * SPDX-License-Identifier: EPL-2.0 9 | */ 10 | package org.eclipse.hawkbit.mgmt.json.model.softwaremoduletype; 11 | 12 | import io.swagger.v3.oas.annotations.media.Schema; 13 | import lombok.Data; 14 | import lombok.ToString; 15 | import lombok.experimental.Accessors; 16 | 17 | /** 18 | * Request Body for SoftwareModuleType PUT. 19 | */ 20 | @Data 21 | @Accessors(chain = true) 22 | @ToString 23 | public class MgmtSoftwareModuleTypeRequestBodyPut { 24 | 25 | @Schema(example = "Example description") 26 | private String description; 27 | 28 | @Schema(example = "rgb(0,0,255") 29 | private String colour; 30 | } -------------------------------------------------------------------------------- /hawkbit-mgmt/hawkbit-mgmt-api/src/main/java/org/eclipse/hawkbit/mgmt/json/model/target/MgmtTargetAttributes.java: -------------------------------------------------------------------------------- 1 | /** 2 | * Copyright (c) 2011-2015 Bosch Software Innovations GmbH, Germany. All rights reserved. 3 | */ 4 | package org.eclipse.hawkbit.mgmt.json.model.target; 5 | 6 | import java.io.Serial; 7 | import java.util.HashMap; 8 | import java.util.Map; 9 | 10 | import com.fasterxml.jackson.annotation.JsonIgnore; 11 | 12 | /** 13 | * {@link Map} with attributes of SP Target. 14 | */ 15 | public class MgmtTargetAttributes extends HashMap { 16 | 17 | @Serial 18 | private static final long serialVersionUID = 1L; 19 | 20 | @Override 21 | @JsonIgnore 22 | public boolean isEmpty() { 23 | return super.isEmpty(); 24 | } 25 | } -------------------------------------------------------------------------------- /hawkbit-mgmt/hawkbit-mgmt-api/src/main/java/org/eclipse/hawkbit/mgmt/rest/api/SortDirection.java: -------------------------------------------------------------------------------- 1 | /** 2 | * Copyright (c) 2015 Bosch Software Innovations GmbH and others 3 | * 4 | * This program and the accompanying materials are made 5 | * available under the terms of the Eclipse Public License 2.0 6 | * which is available at https://www.eclipse.org/legal/epl-2.0/ 7 | * 8 | * SPDX-License-Identifier: EPL-2.0 9 | */ 10 | package org.eclipse.hawkbit.mgmt.rest.api; 11 | 12 | /** 13 | * A definition of possible sorting direction. 14 | */ 15 | public enum SortDirection { 16 | 17 | /** 18 | * Ascending. 19 | */ 20 | ASC, 21 | /** 22 | * Descending. 23 | */ 24 | DESC; 25 | } 26 | -------------------------------------------------------------------------------- /hawkbit-mgmt/hawkbit-mgmt-api/src/main/java/org/eclipse/hawkbit/mgmt/sdfs.java: -------------------------------------------------------------------------------- 1 | /** 2 | * Copyright (c) 2025 Contributors to the Eclipse Foundation 3 | * 4 | * This program and the accompanying materials are made 5 | * available under the terms of the Eclipse Public License 2.0 6 | * which is available at https://www.eclipse.org/legal/epl-2.0/ 7 | * 8 | * SPDX-License-Identifier: EPL-2.0 9 | */ 10 | package org.eclipse.hawkbit.mgmt; 11 | 12 | public class sdfs { 13 | } 14 | -------------------------------------------------------------------------------- /hawkbit-mgmt/hawkbit-mgmt-resource/.gitignore: -------------------------------------------------------------------------------- 1 | /artifactrepo/ 2 | -------------------------------------------------------------------------------- /hawkbit-mgmt/hawkbit-mgmt-resource/README.md: -------------------------------------------------------------------------------- 1 | # Eclipse.IoT hawkBit - Mgmt Resource 2 | 3 | This is the server-side implementation of the hawkBit Mgmt API that is used to manage and monitor the HawkBit Update 4 | Server via HTTP. 5 | 6 | # Compile 7 | 8 | #### Build hawkbit-mgmt-resource 9 | 10 | ``` 11 | $ cd hawkbit/hawkbit-mgmt-resource 12 | $ mvn clean install 13 | ``` 14 | 15 | -------------------------------------------------------------------------------- /hawkbit-mgmt/hawkbit-mgmt-resource/src/main/resources/hawkbit-mgmt-api-defaults.properties: -------------------------------------------------------------------------------- 1 | # 2 | # Copyright (c) 2018 Microsoft and others 3 | # 4 | # This program and the accompanying materials are made 5 | # available under the terms of the Eclipse Public License 2.0 6 | # which is available at https://www.eclipse.org/legal/epl-2.0/ 7 | # 8 | # SPDX-License-Identifier: EPL-2.0 9 | # 10 | 11 | # Upload of large files 12 | spring.servlet.multipart.max-file-size=1024MB 13 | spring.servlet.multipart.max-request-size=-1 14 | spring.servlet.multipart.file-size-threshold=1MB 15 | -------------------------------------------------------------------------------- /hawkbit-mgmt/hawkbit-mgmt-resource/src/test/resources/mgmt-test.properties: -------------------------------------------------------------------------------- 1 | # 2 | # Copyright (c) 2018 Microsoft and others 3 | # 4 | # This program and the accompanying materials are made 5 | # available under the terms of the Eclipse Public License 2.0 6 | # which is available at https://www.eclipse.org/legal/epl-2.0/ 7 | # 8 | # SPDX-License-Identifier: EPL-2.0 9 | # 10 | 11 | # Logging START - activate to see request/response details 12 | #logging.level.org.eclipse.hawkbit.rest.util.MockMvcResultPrinter=DEBUG 13 | # Logging END 14 | 15 | -------------------------------------------------------------------------------- /hawkbit-mgmt/hawkbit-mgmt-server/src/main/resources/application-mysql.properties: -------------------------------------------------------------------------------- 1 | # 2 | # Copyright (c) 2015 Bosch Software Innovations GmbH and others 3 | # 4 | # This program and the accompanying materials are made 5 | # available under the terms of the Eclipse Public License 2.0 6 | # which is available at https://www.eclipse.org/legal/epl-2.0/ 7 | # 8 | # SPDX-License-Identifier: EPL-2.0 9 | # 10 | 11 | # This profile adds basic configurations for a MySQL DB usage. 12 | # Keep in mind that you need the MariaDB driver in your classpath on compile. 13 | # see https://www.eclipse.org/hawkbit/guides/runhawkbit/ 14 | 15 | spring.jpa.database=MYSQL 16 | spring.datasource.url=jdbc:mariadb://localhost:3306/hawkbit 17 | spring.datasource.username=root 18 | spring.datasource.password= 19 | spring.datasource.driverClassName=org.mariadb.jdbc.Driver 20 | -------------------------------------------------------------------------------- /hawkbit-mgmt/hawkbit-mgmt-server/src/main/resources/application-postgresql.properties: -------------------------------------------------------------------------------- 1 | # 2 | # Copyright (c) 2020 Enapter Co.,Ltd 3 | # 4 | # This program and the accompanying materials are made 5 | # available under the terms of the Eclipse Public License 2.0 6 | # which is available at https://www.eclipse.org/legal/epl-2.0/ 7 | # 8 | # SPDX-License-Identifier: EPL-2.0 9 | # 10 | 11 | # This profile adds basic configurations for a PostgreSQL usage. 12 | # Keep in mind that you need the PostgreSQL driver in your classpath on compile. 13 | # see https://www.eclipse.org/hawkbit/guides/runhawkbit/ 14 | 15 | spring.jpa.database=POSTGRESQL 16 | spring.datasource.url=jdbc:postgresql://localhost:5432/hawkbit 17 | spring.datasource.username=postgres 18 | spring.datasource.password=admin 19 | spring.datasource.driverClassName=org.postgresql.Driver 20 | -------------------------------------------------------------------------------- /hawkbit-mgmt/hawkbit-mgmt-server/src/main/resources/banner.txt: -------------------------------------------------------------------------------- 1 | ______ _ _ _ _ ____ _ _ __ __ _ 2 | | ____| | (_) | | | | | _ \(_) | | \/ | | | 3 | | |__ ___| |_ _ __ ___ ___ | |__ __ ___ _| | _| |_) |_| |_ | \ / | __ _ _ __ ___ | |_ 4 | | __| / __| | | '_ \/ __|/ _ \ | '_ \ / _` \ \ /\ / / |/ / _ <| | __| | |\/| |/ _` | '_ ` _ \| __| 5 | | |___| (__| | | |_) \__ \ __/ | | | | (_| |\ V V /| <| |_) | | |_ | | | | (_| | | | | | | |_ 6 | |______\___|_|_| .__/|___/\___| |_| |_|\__,_| \_/\_/ |_|\_\____/|_|\__| |_| |_|\__, |_| |_| |_|\__| 7 | | | __/ | 8 | |_| |___/ 9 | 10 | Eclipse hawkBit Management Server ${application.formatted-version} 11 | using Spring Boot ${spring-boot.formatted-version} 12 | 13 | Go to https://www.eclipse.org/hawkbit for more information. 14 | -------------------------------------------------------------------------------- /hawkbit-mgmt/hawkbit-mgmt-server/src/main/resources/public/robots.txt: -------------------------------------------------------------------------------- 1 | User-agent: * 2 | Disallow: / -------------------------------------------------------------------------------- /hawkbit-mgmt/hawkbit-mgmt-starter/README.md: -------------------------------------------------------------------------------- 1 | [Spring Boot Starter](http://docs.spring.io/spring-boot/docs/current/reference/htmlsingle/#using-boot-starter) for 2 | the [Management API](https://www.eclipse.org/hawkbit/documentation/interfaces/management-api.html). -------------------------------------------------------------------------------- /hawkbit-mgmt/hawkbit-mgmt-starter/src/main/java/org/eclipse/hawkbit/autoconfigure/mgmt/MgmtApiAutoConfiguration.java: -------------------------------------------------------------------------------- 1 | /** 2 | * Copyright (c) 2015 Bosch Software Innovations GmbH and others 3 | * 4 | * This program and the accompanying materials are made 5 | * available under the terms of the Eclipse Public License 2.0 6 | * which is available at https://www.eclipse.org/legal/epl-2.0/ 7 | * 8 | * SPDX-License-Identifier: EPL-2.0 9 | */ 10 | package org.eclipse.hawkbit.autoconfigure.mgmt; 11 | 12 | import org.eclipse.hawkbit.mgmt.rest.resource.MgmtApiConfiguration; 13 | import org.springframework.boot.autoconfigure.condition.ConditionalOnClass; 14 | import org.springframework.context.annotation.Configuration; 15 | import org.springframework.context.annotation.Import; 16 | 17 | /** 18 | * Auto-Configuration for enabling the Management API REST-Resources. 19 | */ 20 | @Configuration 21 | @ConditionalOnClass(MgmtApiConfiguration.class) 22 | @Import(MgmtApiConfiguration.class) 23 | public class MgmtApiAutoConfiguration {} -------------------------------------------------------------------------------- /hawkbit-mgmt/hawkbit-mgmt-starter/src/main/resources/META-INF/spring/org.springframework.boot.autoconfigure.AutoConfiguration.imports: -------------------------------------------------------------------------------- 1 | org.eclipse.hawkbit.autoconfigure.mgmt.MgmtApiAutoConfiguration 2 | org.eclipse.hawkbit.rest.SecurityManagedConfiguration 3 | org.eclipse.hawkbit.autoconfigure.mgmt.MgmtSecurityConfiguration 4 | -------------------------------------------------------------------------------- /hawkbit-monolith/.gitignore: -------------------------------------------------------------------------------- 1 | **/artifactrepo/ 2 | -------------------------------------------------------------------------------- /hawkbit-monolith/README.md: -------------------------------------------------------------------------------- 1 | hawkBit Runtime 2 | === 3 | 4 | | Folder | Description | 5 | |------------------------|------------------------------------------------------------------------------------------------------------------------------| 6 | | `.sandbox/` | Content of the hawkBit sandbox installation running on [hawkbit.eclipseprojects.io](https://hawkbit.eclipseprojects.io/UI/). | 7 | | `docker/` | Docker related files, such es Dockerfiles, compose and stack files to quickly start up an hawkBit. | 8 | | `docker/docker_build/` | Docker images build related files, such es Dockerfiles and build shell scripts. | 9 | 10 | Note: micro service setup requires all services using DB to use same shared DB. So, they don't work with default in 11 | memory H2 database. Docker compose with mysql shows an example setup. 12 | -------------------------------------------------------------------------------- /hawkbit-monolith/hawkbit-starter/README.MD: -------------------------------------------------------------------------------- 1 | [Spring Boot Starter](http://docs.spring.io/spring-boot/docs/current/reference/htmlsingle/#using-boot-starter) including 2 | all four interfaces: 3 | 4 | * [Management API](https://www.eclipse.org/hawkbit/documentation/interfaces/management-api.html) 5 | * [Direct Device Integration API](https://www.eclipse.org/hawkbit/documentation/interfaces/ddi-api.html) 6 | * [Device Management Federation API (AMQP 0.9)](https://www.eclipse.org/hawkbit/documentation/interfaces/dmf-api.html) -------------------------------------------------------------------------------- /hawkbit-monolith/hawkbit-update-server/src/main/resources/application-mysql.properties: -------------------------------------------------------------------------------- 1 | # 2 | # Copyright (c) 2015 Bosch Software Innovations GmbH and others 3 | # 4 | # This program and the accompanying materials are made 5 | # available under the terms of the Eclipse Public License 2.0 6 | # which is available at https://www.eclipse.org/legal/epl-2.0/ 7 | # 8 | # SPDX-License-Identifier: EPL-2.0 9 | # 10 | 11 | # This profile adds basic configurations for a MySQL DB usage. 12 | # Keep in mind that you need the MariaDB driver in your classpath on compile. 13 | # see https://www.eclipse.org/hawkbit/guides/runhawkbit/ 14 | 15 | spring.jpa.database=MYSQL 16 | spring.datasource.url=jdbc:mariadb://localhost:3306/hawkbit 17 | spring.datasource.username=root 18 | spring.datasource.password= 19 | spring.datasource.driverClassName=org.mariadb.jdbc.Driver 20 | -------------------------------------------------------------------------------- /hawkbit-monolith/hawkbit-update-server/src/main/resources/application-postgresql.properties: -------------------------------------------------------------------------------- 1 | # 2 | # Copyright (c) 2020 Enapter Co.,Ltd 3 | # 4 | # This program and the accompanying materials are made 5 | # available under the terms of the Eclipse Public License 2.0 6 | # which is available at https://www.eclipse.org/legal/epl-2.0/ 7 | # 8 | # SPDX-License-Identifier: EPL-2.0 9 | # 10 | 11 | # This profile adds basic configurations for a PostgreSQL usage. 12 | # Keep in mind that you need the PostgreSQL driver in your classpath on compile. 13 | # see https://www.eclipse.org/hawkbit/guides/runhawkbit/ 14 | 15 | spring.jpa.database=POSTGRESQL 16 | spring.datasource.url=jdbc:postgresql://localhost:5432/hawkbit 17 | spring.datasource.username=postgres 18 | spring.datasource.password=admin 19 | spring.datasource.driverClassName=org.postgresql.Driver 20 | -------------------------------------------------------------------------------- /hawkbit-monolith/hawkbit-update-server/src/main/resources/banner.txt: -------------------------------------------------------------------------------- 1 | ______ _ _ _ _ ____ _ _ 2 | | ____| | (_) | | | | | _ \(_) | 3 | | |__ ___| |_ _ __ ___ ___ | |__ __ ___ _| | _| |_) |_| |_ 4 | | __| / __| | | '_ \/ __|/ _ \ | '_ \ / _` \ \ /\ / / |/ / _ <| | __| 5 | | |___| (__| | | |_) \__ \ __/ | | | | (_| |\ V V /| <| |_) | | |_ 6 | |______\___|_|_| .__/|___/\___| |_| |_|\__,_| \_/\_/ |_|\_\____/|_|\__| 7 | | | 8 | |_| 9 | 10 | Eclipse hawkBit Update Server ${application.formatted-version} 11 | using Spring Boot ${spring-boot.formatted-version} 12 | 13 | Go to https://www.eclipse.org/hawkbit for more information. 14 | -------------------------------------------------------------------------------- /hawkbit-monolith/hawkbit-update-server/src/main/resources/public/robots.txt: -------------------------------------------------------------------------------- 1 | User-agent: * 2 | Disallow: / -------------------------------------------------------------------------------- /hawkbit-monolith/pom.xml: -------------------------------------------------------------------------------- 1 | 12 | 14 | 4.0.0 15 | 16 | 17 | org.eclipse.hawkbit 18 | hawkbit-parent 19 | ${revision} 20 | 21 | 22 | hawkbit-monolith-parent 23 | hawkBit :: Monolith :: Parent 24 | pom 25 | 26 | 27 | hawkbit-starter 28 | hawkbit-update-server 29 | 30 | 31 | -------------------------------------------------------------------------------- /hawkbit-repository/.gitignore: -------------------------------------------------------------------------------- 1 | /.springBeans 2 | -------------------------------------------------------------------------------- /hawkbit-repository/hawkbit-repository-api/src/main/java/org/eclipse/hawkbit/repository/BaseRepositoryTypeProvider.java: -------------------------------------------------------------------------------- 1 | /** 2 | * Copyright (c) 2021 Bosch.IO GmbH and others 3 | * 4 | * This program and the accompanying materials are made 5 | * available under the terms of the Eclipse Public License 2.0 6 | * which is available at https://www.eclipse.org/legal/epl-2.0/ 7 | * 8 | * SPDX-License-Identifier: EPL-2.0 9 | */ 10 | package org.eclipse.hawkbit.repository; 11 | 12 | /** 13 | * Provider that returns a base repository implementation dynamically based on repository type 14 | */ 15 | @FunctionalInterface 16 | public interface BaseRepositoryTypeProvider { 17 | 18 | /** 19 | * Return a base repository implementation that shall be used based on provided repository type 20 | * 21 | * @param repositoryType type of repository 22 | * @return base repository implementation class 23 | */ 24 | Class getBaseRepositoryType(final Class repositoryType); 25 | } 26 | -------------------------------------------------------------------------------- /hawkbit-repository/hawkbit-repository-api/src/main/java/org/eclipse/hawkbit/repository/Identifiable.java: -------------------------------------------------------------------------------- 1 | /** 2 | * Copyright (c) 2020 Bosch.IO GmbH and others 3 | * 4 | * This program and the accompanying materials are made 5 | * available under the terms of the Eclipse Public License 2.0 6 | * which is available at https://www.eclipse.org/legal/epl-2.0/ 7 | * 8 | * SPDX-License-Identifier: EPL-2.0 9 | */ 10 | package org.eclipse.hawkbit.repository; 11 | 12 | import java.io.Serializable; 13 | 14 | /** 15 | * @param the parameter of the class 16 | */ 17 | @FunctionalInterface 18 | public interface Identifiable { 19 | 20 | T getId(); 21 | } 22 | -------------------------------------------------------------------------------- /hawkbit-repository/hawkbit-repository-api/src/main/java/org/eclipse/hawkbit/repository/autoassign/AutoAssignExecutor.java: -------------------------------------------------------------------------------- 1 | /** 2 | * Copyright (c) 2020 Bosch.IO GmbH and others 3 | * 4 | * This program and the accompanying materials are made 5 | * available under the terms of the Eclipse Public License 2.0 6 | * which is available at https://www.eclipse.org/legal/epl-2.0/ 7 | * 8 | * SPDX-License-Identifier: EPL-2.0 9 | */ 10 | package org.eclipse.hawkbit.repository.autoassign; 11 | 12 | /** 13 | * An interface declaration which contains the check for the auto assignment 14 | * logic. 15 | */ 16 | public interface AutoAssignExecutor { 17 | 18 | /** 19 | * Checks all target filter queries with an auto assign distribution set and 20 | * triggers the check and assignment to targets that don't have the design DS 21 | * yet 22 | */ 23 | void checkAllTargets(); 24 | 25 | /** 26 | * Method performs an auto assign check for a specific device only 27 | * 28 | * @param controllerId of the device to check 29 | */ 30 | void checkSingleTarget(String controllerId); 31 | } -------------------------------------------------------------------------------- /hawkbit-repository/hawkbit-repository-api/src/main/java/org/eclipse/hawkbit/repository/builder/ActionStatusBuilder.java: -------------------------------------------------------------------------------- 1 | /** 2 | * Copyright (c) 2015 Bosch Software Innovations GmbH and others 3 | * 4 | * This program and the accompanying materials are made 5 | * available under the terms of the Eclipse Public License 2.0 6 | * which is available at https://www.eclipse.org/legal/epl-2.0/ 7 | * 8 | * SPDX-License-Identifier: EPL-2.0 9 | */ 10 | package org.eclipse.hawkbit.repository.builder; 11 | 12 | import org.eclipse.hawkbit.repository.model.ActionStatus; 13 | 14 | /** 15 | * Builder for {@link ActionStatus}. 16 | */ 17 | @FunctionalInterface 18 | public interface ActionStatusBuilder { 19 | 20 | /** 21 | * @param actionId the status is for 22 | * @return create builder 23 | */ 24 | ActionStatusCreate create(long actionId); 25 | } -------------------------------------------------------------------------------- /hawkbit-repository/hawkbit-repository-api/src/main/java/org/eclipse/hawkbit/repository/builder/DistributionSetBuilder.java: -------------------------------------------------------------------------------- 1 | /** 2 | * Copyright (c) 2015 Bosch Software Innovations GmbH and others 3 | * 4 | * This program and the accompanying materials are made 5 | * available under the terms of the Eclipse Public License 2.0 6 | * which is available at https://www.eclipse.org/legal/epl-2.0/ 7 | * 8 | * SPDX-License-Identifier: EPL-2.0 9 | */ 10 | package org.eclipse.hawkbit.repository.builder; 11 | 12 | import org.eclipse.hawkbit.repository.model.DistributionSet; 13 | 14 | /** 15 | * Builder for {@link DistributionSet}. 16 | */ 17 | public interface DistributionSetBuilder { 18 | 19 | /** 20 | * @param id of the updatable entity 21 | * @return builder instance 22 | */ 23 | DistributionSetUpdate update(long id); 24 | 25 | /** 26 | * @return builder instance 27 | */ 28 | DistributionSetCreate create(); 29 | } -------------------------------------------------------------------------------- /hawkbit-repository/hawkbit-repository-api/src/main/java/org/eclipse/hawkbit/repository/builder/DistributionSetTypeBuilder.java: -------------------------------------------------------------------------------- 1 | /** 2 | * Copyright (c) 2015 Bosch Software Innovations GmbH and others 3 | * 4 | * This program and the accompanying materials are made 5 | * available under the terms of the Eclipse Public License 2.0 6 | * which is available at https://www.eclipse.org/legal/epl-2.0/ 7 | * 8 | * SPDX-License-Identifier: EPL-2.0 9 | */ 10 | package org.eclipse.hawkbit.repository.builder; 11 | 12 | import org.eclipse.hawkbit.repository.model.DistributionSetType; 13 | 14 | /** 15 | * Builder for {@link DistributionSetType}. 16 | */ 17 | public interface DistributionSetTypeBuilder { 18 | 19 | /** 20 | * @param id of the updatable entity 21 | * @return builder instance 22 | */ 23 | DistributionSetTypeUpdate update(long id); 24 | 25 | /** 26 | * @return builder instance 27 | */ 28 | DistributionSetTypeCreate create(); 29 | } -------------------------------------------------------------------------------- /hawkbit-repository/hawkbit-repository-api/src/main/java/org/eclipse/hawkbit/repository/builder/RolloutBuilder.java: -------------------------------------------------------------------------------- 1 | /** 2 | * Copyright (c) 2015 Bosch Software Innovations GmbH and others 3 | * 4 | * This program and the accompanying materials are made 5 | * available under the terms of the Eclipse Public License 2.0 6 | * which is available at https://www.eclipse.org/legal/epl-2.0/ 7 | * 8 | * SPDX-License-Identifier: EPL-2.0 9 | */ 10 | package org.eclipse.hawkbit.repository.builder; 11 | 12 | import org.eclipse.hawkbit.repository.model.Rollout; 13 | 14 | /** 15 | * Builder for {@link Rollout}. 16 | */ 17 | public interface RolloutBuilder { 18 | 19 | /** 20 | * @param id of the updatable entity 21 | * @return builder instance 22 | */ 23 | RolloutUpdate update(long id); 24 | 25 | /** 26 | * @return builder instance 27 | */ 28 | RolloutCreate create(); 29 | } -------------------------------------------------------------------------------- /hawkbit-repository/hawkbit-repository-api/src/main/java/org/eclipse/hawkbit/repository/builder/RolloutGroupBuilder.java: -------------------------------------------------------------------------------- 1 | /** 2 | * Copyright (c) 2015 Bosch Software Innovations GmbH and others 3 | * 4 | * This program and the accompanying materials are made 5 | * available under the terms of the Eclipse Public License 2.0 6 | * which is available at https://www.eclipse.org/legal/epl-2.0/ 7 | * 8 | * SPDX-License-Identifier: EPL-2.0 9 | */ 10 | package org.eclipse.hawkbit.repository.builder; 11 | 12 | import org.eclipse.hawkbit.repository.model.Rollout; 13 | 14 | /** 15 | * Builder for {@link Rollout}. 16 | */ 17 | @FunctionalInterface 18 | public interface RolloutGroupBuilder { 19 | 20 | /** 21 | * @return builder instance 22 | */ 23 | RolloutGroupCreate create(); 24 | } -------------------------------------------------------------------------------- /hawkbit-repository/hawkbit-repository-api/src/main/java/org/eclipse/hawkbit/repository/builder/SoftwareModuleBuilder.java: -------------------------------------------------------------------------------- 1 | /** 2 | * Copyright (c) 2015 Bosch Software Innovations GmbH and others 3 | * 4 | * This program and the accompanying materials are made 5 | * available under the terms of the Eclipse Public License 2.0 6 | * which is available at https://www.eclipse.org/legal/epl-2.0/ 7 | * 8 | * SPDX-License-Identifier: EPL-2.0 9 | */ 10 | package org.eclipse.hawkbit.repository.builder; 11 | 12 | import org.eclipse.hawkbit.repository.model.SoftwareModule; 13 | 14 | /** 15 | * Builder for {@link SoftwareModule}. 16 | */ 17 | public interface SoftwareModuleBuilder { 18 | 19 | /** 20 | * @param id of the updatable entity 21 | * @return builder instance 22 | */ 23 | SoftwareModuleUpdate update(long id); 24 | 25 | /** 26 | * @return builder instance 27 | */ 28 | SoftwareModuleCreate create(); 29 | } -------------------------------------------------------------------------------- /hawkbit-repository/hawkbit-repository-api/src/main/java/org/eclipse/hawkbit/repository/builder/SoftwareModuleTypeBuilder.java: -------------------------------------------------------------------------------- 1 | /** 2 | * Copyright (c) 2015 Bosch Software Innovations GmbH and others 3 | * 4 | * This program and the accompanying materials are made 5 | * available under the terms of the Eclipse Public License 2.0 6 | * which is available at https://www.eclipse.org/legal/epl-2.0/ 7 | * 8 | * SPDX-License-Identifier: EPL-2.0 9 | */ 10 | package org.eclipse.hawkbit.repository.builder; 11 | 12 | import org.eclipse.hawkbit.repository.model.SoftwareModuleType; 13 | 14 | /** 15 | * Builder for {@link SoftwareModuleType}. 16 | */ 17 | public interface SoftwareModuleTypeBuilder { 18 | 19 | /** 20 | * @param id of the updatable entity 21 | * @return builder instance 22 | */ 23 | SoftwareModuleTypeUpdate update(long id); 24 | 25 | /** 26 | * @return builder instance 27 | */ 28 | SoftwareModuleTypeCreate create(); 29 | } -------------------------------------------------------------------------------- /hawkbit-repository/hawkbit-repository-api/src/main/java/org/eclipse/hawkbit/repository/builder/TagBuilder.java: -------------------------------------------------------------------------------- 1 | /** 2 | * Copyright (c) 2015 Bosch Software Innovations GmbH and others 3 | * 4 | * This program and the accompanying materials are made 5 | * available under the terms of the Eclipse Public License 2.0 6 | * which is available at https://www.eclipse.org/legal/epl-2.0/ 7 | * 8 | * SPDX-License-Identifier: EPL-2.0 9 | */ 10 | package org.eclipse.hawkbit.repository.builder; 11 | 12 | import org.eclipse.hawkbit.repository.model.Tag; 13 | 14 | /** 15 | * Builder for {@link Tag}. 16 | */ 17 | public interface TagBuilder { 18 | 19 | /** 20 | * @param id of the updatable entity 21 | * @return builder instance 22 | */ 23 | TagUpdate update(long id); 24 | 25 | /** 26 | * @return builder instance 27 | */ 28 | TagCreate create(); 29 | } -------------------------------------------------------------------------------- /hawkbit-repository/hawkbit-repository-api/src/main/java/org/eclipse/hawkbit/repository/builder/TargetBuilder.java: -------------------------------------------------------------------------------- 1 | /** 2 | * Copyright (c) 2015 Bosch Software Innovations GmbH and others 3 | * 4 | * This program and the accompanying materials are made 5 | * available under the terms of the Eclipse Public License 2.0 6 | * which is available at https://www.eclipse.org/legal/epl-2.0/ 7 | * 8 | * SPDX-License-Identifier: EPL-2.0 9 | */ 10 | package org.eclipse.hawkbit.repository.builder; 11 | 12 | import jakarta.validation.constraints.NotEmpty; 13 | 14 | import org.eclipse.hawkbit.repository.model.Target; 15 | 16 | /** 17 | * Builder for {@link Target}. 18 | */ 19 | public interface TargetBuilder { 20 | 21 | /** 22 | * @param controllerId of the updatable entity 23 | * @return builder instance 24 | */ 25 | TargetUpdate update(@NotEmpty String controllerId); 26 | 27 | /** 28 | * @return builder instance 29 | */ 30 | TargetCreate create(); 31 | } -------------------------------------------------------------------------------- /hawkbit-repository/hawkbit-repository-api/src/main/java/org/eclipse/hawkbit/repository/builder/TargetTypeBuilder.java: -------------------------------------------------------------------------------- 1 | /** 2 | * Copyright (c) 2021 Bosch.IO GmbH and others 3 | * 4 | * This program and the accompanying materials are made 5 | * available under the terms of the Eclipse Public License 2.0 6 | * which is available at https://www.eclipse.org/legal/epl-2.0/ 7 | * 8 | * SPDX-License-Identifier: EPL-2.0 9 | */ 10 | package org.eclipse.hawkbit.repository.builder; 11 | 12 | import org.eclipse.hawkbit.repository.model.TargetType; 13 | 14 | /** 15 | * Builder for {@link TargetType}. 16 | */ 17 | public interface TargetTypeBuilder { 18 | 19 | /** 20 | * @param id of the updatable entity 21 | * @return builder instance 22 | */ 23 | TargetTypeUpdate update(long id); 24 | 25 | /** 26 | * @return builder instance 27 | */ 28 | TargetTypeCreate create(); 29 | } -------------------------------------------------------------------------------- /hawkbit-repository/hawkbit-repository-api/src/main/java/org/eclipse/hawkbit/repository/event/ApplicationEventFilter.java: -------------------------------------------------------------------------------- 1 | /** 2 | * Copyright (c) 2015 Bosch Software Innovations GmbH and others 3 | * 4 | * This program and the accompanying materials are made 5 | * available under the terms of the Eclipse Public License 2.0 6 | * which is available at https://www.eclipse.org/legal/epl-2.0/ 7 | * 8 | * SPDX-License-Identifier: EPL-2.0 9 | */ 10 | package org.eclipse.hawkbit.repository.event; 11 | 12 | import org.springframework.context.ApplicationEvent; 13 | 14 | /** 15 | * ApplicationEventFilter for hawkBit internal {@link ApplicationEvent} publishing. 16 | */ 17 | @FunctionalInterface 18 | public interface ApplicationEventFilter { 19 | 20 | /** 21 | * @param event to verify 22 | * @return true if event should be filtered 23 | */ 24 | boolean filter(final ApplicationEvent event); 25 | } -------------------------------------------------------------------------------- /hawkbit-repository/hawkbit-repository-api/src/main/java/org/eclipse/hawkbit/repository/event/TenantAwareEvent.java: -------------------------------------------------------------------------------- 1 | /** 2 | * Copyright (c) 2015 Bosch Software Innovations GmbH and others 3 | * 4 | * This program and the accompanying materials are made 5 | * available under the terms of the Eclipse Public License 2.0 6 | * which is available at https://www.eclipse.org/legal/epl-2.0/ 7 | * 8 | * SPDX-License-Identifier: EPL-2.0 9 | */ 10 | package org.eclipse.hawkbit.repository.event; 11 | 12 | /** 13 | * An event declaration which holds an revision for each event so consumers have 14 | * the chance to know if they might already retrieved a newer event. 15 | */ 16 | @FunctionalInterface 17 | public interface TenantAwareEvent { 18 | 19 | /** 20 | * @return the tenant of the event. 21 | */ 22 | String getTenant(); 23 | } -------------------------------------------------------------------------------- /hawkbit-repository/hawkbit-repository-api/src/main/java/org/eclipse/hawkbit/repository/event/entity/EntityCreatedEvent.java: -------------------------------------------------------------------------------- 1 | /** 2 | * Copyright (c) 2018 Bosch Software Innovations GmbH and others 3 | * 4 | * This program and the accompanying materials are made 5 | * available under the terms of the Eclipse Public License 2.0 6 | * which is available at https://www.eclipse.org/legal/epl-2.0/ 7 | * 8 | * SPDX-License-Identifier: EPL-2.0 9 | */ 10 | package org.eclipse.hawkbit.repository.event.entity; 11 | 12 | /** 13 | * Marker interface to indicate event has created a newly entity. 14 | */ 15 | public interface EntityCreatedEvent extends EntityIdEvent {} -------------------------------------------------------------------------------- /hawkbit-repository/hawkbit-repository-api/src/main/java/org/eclipse/hawkbit/repository/event/entity/EntityDeletedEvent.java: -------------------------------------------------------------------------------- 1 | /** 2 | * Copyright (c) 2018 Bosch Software Innovations GmbH and others 3 | * 4 | * This program and the accompanying materials are made 5 | * available under the terms of the Eclipse Public License 2.0 6 | * which is available at https://www.eclipse.org/legal/epl-2.0/ 7 | * 8 | * SPDX-License-Identifier: EPL-2.0 9 | */ 10 | package org.eclipse.hawkbit.repository.event.entity; 11 | 12 | /** 13 | * Marker interface to indicate event has deleted an entity. 14 | */ 15 | public interface EntityDeletedEvent extends EntityIdEvent {} -------------------------------------------------------------------------------- /hawkbit-repository/hawkbit-repository-api/src/main/java/org/eclipse/hawkbit/repository/event/entity/EntityIdEvent.java: -------------------------------------------------------------------------------- 1 | /** 2 | * Copyright (c) 2018 Bosch Software Innovations GmbH and others 3 | * 4 | * This program and the accompanying materials are made 5 | * available under the terms of the Eclipse Public License 2.0 6 | * which is available at https://www.eclipse.org/legal/epl-2.0/ 7 | * 8 | * SPDX-License-Identifier: EPL-2.0 9 | */ 10 | package org.eclipse.hawkbit.repository.event.entity; 11 | 12 | import org.eclipse.hawkbit.repository.event.TenantAwareEvent; 13 | 14 | /** 15 | * Interface to indicate an entity event which contains at least an entity id. 16 | */ 17 | public interface EntityIdEvent extends TenantAwareEvent { 18 | 19 | /** 20 | * @return the class of the entity of this event. 21 | */ 22 | String getEntityClass(); 23 | 24 | /** 25 | * @return the class of entities interface 26 | */ 27 | String getInterfaceClass(); 28 | 29 | /** 30 | * @return the ID of the entity of this event. 31 | */ 32 | Long getEntityId(); 33 | } -------------------------------------------------------------------------------- /hawkbit-repository/hawkbit-repository-api/src/main/java/org/eclipse/hawkbit/repository/event/entity/EntityUpdatedEvent.java: -------------------------------------------------------------------------------- 1 | /** 2 | * Copyright (c) 2018 Bosch Software Innovations GmbH and others 3 | * 4 | * This program and the accompanying materials are made 5 | * available under the terms of the Eclipse Public License 2.0 6 | * which is available at https://www.eclipse.org/legal/epl-2.0/ 7 | * 8 | * SPDX-License-Identifier: EPL-2.0 9 | */ 10 | package org.eclipse.hawkbit.repository.event.entity; 11 | 12 | /** 13 | * Marker interface to indicate event has updated an entity. 14 | */ 15 | public interface EntityUpdatedEvent extends EntityIdEvent {} -------------------------------------------------------------------------------- /hawkbit-repository/hawkbit-repository-api/src/main/java/org/eclipse/hawkbit/repository/event/remote/EventEntityManager.java: -------------------------------------------------------------------------------- 1 | /** 2 | * Copyright (c) 2015 Bosch Software Innovations GmbH and others 3 | * 4 | * This program and the accompanying materials are made 5 | * available under the terms of the Eclipse Public License 2.0 6 | * which is available at https://www.eclipse.org/legal/epl-2.0/ 7 | * 8 | * SPDX-License-Identifier: EPL-2.0 9 | */ 10 | package org.eclipse.hawkbit.repository.event.remote; 11 | 12 | import org.eclipse.hawkbit.repository.model.TenantAwareBaseEntity; 13 | 14 | /** 15 | * Loads an entity e.g. if a remote event is received. 16 | */ 17 | @FunctionalInterface 18 | public interface EventEntityManager { 19 | 20 | /** 21 | * Find an entity by given id and return it. 22 | * 23 | * @param tenant the tenant 24 | * @param id the id 25 | * @param entityType the entity type 26 | * @return the entity 27 | */ 28 | E findEntity(String tenant, Long id, Class entityType); 29 | } -------------------------------------------------------------------------------- /hawkbit-repository/hawkbit-repository-api/src/main/java/org/eclipse/hawkbit/repository/exception/InvalidTargetAttributeException.java: -------------------------------------------------------------------------------- 1 | /** 2 | * Copyright (c) 2018 Bosch Software Innovations GmbH and others 3 | * 4 | * This program and the accompanying materials are made 5 | * available under the terms of the Eclipse Public License 2.0 6 | * which is available at https://www.eclipse.org/legal/epl-2.0/ 7 | * 8 | * SPDX-License-Identifier: EPL-2.0 9 | */ 10 | 11 | package org.eclipse.hawkbit.repository.exception; 12 | 13 | import java.io.Serial; 14 | 15 | import org.eclipse.hawkbit.exception.AbstractServerRtException; 16 | import org.eclipse.hawkbit.exception.SpServerError; 17 | 18 | public class InvalidTargetAttributeException extends AbstractServerRtException { 19 | 20 | @Serial 21 | private static final long serialVersionUID = 1L; 22 | 23 | private static final SpServerError THIS_ERROR = SpServerError.SP_TARGET_ATTRIBUTES_INVALID; 24 | 25 | /** 26 | * Default constructor. 27 | */ 28 | public InvalidTargetAttributeException() { 29 | super(THIS_ERROR); 30 | } 31 | } 32 | -------------------------------------------------------------------------------- /hawkbit-repository/hawkbit-repository-api/src/main/java/org/eclipse/hawkbit/repository/model/DistributionSetFilter.java: -------------------------------------------------------------------------------- 1 | /** 2 | * Copyright (c) 2015 Bosch Software Innovations GmbH and others 3 | * 4 | * This program and the accompanying materials are made 5 | * available under the terms of the Eclipse Public License 2.0 6 | * which is available at https://www.eclipse.org/legal/epl-2.0/ 7 | * 8 | * SPDX-License-Identifier: EPL-2.0 9 | */ 10 | package org.eclipse.hawkbit.repository.model; 11 | 12 | import java.util.Collection; 13 | 14 | import lombok.Builder; 15 | import lombok.Data; 16 | 17 | /** 18 | * Holds distribution set filter parameters. 19 | */ 20 | @Data 21 | @Builder 22 | public final class DistributionSetFilter { 23 | 24 | private final Boolean isDeleted; 25 | private final Boolean isComplete; 26 | private final Boolean isValid; 27 | private final Long typeId; 28 | private final String searchText; 29 | private final Boolean selectDSWithNoTag; 30 | private final Collection tagNames; 31 | } -------------------------------------------------------------------------------- /hawkbit-repository/hawkbit-repository-api/src/main/java/org/eclipse/hawkbit/repository/model/DistributionSetTag.java: -------------------------------------------------------------------------------- 1 | /** 2 | * Copyright (c) 2015 Bosch Software Innovations GmbH and others 3 | * 4 | * This program and the accompanying materials are made 5 | * available under the terms of the Eclipse Public License 2.0 6 | * which is available at https://www.eclipse.org/legal/epl-2.0/ 7 | * 8 | * SPDX-License-Identifier: EPL-2.0 9 | */ 10 | package org.eclipse.hawkbit.repository.model; 11 | 12 | /** 13 | * {@link Tag} of a {@link DistributionSet}. 14 | */ 15 | public interface DistributionSetTag extends Tag { 16 | 17 | } 18 | -------------------------------------------------------------------------------- /hawkbit-repository/hawkbit-repository-api/src/main/java/org/eclipse/hawkbit/repository/model/NamedEntity.java: -------------------------------------------------------------------------------- 1 | /** 2 | * Copyright (c) 2015 Bosch Software Innovations GmbH and others 3 | * 4 | * This program and the accompanying materials are made 5 | * available under the terms of the Eclipse Public License 2.0 6 | * which is available at https://www.eclipse.org/legal/epl-2.0/ 7 | * 8 | * SPDX-License-Identifier: EPL-2.0 9 | */ 10 | package org.eclipse.hawkbit.repository.model; 11 | 12 | /** 13 | * Entities that have a name and description. 14 | */ 15 | public interface NamedEntity extends TenantAwareBaseEntity { 16 | 17 | /** 18 | * Maximum length of name. 19 | */ 20 | int NAME_MAX_SIZE = 128; 21 | 22 | /** 23 | * Maximum length of description. 24 | */ 25 | int DESCRIPTION_MAX_SIZE = 512; 26 | 27 | /** 28 | * @return the description of the entity. 29 | */ 30 | String getDescription(); 31 | 32 | /** 33 | * @return the name of the entity. 34 | */ 35 | String getName(); 36 | } 37 | -------------------------------------------------------------------------------- /hawkbit-repository/hawkbit-repository-api/src/main/java/org/eclipse/hawkbit/repository/model/NamedVersionedEntity.java: -------------------------------------------------------------------------------- 1 | /** 2 | * Copyright (c) 2015 Bosch Software Innovations GmbH and others 3 | * 4 | * This program and the accompanying materials are made 5 | * available under the terms of the Eclipse Public License 2.0 6 | * which is available at https://www.eclipse.org/legal/epl-2.0/ 7 | * 8 | * SPDX-License-Identifier: EPL-2.0 9 | */ 10 | package org.eclipse.hawkbit.repository.model; 11 | 12 | /** 13 | * Entities that have a name and a description. 14 | */ 15 | public interface NamedVersionedEntity extends NamedEntity { 16 | 17 | /** 18 | * Maximum length of version. 19 | */ 20 | int VERSION_MAX_SIZE = 64; 21 | 22 | /** 23 | * @return the version of entity. 24 | */ 25 | String getVersion(); 26 | } 27 | -------------------------------------------------------------------------------- /hawkbit-repository/hawkbit-repository-api/src/main/java/org/eclipse/hawkbit/repository/model/RepositoryModelConstants.java: -------------------------------------------------------------------------------- 1 | /** 2 | * Copyright (c) 2015 Bosch Software Innovations GmbH and others 3 | * 4 | * This program and the accompanying materials are made 5 | * available under the terms of the Eclipse Public License 2.0 6 | * which is available at https://www.eclipse.org/legal/epl-2.0/ 7 | * 8 | * SPDX-License-Identifier: EPL-2.0 9 | */ 10 | package org.eclipse.hawkbit.repository.model; 11 | 12 | /** 13 | * Repository model constants. 14 | */ 15 | public final class RepositoryModelConstants { 16 | 17 | /** 18 | * indicating that target action has no force time which is only needed in 19 | * case of {@link Action.ActionType#TIMEFORCED}. 20 | */ 21 | public static final Long NO_FORCE_TIME = 0L; 22 | 23 | private RepositoryModelConstants() { 24 | // Utility class. 25 | } 26 | } -------------------------------------------------------------------------------- /hawkbit-repository/hawkbit-repository-api/src/main/java/org/eclipse/hawkbit/repository/model/SoftwareModuleType.java: -------------------------------------------------------------------------------- 1 | /** 2 | * Copyright (c) 2015 Bosch Software Innovations GmbH and others 3 | * 4 | * This program and the accompanying materials are made 5 | * available under the terms of the Eclipse Public License 2.0 6 | * which is available at https://www.eclipse.org/legal/epl-2.0/ 7 | * 8 | * SPDX-License-Identifier: EPL-2.0 9 | */ 10 | package org.eclipse.hawkbit.repository.model; 11 | 12 | /** 13 | * {@link SoftwareModuleType} is an abstract definition used in 14 | * {@link DistributionSetType}s and includes additional {@link SoftwareModule} 15 | * specific information. 16 | */ 17 | public interface SoftwareModuleType extends Type { 18 | 19 | /** 20 | * @return maximum assignments of an {@link SoftwareModule} of this type to 21 | * a {@link DistributionSet}. 22 | */ 23 | int getMaxAssignments(); 24 | } 25 | -------------------------------------------------------------------------------- /hawkbit-repository/hawkbit-repository-api/src/main/java/org/eclipse/hawkbit/repository/model/Statistic.java: -------------------------------------------------------------------------------- 1 | /** 2 | * Copyright (c) 2023 Bosch.IO GmbH and others 3 | * 4 | * This program and the accompanying materials are made 5 | * available under the terms of the Eclipse Public License 2.0 6 | * which is available at https://www.eclipse.org/legal/epl-2.0/ 7 | * 8 | * SPDX-License-Identifier: EPL-2.0 9 | */ 10 | 11 | package org.eclipse.hawkbit.repository.model; 12 | 13 | public interface Statistic { 14 | 15 | /** 16 | * @return the key of the Statistic entity. 17 | */ 18 | Object getName(); 19 | 20 | /** 21 | * @return the value of the Statistic entity. 22 | */ 23 | Object getData(); 24 | } 25 | -------------------------------------------------------------------------------- /hawkbit-repository/hawkbit-repository-api/src/main/java/org/eclipse/hawkbit/repository/model/Tag.java: -------------------------------------------------------------------------------- 1 | /** 2 | * Copyright (c) 2015 Bosch Software Innovations GmbH and others 3 | * 4 | * This program and the accompanying materials are made 5 | * available under the terms of the Eclipse Public License 2.0 6 | * which is available at https://www.eclipse.org/legal/epl-2.0/ 7 | * 8 | * SPDX-License-Identifier: EPL-2.0 9 | */ 10 | package org.eclipse.hawkbit.repository.model; 11 | 12 | /** 13 | * {@link Tag} entry. 14 | */ 15 | public interface Tag extends NamedEntity { 16 | 17 | /** 18 | * Maximum length of colour in Management UI. 19 | */ 20 | int COLOUR_MAX_SIZE = 16; 21 | 22 | /** 23 | * @return colour code of the tag used in Management UI. 24 | */ 25 | String getColour(); 26 | 27 | } 28 | -------------------------------------------------------------------------------- /hawkbit-repository/hawkbit-repository-api/src/main/java/org/eclipse/hawkbit/repository/model/TargetTag.java: -------------------------------------------------------------------------------- 1 | /** 2 | * Copyright (c) 2015 Bosch Software Innovations GmbH and others 3 | * 4 | * This program and the accompanying materials are made 5 | * available under the terms of the Eclipse Public License 2.0 6 | * which is available at https://www.eclipse.org/legal/epl-2.0/ 7 | * 8 | * SPDX-License-Identifier: EPL-2.0 9 | */ 10 | package org.eclipse.hawkbit.repository.model; 11 | 12 | /** 13 | * Target tag element. 14 | */ 15 | public interface TargetTag extends Tag { 16 | 17 | } 18 | -------------------------------------------------------------------------------- /hawkbit-repository/hawkbit-repository-api/src/main/java/org/eclipse/hawkbit/repository/model/TenantAwareBaseEntity.java: -------------------------------------------------------------------------------- 1 | /** 2 | * Copyright (c) 2015 Bosch Software Innovations GmbH and others 3 | * 4 | * This program and the accompanying materials are made 5 | * available under the terms of the Eclipse Public License 2.0 6 | * which is available at https://www.eclipse.org/legal/epl-2.0/ 7 | * 8 | * SPDX-License-Identifier: EPL-2.0 9 | */ 10 | package org.eclipse.hawkbit.repository.model; 11 | 12 | /** 13 | * {@link BaseEntity} that distinguishes between tenants. 14 | */ 15 | public interface TenantAwareBaseEntity extends BaseEntity { 16 | 17 | /** 18 | * @return tenant name 19 | */ 20 | String getTenant(); 21 | } 22 | -------------------------------------------------------------------------------- /hawkbit-repository/hawkbit-repository-api/src/main/java/org/eclipse/hawkbit/repository/model/TenantMetaData.java: -------------------------------------------------------------------------------- 1 | /** 2 | * Copyright (c) 2015 Bosch Software Innovations GmbH and others 3 | * 4 | * This program and the accompanying materials are made 5 | * available under the terms of the Eclipse Public License 2.0 6 | * which is available at https://www.eclipse.org/legal/epl-2.0/ 7 | * 8 | * SPDX-License-Identifier: EPL-2.0 9 | */ 10 | package org.eclipse.hawkbit.repository.model; 11 | 12 | /** 13 | * MetaData of a tenant account. 14 | */ 15 | public interface TenantMetaData extends BaseEntity { 16 | 17 | DistributionSetType getDefaultDsType(); 18 | 19 | String getTenant(); 20 | } -------------------------------------------------------------------------------- /hawkbit-repository/hawkbit-repository-api/src/main/java/org/eclipse/hawkbit/repository/rsql/VirtualPropertyReplacer.java: -------------------------------------------------------------------------------- 1 | /** 2 | * Copyright (c) 2015 Bosch Software Innovations GmbH and others 3 | * 4 | * This program and the accompanying materials are made 5 | * available under the terms of the Eclipse Public License 2.0 6 | * which is available at https://www.eclipse.org/legal/epl-2.0/ 7 | * 8 | * SPDX-License-Identifier: EPL-2.0 9 | */ 10 | package org.eclipse.hawkbit.repository.rsql; 11 | 12 | import java.io.Serializable; 13 | 14 | /** 15 | * Implementations map a placeholder to the associated value. 16 | *

17 | * This is used in context of string replacement. 18 | */ 19 | @FunctionalInterface 20 | public interface VirtualPropertyReplacer extends Serializable { 21 | 22 | /** 23 | * Looks up a placeholders and replaces them 24 | * 25 | * @param input the input string in which virtual properties should be replaced 26 | * @return the result of the replacement 27 | */ 28 | String replace(String input); 29 | } -------------------------------------------------------------------------------- /hawkbit-repository/hawkbit-repository-api/src/main/java/org/eclipse/hawkbit/tenancy/configuration/validator/TenantConfigurationBooleanValidator.java: -------------------------------------------------------------------------------- 1 | /** 2 | * Copyright (c) 2015 Bosch Software Innovations GmbH and others 3 | * 4 | * This program and the accompanying materials are made 5 | * available under the terms of the Eclipse Public License 2.0 6 | * which is available at https://www.eclipse.org/legal/epl-2.0/ 7 | * 8 | * SPDX-License-Identifier: EPL-2.0 9 | */ 10 | package org.eclipse.hawkbit.tenancy.configuration.validator; 11 | 12 | /** 13 | * specific tenant configuration validator, which validates that the given value is a booleans. 14 | */ 15 | public class TenantConfigurationBooleanValidator implements TenantConfigurationValidator { 16 | 17 | @Override 18 | public Class validateToClass() { 19 | return Boolean.class; 20 | } 21 | } -------------------------------------------------------------------------------- /hawkbit-repository/hawkbit-repository-api/src/main/java/org/eclipse/hawkbit/tenancy/configuration/validator/TenantConfigurationIntegerValidator.java: -------------------------------------------------------------------------------- 1 | /** 2 | * Copyright (c) 2018 Siemens AG 3 | * 4 | * This program and the accompanying materials are made 5 | * available under the terms of the Eclipse Public License 2.0 6 | * which is available at https://www.eclipse.org/legal/epl-2.0/ 7 | * 8 | * SPDX-License-Identifier: EPL-2.0 9 | */ 10 | 11 | package org.eclipse.hawkbit.tenancy.configuration.validator; 12 | 13 | /** 14 | * Specific tenant configuration validator, which validates that the given value is an Integer. 15 | */ 16 | public class TenantConfigurationIntegerValidator implements TenantConfigurationValidator { 17 | 18 | @Override 19 | public Class validateToClass() { 20 | return Integer.class; 21 | } 22 | } -------------------------------------------------------------------------------- /hawkbit-repository/hawkbit-repository-api/src/main/java/org/eclipse/hawkbit/tenancy/configuration/validator/TenantConfigurationLongValidator.java: -------------------------------------------------------------------------------- 1 | /** 2 | * Copyright (c) 2018 Bosch Software Innovations GmbH and others 3 | * 4 | * This program and the accompanying materials are made 5 | * available under the terms of the Eclipse Public License 2.0 6 | * which is available at https://www.eclipse.org/legal/epl-2.0/ 7 | * 8 | * SPDX-License-Identifier: EPL-2.0 9 | */ 10 | package org.eclipse.hawkbit.tenancy.configuration.validator; 11 | 12 | /** 13 | * Specific tenant configuration validator, which validates that the given value is a {@link Long}. 14 | */ 15 | public class TenantConfigurationLongValidator implements TenantConfigurationValidator { 16 | 17 | @Override 18 | public Class validateToClass() { 19 | return Long.class; 20 | } 21 | } -------------------------------------------------------------------------------- /hawkbit-repository/hawkbit-repository-api/src/main/java/org/eclipse/hawkbit/tenancy/configuration/validator/TenantConfigurationStringValidator.java: -------------------------------------------------------------------------------- 1 | /** 2 | * Copyright (c) 2015 Bosch Software Innovations GmbH and others 3 | * 4 | * This program and the accompanying materials are made 5 | * available under the terms of the Eclipse Public License 2.0 6 | * which is available at https://www.eclipse.org/legal/epl-2.0/ 7 | * 8 | * SPDX-License-Identifier: EPL-2.0 9 | */ 10 | 11 | package org.eclipse.hawkbit.tenancy.configuration.validator; 12 | 13 | /** 14 | * specific tenant configuration validator, which validates Strings. 15 | */ 16 | public class TenantConfigurationStringValidator implements TenantConfigurationValidator { 17 | 18 | @Override 19 | public Class validateToClass() { 20 | return String.class; 21 | } 22 | } -------------------------------------------------------------------------------- /hawkbit-repository/hawkbit-repository-core/README.md: -------------------------------------------------------------------------------- 1 | # hawkBit common implementation 2 | 3 | Core elements that can be used by implementations. -------------------------------------------------------------------------------- /hawkbit-repository/hawkbit-repository-core/src/main/java/org/eclipse/hawkbit/repository/builder/AbstractBaseEntityBuilder.java: -------------------------------------------------------------------------------- 1 | /** 2 | * Copyright (c) 2015 Bosch Software Innovations GmbH and others 3 | * 4 | * This program and the accompanying materials are made 5 | * available under the terms of the Eclipse Public License 2.0 6 | * which is available at https://www.eclipse.org/legal/epl-2.0/ 7 | * 8 | * SPDX-License-Identifier: EPL-2.0 9 | */ 10 | package org.eclipse.hawkbit.repository.builder; 11 | 12 | import org.eclipse.hawkbit.repository.Identifiable; 13 | 14 | public abstract class AbstractBaseEntityBuilder implements Identifiable { 15 | 16 | protected Long id; 17 | 18 | @Override 19 | public Long getId() { 20 | return id; 21 | } 22 | 23 | static String strip(final String value) { 24 | return value == null ? null : value.strip(); 25 | } 26 | } -------------------------------------------------------------------------------- /hawkbit-repository/hawkbit-repository-core/src/main/java/org/eclipse/hawkbit/repository/builder/AbstractSoftwareModuleTypeUpdateCreate.java: -------------------------------------------------------------------------------- 1 | /** 2 | * Copyright (c) 2015 Bosch Software Innovations GmbH and others 3 | * 4 | * This program and the accompanying materials are made 5 | * available under the terms of the Eclipse Public License 2.0 6 | * which is available at https://www.eclipse.org/legal/epl-2.0/ 7 | * 8 | * SPDX-License-Identifier: EPL-2.0 9 | */ 10 | package org.eclipse.hawkbit.repository.builder; 11 | 12 | /** 13 | * Create and update builder DTO. 14 | * 15 | * @param update or create builder interface 16 | */ 17 | public abstract class AbstractSoftwareModuleTypeUpdateCreate extends AbstractTypeUpdateCreate { 18 | 19 | protected int maxAssignments = 1; 20 | 21 | public T maxAssignments(final int maxAssignments) { 22 | this.maxAssignments = maxAssignments; 23 | return (T) this; 24 | } 25 | 26 | public int getMaxAssignments() { 27 | return maxAssignments; 28 | } 29 | } 30 | -------------------------------------------------------------------------------- /hawkbit-repository/hawkbit-repository-core/src/main/java/org/eclipse/hawkbit/repository/builder/GenericDistributionSetTypeUpdate.java: -------------------------------------------------------------------------------- 1 | /** 2 | * Copyright (c) 2015 Bosch Software Innovations GmbH and others 3 | * 4 | * This program and the accompanying materials are made 5 | * available under the terms of the Eclipse Public License 2.0 6 | * which is available at https://www.eclipse.org/legal/epl-2.0/ 7 | * 8 | * SPDX-License-Identifier: EPL-2.0 9 | */ 10 | package org.eclipse.hawkbit.repository.builder; 11 | 12 | /** 13 | * Update implementation. 14 | */ 15 | public class GenericDistributionSetTypeUpdate extends AbstractDistributionSetTypeUpdateCreate 16 | implements DistributionSetTypeUpdate { 17 | 18 | public GenericDistributionSetTypeUpdate(final Long id) { 19 | super.id = id; 20 | } 21 | } -------------------------------------------------------------------------------- /hawkbit-repository/hawkbit-repository-core/src/main/java/org/eclipse/hawkbit/repository/builder/GenericRolloutUpdate.java: -------------------------------------------------------------------------------- 1 | /** 2 | * Copyright (c) 2015 Bosch Software Innovations GmbH and others 3 | * 4 | * This program and the accompanying materials are made 5 | * available under the terms of the Eclipse Public License 2.0 6 | * which is available at https://www.eclipse.org/legal/epl-2.0/ 7 | * 8 | * SPDX-License-Identifier: EPL-2.0 9 | */ 10 | package org.eclipse.hawkbit.repository.builder; 11 | 12 | /** 13 | * Update implementation. 14 | */ 15 | public class GenericRolloutUpdate extends AbstractNamedEntityBuilder implements RolloutUpdate { 16 | 17 | public GenericRolloutUpdate(final Long id) { 18 | super.id = id; 19 | } 20 | } -------------------------------------------------------------------------------- /hawkbit-repository/hawkbit-repository-core/src/main/java/org/eclipse/hawkbit/repository/builder/GenericSoftwareModuleMetadataUpdate.java: -------------------------------------------------------------------------------- 1 | /** 2 | * Copyright (c) 2015 Bosch Software Innovations GmbH and others 3 | * 4 | * This program and the accompanying materials are made 5 | * available under the terms of the Eclipse Public License 2.0 6 | * which is available at https://www.eclipse.org/legal/epl-2.0/ 7 | * 8 | * SPDX-License-Identifier: EPL-2.0 9 | */ 10 | package org.eclipse.hawkbit.repository.builder; 11 | 12 | /** 13 | * Update implementation. 14 | */ 15 | public class GenericSoftwareModuleMetadataUpdate 16 | extends AbstractSoftwareModuleMetadataUpdateCreate 17 | implements SoftwareModuleMetadataUpdate { 18 | 19 | public GenericSoftwareModuleMetadataUpdate(final long softwareModuleId, final String key) { 20 | super.softwareModuleId = softwareModuleId; 21 | this.key = key; 22 | } 23 | 24 | } 25 | -------------------------------------------------------------------------------- /hawkbit-repository/hawkbit-repository-core/src/main/java/org/eclipse/hawkbit/repository/builder/GenericSoftwareModuleTypeUpdate.java: -------------------------------------------------------------------------------- 1 | /** 2 | * Copyright (c) 2015 Bosch Software Innovations GmbH and others 3 | * 4 | * This program and the accompanying materials are made 5 | * available under the terms of the Eclipse Public License 2.0 6 | * which is available at https://www.eclipse.org/legal/epl-2.0/ 7 | * 8 | * SPDX-License-Identifier: EPL-2.0 9 | */ 10 | package org.eclipse.hawkbit.repository.builder; 11 | 12 | /** 13 | * Update implementation. 14 | */ 15 | public class GenericSoftwareModuleTypeUpdate extends AbstractSoftwareModuleTypeUpdateCreate 16 | implements SoftwareModuleTypeUpdate { 17 | 18 | public GenericSoftwareModuleTypeUpdate(final Long id) { 19 | super.id = id; 20 | } 21 | } -------------------------------------------------------------------------------- /hawkbit-repository/hawkbit-repository-core/src/main/java/org/eclipse/hawkbit/repository/builder/GenericTagUpdate.java: -------------------------------------------------------------------------------- 1 | /** 2 | * Copyright (c) 2015 Bosch Software Innovations GmbH and others 3 | * 4 | * This program and the accompanying materials are made 5 | * available under the terms of the Eclipse Public License 2.0 6 | * which is available at https://www.eclipse.org/legal/epl-2.0/ 7 | * 8 | * SPDX-License-Identifier: EPL-2.0 9 | */ 10 | package org.eclipse.hawkbit.repository.builder; 11 | 12 | /** 13 | * Update implementation. 14 | */ 15 | public class GenericTagUpdate extends AbstractTagUpdateCreate implements TagUpdate { 16 | 17 | public GenericTagUpdate(final Long id) { 18 | super.id = id; 19 | } 20 | } -------------------------------------------------------------------------------- /hawkbit-repository/hawkbit-repository-core/src/main/java/org/eclipse/hawkbit/repository/builder/GenericTargetFilterQueryUpdate.java: -------------------------------------------------------------------------------- 1 | /** 2 | * Copyright (c) 2015 Bosch Software Innovations GmbH and others 3 | * 4 | * This program and the accompanying materials are made 5 | * available under the terms of the Eclipse Public License 2.0 6 | * which is available at https://www.eclipse.org/legal/epl-2.0/ 7 | * 8 | * SPDX-License-Identifier: EPL-2.0 9 | */ 10 | package org.eclipse.hawkbit.repository.builder; 11 | 12 | /** 13 | * Update implementation. 14 | */ 15 | public class GenericTargetFilterQueryUpdate extends AbstractTargetFilterQueryUpdateCreate 16 | implements TargetFilterQueryUpdate { 17 | 18 | public GenericTargetFilterQueryUpdate(final Long id) { 19 | super.id = id; 20 | } 21 | } -------------------------------------------------------------------------------- /hawkbit-repository/hawkbit-repository-core/src/main/java/org/eclipse/hawkbit/repository/builder/GenericTargetTypeUpdate.java: -------------------------------------------------------------------------------- 1 | /** 2 | * Copyright (c) 2021 Bosch.IO GmbH and others 3 | * 4 | * This program and the accompanying materials are made 5 | * available under the terms of the Eclipse Public License 2.0 6 | * which is available at https://www.eclipse.org/legal/epl-2.0/ 7 | * 8 | * SPDX-License-Identifier: EPL-2.0 9 | */ 10 | package org.eclipse.hawkbit.repository.builder; 11 | 12 | /** 13 | * Update implementation. 14 | */ 15 | public class GenericTargetTypeUpdate extends AbstractTargetTypeUpdateCreate 16 | implements TargetTypeUpdate { 17 | 18 | /** 19 | * @param id Target type ID 20 | */ 21 | public GenericTargetTypeUpdate(final Long id) { 22 | super.id = id; 23 | } 24 | } -------------------------------------------------------------------------------- /hawkbit-repository/hawkbit-repository-core/src/main/resources/hawkbit-eventbus-defaults.properties: -------------------------------------------------------------------------------- 1 | # 2 | # Copyright (c) 2015 Bosch Software Innovations GmbH and others 3 | # 4 | # This program and the accompanying materials are made 5 | # available under the terms of the Eclipse Public License 2.0 6 | # which is available at https://www.eclipse.org/legal/epl-2.0/ 7 | # 8 | # SPDX-License-Identifier: EPL-2.0 9 | # 10 | 11 | # Spring cloud bus and stream 12 | spring.cloud.bus.enabled=false 13 | # Disable Cloud Bus default events 14 | spring.cloud.bus.env.enabled=false 15 | spring.cloud.bus.ack.enabled=false 16 | spring.cloud.bus.trace.enabled=false 17 | spring.cloud.bus.refresh.enabled=false 18 | # Disable Cloud Bus endpoints 19 | management.endpoint.busrefresh.access=none 20 | management.endpoint.busenv.access=none 21 | # Spring cloud bus and stream END -------------------------------------------------------------------------------- /hawkbit-repository/hawkbit-repository-jpa-api/README.md: -------------------------------------------------------------------------------- 1 | # hawkBit JPA EclipseLink Vendor integration 2 | 3 | Implementation of [EclipseLink](http://www.eclipse.org/eclipselink/) JPA vendor. -------------------------------------------------------------------------------- /hawkbit-repository/hawkbit-repository-jpa-api/src/main/java/org/eclipse/hawkbit/repository/jpa/executor/AfterTransactionCommitExecutor.java: -------------------------------------------------------------------------------- 1 | /** 2 | * Copyright (c) 2015 Bosch Software Innovations GmbH and others 3 | * 4 | * This program and the accompanying materials are made 5 | * available under the terms of the Eclipse Public License 2.0 6 | * which is available at https://www.eclipse.org/legal/epl-2.0/ 7 | * 8 | * SPDX-License-Identifier: EPL-2.0 9 | */ 10 | package org.eclipse.hawkbit.repository.jpa.executor; 11 | 12 | /** 13 | * A interface to register a runnable, which will be executed after a successful 14 | * spring transaction. 15 | */ 16 | @FunctionalInterface 17 | public interface AfterTransactionCommitExecutor { 18 | 19 | /** 20 | * Register a runnable which will be executed after a successful spring 21 | * transaction. 22 | * 23 | * @param runnable the after commit runnable 24 | */ 25 | void afterCommit(Runnable runnable); 26 | } -------------------------------------------------------------------------------- /hawkbit-repository/hawkbit-repository-jpa-api/src/main/java/org/eclipse/hawkbit/repository/jpa/model/EventAwareEntity.java: -------------------------------------------------------------------------------- 1 | /** 2 | * Copyright (c) 2015 Bosch Software Innovations GmbH and others 3 | * 4 | * This program and the accompanying materials are made 5 | * available under the terms of the Eclipse Public License 2.0 6 | * which is available at https://www.eclipse.org/legal/epl-2.0/ 7 | * 8 | * SPDX-License-Identifier: EPL-2.0 9 | */ 10 | package org.eclipse.hawkbit.repository.jpa.model; 11 | 12 | /** 13 | * Interfaces which can be implemented by entities to be called when the entity should fire an event because the entity has been created, 14 | * updated or deleted. 15 | */ 16 | public interface EventAwareEntity { 17 | 18 | /** 19 | * Fired for the Entity creation. 20 | */ 21 | void fireCreateEvent(); 22 | 23 | /** 24 | * Fired for the Entity update. 25 | */ 26 | void fireUpdateEvent(); 27 | 28 | /** 29 | * Fired for the Entity deletion. 30 | */ 31 | void fireDeleteEvent(); 32 | } -------------------------------------------------------------------------------- /hawkbit-repository/hawkbit-repository-jpa-eclipselink/README.md: -------------------------------------------------------------------------------- 1 | # hawkBit JPA EclipseLink Vendor integration 2 | 3 | Implementation of [EclipseLink](http://www.eclipse.org/eclipselink/) JPA vendor. 4 | 5 | Since there seem to be bug in eclipselink static weaver or eclipselink-maven-plugin - don't weave properly the abstract classes when no non-abstract entity into the maven module - we use to have fake entity in the module to make it work. -------------------------------------------------------------------------------- /hawkbit-repository/hawkbit-repository-jpa-eclipselink/src/main/resources/META-INF/spring/org.springframework.boot.autoconfigure.AutoConfiguration.imports: -------------------------------------------------------------------------------- 1 | org.eclipse.hawkbit.repository.jpa.Statistics.StatisticsAutoConfiguration -------------------------------------------------------------------------------- /hawkbit-repository/hawkbit-repository-jpa-flyway/README.md: -------------------------------------------------------------------------------- 1 | # hawkBit JPA Flyway migration 2 | 3 | JPA Flyway migrations scripts -------------------------------------------------------------------------------- /hawkbit-repository/hawkbit-repository-jpa-flyway/src/main/resources/META-INF/spring/org.springframework.boot.autoconfigure.AutoConfiguration.imports: -------------------------------------------------------------------------------- 1 | org.eclipse.hawkbit.autoconfigure.repository.jpa.flyway.HawkbitFlywayAutoConfiguration 2 | -------------------------------------------------------------------------------- /hawkbit-repository/hawkbit-repository-jpa-flyway/src/main/resources/db/migration/H2/V1_10_0__advanced_rolloutgroup__H2.sql: -------------------------------------------------------------------------------- 1 | ALTER TABLE sp_rolloutgroup 2 | ADD COLUMN target_percentage FLOAT; 3 | ALTER TABLE sp_rolloutgroup 4 | ADD COLUMN target_filter VARCHAR (1024); 5 | -------------------------------------------------------------------------------- /hawkbit-repository/hawkbit-repository-jpa-flyway/src/main/resources/db/migration/H2/V1_10_1__consolidate_artifact_sha1__H2.sql: -------------------------------------------------------------------------------- 1 | ALTER TABLE sp_artifact DROP COLUMN sha1_hash; 2 | ALTER TABLE sp_artifact ALTER COLUMN gridfs_file_name RENAME TO sha1_hash; 3 | ALTER TABLE sp_artifact ALTER sha1_hash varchar(40) not null; 4 | CREATE INDEX sp_idx_artifact_02 ON sp_artifact (tenant, sha1_hash); 5 | -------------------------------------------------------------------------------- /hawkbit-repository/hawkbit-repository-jpa-flyway/src/main/resources/db/migration/H2/V1_10_2__rollout_auto_start__H2.sql: -------------------------------------------------------------------------------- 1 | ALTER TABLE sp_rollout 2 | ADD COLUMN start_at BIGINT; 3 | -------------------------------------------------------------------------------- /hawkbit-repository/hawkbit-repository-jpa-flyway/src/main/resources/db/migration/H2/V1_11_1__target_filter_query_UQ___H2.sql: -------------------------------------------------------------------------------- 1 | alter table sp_target_filter_query 2 | add constraint uk_tenant_custom_filter_name unique (name, tenant); 3 | -------------------------------------------------------------------------------- /hawkbit-repository/hawkbit-repository-jpa-flyway/src/main/resources/db/migration/H2/V1_11_2__remove_unused_idexes___H2.sql: -------------------------------------------------------------------------------- 1 | DROP INDEX sp_idx_action_status_01; 2 | DROP INDEX sp_idx_rollout_01; 3 | DROP INDEX sp_idx_rolloutgroup_01; 4 | DROP INDEX sp_idx_target_02; 5 | DROP INDEX sp_idx_target_filter_query_01; 6 | DROP INDEX sp_idx_distribution_set_01; 7 | DROP INDEX sp_idx_distribution_set_02; 8 | CREATE INDEX sp_idx_distribution_set_01 ON sp_distribution_set (tenant, deleted, complete); 9 | -------------------------------------------------------------------------------- /hawkbit-repository/hawkbit-repository-jpa-flyway/src/main/resources/db/migration/H2/V1_11_3__add_module_md_targetvis__H2.sql: -------------------------------------------------------------------------------- 1 | ALTER TABLE sp_sw_metadata ADD COLUMN target_visible boolean; -------------------------------------------------------------------------------- /hawkbit-repository/hawkbit-repository-jpa-flyway/src/main/resources/db/migration/H2/V1_12_10__change_length_of_target_attributes_key___H2.sql: -------------------------------------------------------------------------------- 1 | ALTER TABLE sp_target_attributes ALTER COLUMN attribute_key VARCHAR(128); -------------------------------------------------------------------------------- /hawkbit-repository/hawkbit-repository-jpa-flyway/src/main/resources/db/migration/H2/V1_12_11__add_auto_assign_action_type___H2.sql: -------------------------------------------------------------------------------- 1 | ALTER TABLE sp_target_filter_query ADD COLUMN auto_assign_action_type integer; -------------------------------------------------------------------------------- /hawkbit-repository/hawkbit-repository-jpa-flyway/src/main/resources/db/migration/H2/V1_12_12__change_length_of_controller_id_and_name___H2.sql: -------------------------------------------------------------------------------- 1 | ALTER TABLE sp_distribution_set ALTER COLUMN name VARCHAR(128); 2 | ALTER TABLE sp_distribution_set_type ALTER COLUMN name VARCHAR(128); 3 | ALTER TABLE sp_distributionset_tag ALTER COLUMN name VARCHAR(128); 4 | ALTER TABLE sp_base_software_module ALTER COLUMN name VARCHAR(128); 5 | ALTER TABLE sp_rollout ALTER COLUMN name VARCHAR(128); 6 | ALTER TABLE sp_rolloutgroup ALTER COLUMN name VARCHAR(128); 7 | ALTER TABLE sp_software_module_type ALTER COLUMN name VARCHAR(128); 8 | ALTER TABLE sp_target ALTER COLUMN name VARCHAR(128); 9 | ALTER TABLE sp_target_filter_query ALTER COLUMN name VARCHAR(128); 10 | ALTER TABLE sp_target_tag ALTER COLUMN name VARCHAR(128); 11 | 12 | 13 | ALTER TABLE sp_target ALTER COLUMN controller_id VARCHAR(256); 14 | -------------------------------------------------------------------------------- /hawkbit-repository/hawkbit-repository-jpa-flyway/src/main/resources/db/migration/H2/V1_12_13__add_action_external_id___H2.sql: -------------------------------------------------------------------------------- 1 | ALTER TABLE sp_action ADD COLUMN external_ref VARCHAR(512); 2 | CREATE INDEX sp_idx_action_external_ref ON sp_action (external_ref); 3 | 4 | -------------------------------------------------------------------------------- /hawkbit-repository/hawkbit-repository-jpa-flyway/src/main/resources/db/migration/H2/V1_12_14__add_sha256_hash___H2.sql: -------------------------------------------------------------------------------- 1 | ALTER TABLE sp_artifact ADD COLUMN sha256_hash CHAR(64); -------------------------------------------------------------------------------- /hawkbit-repository/hawkbit-repository-jpa-flyway/src/main/resources/db/migration/H2/V1_12_15__add_weight___H2.sql: -------------------------------------------------------------------------------- 1 | ALTER TABLE sp_action ADD weight INT; 2 | ALTER TABLE sp_rollout ADD weight INT; 3 | ALTER TABLE sp_target_filter_query ADD auto_assign_weight INT; 4 | -------------------------------------------------------------------------------- /hawkbit-repository/hawkbit-repository-jpa-flyway/src/main/resources/db/migration/H2/V1_12_16__add_action_initiated_by___H2.sql: -------------------------------------------------------------------------------- 1 | ALTER TABLE sp_action ADD COLUMN initiated_by VARCHAR(64) NOT NULL; 2 | ALTER TABLE sp_target_filter_query ADD COLUMN auto_assign_initiated_by VARCHAR(64); 3 | -------------------------------------------------------------------------------- /hawkbit-repository/hawkbit-repository-jpa-flyway/src/main/resources/db/migration/H2/V1_12_17__add_index_target_modified___H2.sql: -------------------------------------------------------------------------------- 1 | CREATE INDEX sp_idx_target_05 ON sp_target (tenant, last_modified_at); -------------------------------------------------------------------------------- /hawkbit-repository/hawkbit-repository-jpa-flyway/src/main/resources/db/migration/H2/V1_12_19__add_valid_flag_to_ds___H2.sql: -------------------------------------------------------------------------------- 1 | ALTER TABLE sp_distribution_set ADD COLUMN valid BOOLEAN; 2 | 3 | UPDATE sp_distribution_set SET valid = 1; -------------------------------------------------------------------------------- /hawkbit-repository/hawkbit-repository-jpa-flyway/src/main/resources/db/migration/H2/V1_12_1__missing_non_null___H2.sql: -------------------------------------------------------------------------------- 1 | ALTER TABLE sp_action_status_messages ALTER detail_message varchar(512) not null; 2 | ALTER TABLE sp_action ALTER distribution_set bigint not null; 3 | ALTER TABLE sp_action ALTER target bigint not null; 4 | ALTER TABLE sp_action ALTER status integer not null; 5 | ALTER TABLE sp_action_status ALTER target_occurred_at bigint not null; 6 | ALTER TABLE sp_action_status ALTER status integer not null; 7 | ALTER TABLE sp_rollout ALTER distribution_set bigint not null; 8 | ALTER TABLE sp_rollout ALTER status integer not null; 9 | ALTER TABLE sp_rolloutgroup ALTER rollout bigint not null; 10 | ALTER TABLE sp_rolloutgroup ALTER status integer not null; 11 | ALTER TABLE sp_artifact ALTER sha1_hash varchar(40) not null; 12 | ALTER TABLE sp_target ALTER controller_id varchar(64) not null; 13 | -------------------------------------------------------------------------------- /hawkbit-repository/hawkbit-repository-jpa-flyway/src/main/resources/db/migration/H2/V1_12_20__add_encryption_flag_to_sm___H2.sql: -------------------------------------------------------------------------------- 1 | ALTER TABLE sp_base_software_module ADD COLUMN encrypted BOOLEAN; 2 | 3 | UPDATE sp_base_software_module SET encrypted = 0; -------------------------------------------------------------------------------- /hawkbit-repository/hawkbit-repository-jpa-flyway/src/main/resources/db/migration/H2/V1_12_21__add_rollouts_status_index___H2.sql: -------------------------------------------------------------------------------- 1 | CREATE INDEX sp_idx_rollout_status_tenant ON sp_rollout (tenant, status); -------------------------------------------------------------------------------- /hawkbit-repository/hawkbit-repository-jpa-flyway/src/main/resources/db/migration/H2/V1_12_22__change_target_type_name_length___H2.sql: -------------------------------------------------------------------------------- 1 | ALTER TABLE sp_target_type ALTER COLUMN name VARCHAR (128); 2 | -------------------------------------------------------------------------------- /hawkbit-repository/hawkbit-repository-jpa-flyway/src/main/resources/db/migration/H2/V1_12_23__add_action_status_code___H2.sql: -------------------------------------------------------------------------------- 1 | ALTER TABLE sp_action_status ADD column code integer; 2 | CREATE INDEX sp_idx_action_status_03 ON sp_action_status (tenant, code); -------------------------------------------------------------------------------- /hawkbit-repository/hawkbit-repository-jpa-flyway/src/main/resources/db/migration/H2/V1_12_24__add_last_action_status_code___H2.sql: -------------------------------------------------------------------------------- 1 | ALTER TABLE sp_action ADD column last_action_status_code integer; -------------------------------------------------------------------------------- /hawkbit-repository/hawkbit-repository-jpa-flyway/src/main/resources/db/migration/H2/V1_12_25__add_confirmation_flag___H2.sql: -------------------------------------------------------------------------------- 1 | ALTER TABLE sp_rolloutgroup ADD column confirmation_required BOOLEAN; 2 | UPDATE sp_rolloutgroup SET confirmation_required = 0; 3 | 4 | ALTER TABLE sp_target_filter_query ADD column confirmation_required BOOLEAN; 5 | UPDATE sp_target_filter_query SET confirmation_required = 0; 6 | 7 | create table sp_target_conf_status 8 | ( 9 | id bigint not null auto_increment, 10 | target_id bigint not null, 11 | initiator varchar(64), 12 | remark VARCHAR(512), 13 | created_at bigint, 14 | created_by varchar(64), 15 | last_modified_at bigint, 16 | last_modified_by varchar(64), 17 | optlock_revision bigint, 18 | tenant varchar(40) not null, 19 | primary key (id) 20 | ); 21 | ALTER TABLE sp_target_conf_status 22 | ADD CONSTRAINT fk_target_auto_conf FOREIGN KEY (target_id) REFERENCES sp_target (id) ON DELETE CASCADE; -------------------------------------------------------------------------------- /hawkbit-repository/hawkbit-repository-jpa-flyway/src/main/resources/db/migration/H2/V1_12_26__add_access_control_context___H2.sql: -------------------------------------------------------------------------------- 1 | ALTER TABLE sp_target_filter_query ADD COLUMN access_control_context VARCHAR(4096); 2 | ALTER TABLE sp_rollout ADD COLUMN access_control_context VARCHAR(4096); -------------------------------------------------------------------------------- /hawkbit-repository/hawkbit-repository-jpa-flyway/src/main/resources/db/migration/H2/V1_12_27__target_type_inherit_type___H2.sql: -------------------------------------------------------------------------------- 1 | ALTER TABLE sp_target_type ADD COLUMN type_key VARCHAR (64) NOT NULL DEFAULT ('_'); 2 | UPDATE sp_target_type SET type_key = name; 3 | ALTER TABLE sp_target_type ADD CONSTRAINT uk_target_type_key UNIQUE (type_key, tenant); -------------------------------------------------------------------------------- /hawkbit-repository/hawkbit-repository-jpa-flyway/src/main/resources/db/migration/H2/V1_12_28__add_dynamic_rollout___H2.sql: -------------------------------------------------------------------------------- 1 | ALTER TABLE sp_rollout ADD COLUMN is_dynamic BOOLEAN; 2 | ALTER TABLE sp_rolloutgroup ADD COLUMN is_dynamic BOOLEAN NOT NULL DEFAULT false; 3 | 4 | UPDATE sp_rollout SET weight = 1000 WHERE weight IS NULL; 5 | UPDATE sp_action SET weight = 1000 WHERE weight IS NULL; 6 | UPDATE sp_target_filter_query SET auto_assign_weight = 1000 WHERE auto_assign_weight IS NULL; 7 | ALTER TABLE sp_rollout ALTER COLUMN weight INT NOT NULL; 8 | ALTER TABLE sp_action ALTER COLUMN weight INT NOT NULL; 9 | ALTER TABLE sp_target_filter_query ALTER COLUMN auto_assign_weight INT NOT NULL; -------------------------------------------------------------------------------- /hawkbit-repository/hawkbit-repository-jpa-flyway/src/main/resources/db/migration/H2/V1_12_29__add_ds_sm_locked___H2.sql: -------------------------------------------------------------------------------- 1 | ALTER TABLE sp_base_software_module ADD COLUMN locked BOOLEAN NOT NULL DEFAULT true; 2 | ALTER TABLE sp_distribution_set ADD COLUMN locked BOOLEAN NOT NULL DEFAULT true; -------------------------------------------------------------------------------- /hawkbit-repository/hawkbit-repository-jpa-flyway/src/main/resources/db/migration/H2/V1_12_2__missing_non_null_enum___H2.sql: -------------------------------------------------------------------------------- 1 | ALTER TABLE sp_target ALTER update_status integer not null; 2 | ALTER TABLE sp_rollout ALTER action_type integer not null; 3 | ALTER TABLE sp_action ALTER action_type integer not null; 4 | -------------------------------------------------------------------------------- /hawkbit-repository/hawkbit-repository-jpa-flyway/src/main/resources/db/migration/H2/V1_12_30__add_distrubuted_lock___H2.sql: -------------------------------------------------------------------------------- 1 | -- Table and fields in upper case as Spring queries it that way 2 | CREATE TABLE SP_LOCK ( 3 | LOCK_KEY CHAR(36) NOT NULL, 4 | REGION VARCHAR(100) NOT NULL, 5 | CLIENT_ID CHAR(36), 6 | CREATED_DATE TIMESTAMP NOT NULL, 7 | constraint SP_LOCK_PK primary key (LOCK_KEY, REGION) 8 | ); -------------------------------------------------------------------------------- /hawkbit-repository/hawkbit-repository-jpa-flyway/src/main/resources/db/migration/H2/V1_12_31__add_type_to_ds_index___H2.sql: -------------------------------------------------------------------------------- 1 | alter table sp_distribution_set drop constraint uk_distrib_set; 2 | alter table sp_distribution_set add constraint uk_distrib_set unique (tenant, name, version, ds_id); -------------------------------------------------------------------------------- /hawkbit-repository/hawkbit-repository-jpa-flyway/src/main/resources/db/migration/H2/V1_12_3__cascade_delete___H2.sql: -------------------------------------------------------------------------------- 1 | alter table sp_rolloutgroup drop constraint fk_rolloutgroup_rolloutgroup; -------------------------------------------------------------------------------- /hawkbit-repository/hawkbit-repository-jpa-flyway/src/main/resources/db/migration/H2/V1_12_4__add_maintenance_window___H2.sql: -------------------------------------------------------------------------------- 1 | ALTER TABLE sp_action ADD column maintenance_cron_schedule VARCHAR(40); 2 | ALTER TABLE sp_action ADD column maintenance_duration VARCHAR(40); 3 | ALTER TABLE sp_action ADD column maintenance_time_zone VARCHAR(40); 4 | -------------------------------------------------------------------------------- /hawkbit-repository/hawkbit-repository-jpa-flyway/src/main/resources/db/migration/H2/V1_12_6__add_index___H2.sql: -------------------------------------------------------------------------------- 1 | CREATE INDEX sp_idx_target_tag_01 ON sp_target_tag (tenant, name); 2 | CREATE INDEX sp_idx_distribution_set_tag_01 ON sp_distributionset_tag (tenant, name); -------------------------------------------------------------------------------- /hawkbit-repository/hawkbit-repository-jpa-flyway/src/main/resources/db/migration/H2/V1_12_7__add_rollout_approval_fields___H2.sql: -------------------------------------------------------------------------------- 1 | ALTER TABLE sp_rollout ADD column approval_decided_by varchar(40); 2 | ALTER TABLE sp_rollout ADD column approval_remark varchar(255); -------------------------------------------------------------------------------- /hawkbit-repository/hawkbit-repository-jpa-flyway/src/main/resources/db/migration/H2/V1_12_9__add_target_metadata___H2.sql: -------------------------------------------------------------------------------- 1 | create table sp_target_metadata ( 2 | meta_key varchar(128) not null, 3 | meta_value varchar(4000), 4 | target_id bigint not null, 5 | primary key (target_id, meta_key) 6 | ); 7 | 8 | alter table sp_target_metadata 9 | add constraint fk_metadata_target 10 | foreign key (target_id) 11 | references sp_target 12 | on delete cascade; -------------------------------------------------------------------------------- /hawkbit-repository/hawkbit-repository-jpa-flyway/src/main/resources/db/migration/H2/V1_2_0__update_target_info_for_message___H2.sql: -------------------------------------------------------------------------------- 1 | DROP INDEX sp_idx_target_info_01; 2 | 3 | ALTER TABLE sp_target_info ALTER COLUMN ip_address RENAME TO address; 4 | ALTER TABLE sp_target_info ALTER COLUMN address VARCHAR(512); 5 | 6 | UPDATE sp_target_info 7 | SET address = CONCAT('http://',(SELECT address 8 | FROM sp_target_info i 9 | WHERE sp_target_info.target_id = i.target_id)) 10 | WHERE EXISTS(SELECT target_id 11 | FROM sp_target_info i 12 | WHERE sp_target_info.target_id = i.target_id) 13 | AND address != null; -------------------------------------------------------------------------------- /hawkbit-repository/hawkbit-repository-jpa-flyway/src/main/resources/db/migration/H2/V1_4_1__cascade_delete___H2.sql: -------------------------------------------------------------------------------- 1 | alter table sp_target_attributes drop constraint fk_targ_attrib_target; 2 | alter table sp_target_attributes 3 | add constraint fk_targ_attrib_target 4 | foreign key (target_id) 5 | references sp_target_info 6 | on delete cascade; -------------------------------------------------------------------------------- /hawkbit-repository/hawkbit-repository-jpa-flyway/src/main/resources/db/migration/H2/V1_5_0__target_filter_query___H2.sql: -------------------------------------------------------------------------------- 1 | create table sp_target_filter_query ( 2 | id bigint generated by default as identity, 3 | created_at bigint, 4 | created_by varchar(40), 5 | last_modified_at bigint, 6 | last_modified_by varchar(40), 7 | optlock_revision bigint, 8 | tenant varchar(40) not null, 9 | name varchar(64) not null, 10 | query varchar(1024) not null, 11 | primary key (id) 12 | ); 13 | 14 | create index sp_idx_target_filter_query_01 on sp_target_filter_query (tenant, name); -------------------------------------------------------------------------------- /hawkbit-repository/hawkbit-repository-jpa-flyway/src/main/resources/db/migration/H2/V1_7_0__swmType_maxAssignment_greater_0__H2.sql: -------------------------------------------------------------------------------- 1 | Update sp_software_module_type set max_ds_assignments = 1 where max_ds_assignments < 1; -------------------------------------------------------------------------------- /hawkbit-repository/hawkbit-repository-jpa-flyway/src/main/resources/db/migration/H2/V1_7_1__reduce_length_enums___H2.sql: -------------------------------------------------------------------------------- 1 | ALTER TABLE sp_target_info ALTER update_status VARCHAR(16) not null; 2 | ALTER TABLE sp_action ALTER action_type VARCHAR(16) not null; 3 | ALTER TABLE sp_rollout ALTER action_type VARCHAR(16) not null; 4 | ALTER TABLE sp_tenant_configuration ALTER conf_key VARCHAR(128) not null; 5 | ALTER TABLE sp_tenant_configuration ALTER conf_value VARCHAR(512) not null; 6 | -------------------------------------------------------------------------------- /hawkbit-repository/hawkbit-repository-jpa-flyway/src/main/resources/db/migration/H2/V1_8_0__auto_assign_ds_filter__H2.sql: -------------------------------------------------------------------------------- 1 | ALTER TABLE sp_target_filter_query 2 | ADD column auto_assign_distribution_set BIGINT; 3 | 4 | ALTER TABLE sp_target_filter_query 5 | ADD CONSTRAINT fk_filter_auto_assign_ds 6 | FOREIGN KEY (auto_assign_distribution_set) 7 | REFERENCES sp_distribution_set 8 | ON DELETE SET NULL; 9 | -------------------------------------------------------------------------------- /hawkbit-repository/hawkbit-repository-jpa-flyway/src/main/resources/db/migration/H2/V1_8_2__remove_external_artifact___H2.sql: -------------------------------------------------------------------------------- 1 | DROP TABLE sp_external_artifact; 2 | DROP TABLE sp_external_provider; 3 | -------------------------------------------------------------------------------- /hawkbit-repository/hawkbit-repository-jpa-flyway/src/main/resources/db/migration/H2/V1_9_0__add_rollout_groups_created___H2.sql: -------------------------------------------------------------------------------- 1 | ALTER TABLE sp_rollout ADD column rollout_groups_created BIGINT; 2 | -------------------------------------------------------------------------------- /hawkbit-repository/hawkbit-repository-jpa-flyway/src/main/resources/db/migration/MYSQL/V1_10_0__advanced_rolloutgroup__MYSQL.sql: -------------------------------------------------------------------------------- 1 | ALTER TABLE sp_rolloutgroup 2 | ADD COLUMN target_percentage FLOAT; 3 | ALTER TABLE sp_rolloutgroup 4 | ADD COLUMN target_filter VARCHAR (1024); 5 | -------------------------------------------------------------------------------- /hawkbit-repository/hawkbit-repository-jpa-flyway/src/main/resources/db/migration/MYSQL/V1_10_1__consolidate_artifact_sha1__MYSQL.sql: -------------------------------------------------------------------------------- 1 | ALTER TABLE sp_artifact DROP COLUMN sha1_hash; 2 | ALTER TABLE sp_artifact CHANGE gridfs_file_name sha1_hash varchar(40) not null; 3 | CREATE INDEX sp_idx_artifact_02 ON sp_artifact (tenant, sha1_hash); -------------------------------------------------------------------------------- /hawkbit-repository/hawkbit-repository-jpa-flyway/src/main/resources/db/migration/MYSQL/V1_10_2__rollout_auto_start__MYSQL.sql: -------------------------------------------------------------------------------- 1 | ALTER TABLE sp_rollout 2 | ADD COLUMN start_at BIGINT; 3 | -------------------------------------------------------------------------------- /hawkbit-repository/hawkbit-repository-jpa-flyway/src/main/resources/db/migration/MYSQL/V1_11_1__target_filter_query_UQ___MYSQL.sql: -------------------------------------------------------------------------------- 1 | alter table sp_target_filter_query 2 | add constraint uk_tenant_custom_filter_name unique (name, tenant); 3 | -------------------------------------------------------------------------------- /hawkbit-repository/hawkbit-repository-jpa-flyway/src/main/resources/db/migration/MYSQL/V1_11_2__remove_unused_idexes___MYSQL.sql: -------------------------------------------------------------------------------- 1 | ALTER TABLE sp_action_status DROP INDEX sp_idx_action_status_01; 2 | ALTER TABLE sp_rollout DROP INDEX sp_idx_rollout_01; 3 | ALTER TABLE sp_rolloutgroup DROP INDEX sp_idx_rolloutgroup_01; 4 | ALTER TABLE sp_target DROP INDEX sp_idx_target_02; 5 | ALTER TABLE sp_target_filter_query DROP INDEX sp_idx_target_filter_query_01; 6 | ALTER TABLE sp_distribution_set DROP INDEX sp_idx_distribution_set_01; 7 | ALTER TABLE sp_distribution_set DROP INDEX sp_idx_distribution_set_02; 8 | CREATE INDEX sp_idx_distribution_set_01 ON sp_distribution_set (tenant, deleted, complete); 9 | -------------------------------------------------------------------------------- /hawkbit-repository/hawkbit-repository-jpa-flyway/src/main/resources/db/migration/MYSQL/V1_11_3__add_module_md_targetvis__MYSQL.sql: -------------------------------------------------------------------------------- 1 | ALTER TABLE sp_sw_metadata ADD COLUMN target_visible bit; -------------------------------------------------------------------------------- /hawkbit-repository/hawkbit-repository-jpa-flyway/src/main/resources/db/migration/MYSQL/V1_12_10__change_length_of_target_attributes_key___MYSQL.sql: -------------------------------------------------------------------------------- 1 | ALTER TABLE sp_target_attributes MODIFY attribute_key VARCHAR(128); -------------------------------------------------------------------------------- /hawkbit-repository/hawkbit-repository-jpa-flyway/src/main/resources/db/migration/MYSQL/V1_12_11__add_auto_assign_action_type___MYSQL.sql: -------------------------------------------------------------------------------- 1 | ALTER TABLE sp_target_filter_query ADD COLUMN auto_assign_action_type integer; -------------------------------------------------------------------------------- /hawkbit-repository/hawkbit-repository-jpa-flyway/src/main/resources/db/migration/MYSQL/V1_12_12__change_length_of_controller_id_and_name___MYSQL.sql: -------------------------------------------------------------------------------- 1 | ALTER TABLE sp_distribution_set MODIFY name VARCHAR(128); 2 | ALTER TABLE sp_distribution_set_type MODIFY name VARCHAR(128); 3 | ALTER TABLE sp_distributionset_tag MODIFY name VARCHAR(128); 4 | ALTER TABLE sp_base_software_module MODIFY name VARCHAR(128); 5 | ALTER TABLE sp_rollout MODIFY name VARCHAR(128); 6 | ALTER TABLE sp_rolloutgroup MODIFY name VARCHAR(128); 7 | ALTER TABLE sp_software_module_type MODIFY name VARCHAR(128); 8 | ALTER TABLE sp_target MODIFY name VARCHAR(128); 9 | ALTER TABLE sp_target_filter_query MODIFY name VARCHAR(128); 10 | ALTER TABLE sp_target_tag MODIFY name VARCHAR(128); 11 | 12 | 13 | ALTER TABLE sp_target MODIFY controller_id VARCHAR(256); 14 | -------------------------------------------------------------------------------- /hawkbit-repository/hawkbit-repository-jpa-flyway/src/main/resources/db/migration/MYSQL/V1_12_13__add_action_external_id___MYSQL.sql: -------------------------------------------------------------------------------- 1 | ALTER TABLE sp_action ADD COLUMN external_ref VARCHAR(512); 2 | CREATE INDEX sp_idx_action_external_ref ON sp_action (external_ref); 3 | 4 | -------------------------------------------------------------------------------- /hawkbit-repository/hawkbit-repository-jpa-flyway/src/main/resources/db/migration/MYSQL/V1_12_14__add_sha256_hash___MYSQL.sql: -------------------------------------------------------------------------------- 1 | ALTER TABLE sp_artifact ADD COLUMN sha256_hash CHAR(64); -------------------------------------------------------------------------------- /hawkbit-repository/hawkbit-repository-jpa-flyway/src/main/resources/db/migration/MYSQL/V1_12_15__add_weight___MYSQL.sql: -------------------------------------------------------------------------------- 1 | ALTER TABLE sp_action ADD weight INT; 2 | ALTER TABLE sp_rollout ADD weight INT; 3 | ALTER TABLE sp_target_filter_query ADD auto_assign_weight INT; 4 | -------------------------------------------------------------------------------- /hawkbit-repository/hawkbit-repository-jpa-flyway/src/main/resources/db/migration/MYSQL/V1_12_16__add_action_initiated_by___MYSQL.sql: -------------------------------------------------------------------------------- 1 | ALTER TABLE sp_action ADD COLUMN initiated_by VARCHAR(64) NOT NULL; 2 | ALTER TABLE sp_target_filter_query ADD COLUMN auto_assign_initiated_by VARCHAR(64); 3 | -------------------------------------------------------------------------------- /hawkbit-repository/hawkbit-repository-jpa-flyway/src/main/resources/db/migration/MYSQL/V1_12_17__add_index_target_modified___MYSQL.sql: -------------------------------------------------------------------------------- 1 | CREATE INDEX sp_idx_target_05 ON sp_target (tenant, last_modified_at); -------------------------------------------------------------------------------- /hawkbit-repository/hawkbit-repository-jpa-flyway/src/main/resources/db/migration/MYSQL/V1_12_19__add_valid_flag_to_ds___MYSQL.sql: -------------------------------------------------------------------------------- 1 | ALTER TABLE sp_distribution_set ADD COLUMN valid BOOLEAN; 2 | 3 | UPDATE sp_distribution_set SET valid = 1; -------------------------------------------------------------------------------- /hawkbit-repository/hawkbit-repository-jpa-flyway/src/main/resources/db/migration/MYSQL/V1_12_1__missing_non_null___MYSQL.sql: -------------------------------------------------------------------------------- 1 | ALTER TABLE sp_action_status_messages CHANGE COLUMN detail_message detail_message varchar(512) not null; 2 | ALTER TABLE sp_action CHANGE COLUMN distribution_set distribution_set bigint not null; 3 | ALTER TABLE sp_action CHANGE COLUMN target target bigint not null; 4 | ALTER TABLE sp_action CHANGE COLUMN status status integer not null; 5 | ALTER TABLE sp_action_status CHANGE COLUMN target_occurred_at target_occurred_at bigint not null; 6 | ALTER TABLE sp_action_status CHANGE COLUMN status status integer not null; 7 | ALTER TABLE sp_rollout CHANGE COLUMN distribution_set distribution_set bigint not null; 8 | ALTER TABLE sp_rollout CHANGE COLUMN status status integer not null; 9 | ALTER TABLE sp_rolloutgroup CHANGE COLUMN rollout rollout bigint not null; 10 | ALTER TABLE sp_rolloutgroup CHANGE COLUMN status status integer not null; 11 | ALTER TABLE sp_artifact CHANGE COLUMN sha1_hash sha1_hash varchar(40) not null; 12 | ALTER TABLE sp_target CHANGE COLUMN controller_id controller_id varchar(64) not null; -------------------------------------------------------------------------------- /hawkbit-repository/hawkbit-repository-jpa-flyway/src/main/resources/db/migration/MYSQL/V1_12_20__add_encryption_flag_to_sm___MYSQL.sql: -------------------------------------------------------------------------------- 1 | ALTER TABLE sp_base_software_module ADD COLUMN encrypted BOOLEAN; 2 | 3 | UPDATE sp_base_software_module SET encrypted = 0; -------------------------------------------------------------------------------- /hawkbit-repository/hawkbit-repository-jpa-flyway/src/main/resources/db/migration/MYSQL/V1_12_21__add_rollouts_status_index___MYSQL.sql: -------------------------------------------------------------------------------- 1 | CREATE INDEX sp_idx_rollout_status_tenant ON sp_rollout (tenant, status); -------------------------------------------------------------------------------- /hawkbit-repository/hawkbit-repository-jpa-flyway/src/main/resources/db/migration/MYSQL/V1_12_22__change_target_type_name_length___MYSQL.sql: -------------------------------------------------------------------------------- 1 | ALTER TABLE sp_target_type MODIFY name VARCHAR(128); -------------------------------------------------------------------------------- /hawkbit-repository/hawkbit-repository-jpa-flyway/src/main/resources/db/migration/MYSQL/V1_12_23__add_action_status_code___MYSQL.sql: -------------------------------------------------------------------------------- 1 | ALTER TABLE sp_action_status ADD COLUMN code integer; 2 | CREATE INDEX sp_idx_action_status_03 ON sp_action_status (tenant, code); -------------------------------------------------------------------------------- /hawkbit-repository/hawkbit-repository-jpa-flyway/src/main/resources/db/migration/MYSQL/V1_12_24__add_last_action_status_code___MYSQL.sql: -------------------------------------------------------------------------------- 1 | ALTER TABLE sp_action ADD COLUMN last_action_status_code integer; -------------------------------------------------------------------------------- /hawkbit-repository/hawkbit-repository-jpa-flyway/src/main/resources/db/migration/MYSQL/V1_12_25__add_confirmation_flag___MYSQL.sql: -------------------------------------------------------------------------------- 1 | ALTER TABLE sp_rolloutgroup ADD column confirmation_required BOOLEAN; 2 | UPDATE sp_rolloutgroup SET confirmation_required = 0; 3 | 4 | ALTER TABLE sp_target_filter_query ADD column confirmation_required BOOLEAN; 5 | UPDATE sp_target_filter_query SET confirmation_required = 0; 6 | 7 | create table sp_target_conf_status 8 | ( 9 | id bigint not null auto_increment, 10 | target_id bigint not null, 11 | initiator varchar(64), 12 | remark varchar(512), 13 | created_at bigint, 14 | created_by varchar(64), 15 | last_modified_at bigint, 16 | last_modified_by varchar(64), 17 | optlock_revision bigint, 18 | tenant varchar(40) not null, 19 | primary key (id) 20 | ); 21 | ALTER TABLE sp_target_conf_status 22 | ADD CONSTRAINT fk_target_auto_conf FOREIGN KEY (target_id) REFERENCES sp_target (id) ON DELETE CASCADE; 23 | -------------------------------------------------------------------------------- /hawkbit-repository/hawkbit-repository-jpa-flyway/src/main/resources/db/migration/MYSQL/V1_12_26__add_access_control_context___MYSQL.sql: -------------------------------------------------------------------------------- 1 | ALTER TABLE sp_target_filter_query ADD COLUMN access_control_context VARCHAR(4096); 2 | ALTER TABLE sp_rollout ADD COLUMN access_control_context VARCHAR(4096); -------------------------------------------------------------------------------- /hawkbit-repository/hawkbit-repository-jpa-flyway/src/main/resources/db/migration/MYSQL/V1_12_27__target_type_inherit_type___MYSQL.sql: -------------------------------------------------------------------------------- 1 | ALTER TABLE sp_target_type ADD COLUMN type_key VARCHAR (64) NOT NULL DEFAULT ('_'); 2 | UPDATE sp_target_type SET type_key = name; 3 | ALTER TABLE sp_target_type ADD CONSTRAINT uk_target_type_key UNIQUE (type_key, tenant); -------------------------------------------------------------------------------- /hawkbit-repository/hawkbit-repository-jpa-flyway/src/main/resources/db/migration/MYSQL/V1_12_28__add_dynamic_rollout___MYSQL.sql: -------------------------------------------------------------------------------- 1 | ALTER TABLE sp_rollout ADD COLUMN is_dynamic BOOLEAN; 2 | ALTER TABLE sp_rolloutgroup ADD COLUMN is_dynamic BOOLEAN NOT NULL DEFAULT false; 3 | 4 | UPDATE sp_rollout SET weight = 1000 WHERE weight IS NULL; 5 | UPDATE sp_action SET weight = 1000 WHERE weight IS NULL; 6 | UPDATE sp_target_filter_query SET auto_assign_weight = 1000 WHERE auto_assign_weight IS NULL; 7 | ALTER TABLE sp_rollout MODIFY COLUMN weight INT NOT NULL; 8 | ALTER TABLE sp_action MODIFY COLUMN weight INT NOT NULL; 9 | ALTER TABLE sp_target_filter_query MODIFY COLUMN auto_assign_weight INT NOT NULL; -------------------------------------------------------------------------------- /hawkbit-repository/hawkbit-repository-jpa-flyway/src/main/resources/db/migration/MYSQL/V1_12_29__add_ds_sm_locked___MYSQL.sql: -------------------------------------------------------------------------------- 1 | ALTER TABLE sp_base_software_module ADD COLUMN locked BOOLEAN NOT NULL DEFAULT true; 2 | ALTER TABLE sp_distribution_set ADD COLUMN locked BOOLEAN NOT NULL DEFAULT true; -------------------------------------------------------------------------------- /hawkbit-repository/hawkbit-repository-jpa-flyway/src/main/resources/db/migration/MYSQL/V1_12_2__missing_non_null_enum___MYSQL.sql: -------------------------------------------------------------------------------- 1 | ALTER TABLE sp_target CHANGE COLUMN update_status update_status integer not null; 2 | ALTER TABLE sp_rollout CHANGE COLUMN action_type action_type integer not null; 3 | ALTER TABLE sp_action CHANGE COLUMN action_type action_type integer not null; -------------------------------------------------------------------------------- /hawkbit-repository/hawkbit-repository-jpa-flyway/src/main/resources/db/migration/MYSQL/V1_12_30__add_distrubuted_lock___MYSQL.sql: -------------------------------------------------------------------------------- 1 | -- Table and fields in upper case as Spring queries it that way 2 | CREATE TABLE SP_LOCK ( 3 | LOCK_KEY CHAR(36) NOT NULL, 4 | REGION VARCHAR(100) NOT NULL, 5 | CLIENT_ID CHAR(36), 6 | CREATED_DATE DATETIME(6) NOT NULL, 7 | constraint SP_LOCK_PK primary key (LOCK_KEY, REGION) 8 | ); -------------------------------------------------------------------------------- /hawkbit-repository/hawkbit-repository-jpa-flyway/src/main/resources/db/migration/MYSQL/V1_12_31__add_type_to_ds_index___MYSQL.sql: -------------------------------------------------------------------------------- 1 | alter table sp_distribution_set drop constraint uk_distrib_set; 2 | alter table sp_distribution_set add constraint uk_distrib_set unique (tenant, name, version, ds_id); -------------------------------------------------------------------------------- /hawkbit-repository/hawkbit-repository-jpa-flyway/src/main/resources/db/migration/MYSQL/V1_12_3__cascade_delete___MYSQL.sql: -------------------------------------------------------------------------------- 1 | alter table sp_rolloutgroup drop FOREIGN KEY fk_rolloutgroup_rolloutgroup; -------------------------------------------------------------------------------- /hawkbit-repository/hawkbit-repository-jpa-flyway/src/main/resources/db/migration/MYSQL/V1_12_4__add_maintenance_window___MYSQL.sql: -------------------------------------------------------------------------------- 1 | ALTER TABLE sp_action ADD column maintenance_cron_schedule VARCHAR(40); 2 | ALTER TABLE sp_action ADD column maintenance_duration VARCHAR(40); 3 | ALTER TABLE sp_action ADD column maintenance_time_zone VARCHAR(40); 4 | -------------------------------------------------------------------------------- /hawkbit-repository/hawkbit-repository-jpa-flyway/src/main/resources/db/migration/MYSQL/V1_12_6__add_index___MYSQL.sql: -------------------------------------------------------------------------------- 1 | CREATE INDEX sp_idx_target_tag_01 ON sp_target_tag (tenant, name); 2 | CREATE INDEX sp_idx_distribution_set_tag_01 ON sp_distributionset_tag (tenant, name); -------------------------------------------------------------------------------- /hawkbit-repository/hawkbit-repository-jpa-flyway/src/main/resources/db/migration/MYSQL/V1_12_7__add_rollout_approval_fields___MYSQL.sql: -------------------------------------------------------------------------------- 1 | ALTER TABLE sp_rollout ADD column approval_decided_by varchar(40); 2 | ALTER TABLE sp_rollout ADD column approval_remark varchar(255); -------------------------------------------------------------------------------- /hawkbit-repository/hawkbit-repository-jpa-flyway/src/main/resources/db/migration/MYSQL/V1_12_9__add_target_metadata___MYSQL.sql: -------------------------------------------------------------------------------- 1 | create table sp_target_metadata ( 2 | meta_key varchar(128) not null, 3 | meta_value varchar(4000), 4 | target_id bigint not null, 5 | primary key (target_id, meta_key) 6 | ); 7 | 8 | alter table sp_target_metadata 9 | add constraint fk_metadata_target 10 | foreign key (target_id) 11 | references sp_target (id) 12 | on delete cascade; -------------------------------------------------------------------------------- /hawkbit-repository/hawkbit-repository-jpa-flyway/src/main/resources/db/migration/MYSQL/V1_2_0__update_target_info_for_message___MYSQL.sql: -------------------------------------------------------------------------------- 1 | DROP INDEX sp_idx_target_info_01 ON sp_target_info; 2 | 3 | ALTER TABLE sp_target_info 4 | CHANGE ip_address address VARCHAR(512); 5 | 6 | UPDATE sp_target_info t1, sp_target_info t2 7 | SET t1.address = CONCAT('http://',t2.address) 8 | WHERE t1.target_id = t2.target_id AND t2.address is not null -------------------------------------------------------------------------------- /hawkbit-repository/hawkbit-repository-jpa-flyway/src/main/resources/db/migration/MYSQL/V1_4_1__cascade_delete___MYSQL.sql: -------------------------------------------------------------------------------- 1 | alter table sp_target_attributes drop FOREIGN KEY fk_targ_attrib_target; 2 | alter table sp_target_attributes 3 | add constraint fk_targ_attrib_target 4 | foreign key (target_id) 5 | references sp_target_info (target_id) 6 | on delete cascade; -------------------------------------------------------------------------------- /hawkbit-repository/hawkbit-repository-jpa-flyway/src/main/resources/db/migration/MYSQL/V1_5_0__target_filter_query___MYSQL.sql: -------------------------------------------------------------------------------- 1 | create table sp_target_filter_query ( 2 | id bigint not null auto_increment, 3 | created_at bigint, 4 | created_by varchar(40), 5 | last_modified_at bigint, 6 | last_modified_by varchar(40), 7 | optlock_revision bigint, 8 | tenant varchar(40) not null, 9 | name varchar(64) not null, 10 | query varchar(1024) not null, 11 | primary key (id) 12 | ); 13 | 14 | 15 | create index sp_idx_target_filter_query_01 on sp_target_filter_query (tenant, name); 16 | -------------------------------------------------------------------------------- /hawkbit-repository/hawkbit-repository-jpa-flyway/src/main/resources/db/migration/MYSQL/V1_7_0__swmType_maxAssignment_greater_0__MYSQL.sql: -------------------------------------------------------------------------------- 1 | Update sp_software_module_type set max_ds_assignments = 1 where max_ds_assignments < 1; -------------------------------------------------------------------------------- /hawkbit-repository/hawkbit-repository-jpa-flyway/src/main/resources/db/migration/MYSQL/V1_7_1__reduce_length_enums___MYSQL.sql: -------------------------------------------------------------------------------- 1 | ALTER TABLE sp_target_info MODIFY update_status VARCHAR(16) not null; 2 | ALTER TABLE sp_action MODIFY action_type VARCHAR(16) not null; 3 | ALTER TABLE sp_rollout MODIFY action_type VARCHAR(16) not null; 4 | ALTER TABLE sp_tenant_configuration MODIFY conf_key VARCHAR(128) not null; 5 | ALTER TABLE sp_tenant_configuration MODIFY conf_value VARCHAR(512) not null; -------------------------------------------------------------------------------- /hawkbit-repository/hawkbit-repository-jpa-flyway/src/main/resources/db/migration/MYSQL/V1_8_0__auto_assign_ds_filter__MYSQL.sql: -------------------------------------------------------------------------------- 1 | ALTER TABLE sp_target_filter_query 2 | ADD COLUMN auto_assign_distribution_set BIGINT; 3 | 4 | ALTER TABLE sp_target_filter_query 5 | ADD CONSTRAINT fk_filter_auto_assign_ds 6 | FOREIGN KEY (auto_assign_distribution_set) 7 | REFERENCES sp_distribution_set (id) 8 | ON DELETE SET NULL; 9 | -------------------------------------------------------------------------------- /hawkbit-repository/hawkbit-repository-jpa-flyway/src/main/resources/db/migration/MYSQL/V1_8_2__remove_external_artifact___MYSQL.sql: -------------------------------------------------------------------------------- 1 | DROP TABLE sp_external_artifact; 2 | DROP TABLE sp_external_provider; 3 | -------------------------------------------------------------------------------- /hawkbit-repository/hawkbit-repository-jpa-flyway/src/main/resources/db/migration/MYSQL/V1_9_0__add_rollout_groups_created___MYSQL.sql: -------------------------------------------------------------------------------- 1 | ALTER TABLE sp_rollout ADD column rollout_groups_created BIGINT; 2 | -------------------------------------------------------------------------------- /hawkbit-repository/hawkbit-repository-jpa-flyway/src/main/resources/db/migration/POSTGRESQL/V1_12_16__add_action_initiated_by___POSTGRESQL.sql: -------------------------------------------------------------------------------- 1 | ALTER TABLE sp_action 2 | ADD COLUMN initiated_by VARCHAR (64) NOT NULL DEFAULT ''; 3 | ALTER TABLE sp_action 4 | ALTER COLUMN initiated_by DROP DEFAULT; 5 | 6 | ALTER TABLE sp_target_filter_query 7 | ADD COLUMN auto_assign_initiated_by VARCHAR (64); -------------------------------------------------------------------------------- /hawkbit-repository/hawkbit-repository-jpa-flyway/src/main/resources/db/migration/POSTGRESQL/V1_12_17__add_index_target_modified___POSTGRESQL.sql: -------------------------------------------------------------------------------- 1 | CREATE INDEX sp_idx_target_05 2 | ON sp_target 3 | USING BTREE (tenant, last_modified_at); -------------------------------------------------------------------------------- /hawkbit-repository/hawkbit-repository-jpa-flyway/src/main/resources/db/migration/POSTGRESQL/V1_12_19__add_valid_flag_to_ds___POSTGRESQL.sql: -------------------------------------------------------------------------------- 1 | ALTER TABLE sp_distribution_set ADD COLUMN valid BOOLEAN; 2 | 3 | UPDATE sp_distribution_set SET valid = TRUE; -------------------------------------------------------------------------------- /hawkbit-repository/hawkbit-repository-jpa-flyway/src/main/resources/db/migration/POSTGRESQL/V1_12_20__add_encryption_flag_to_sm___POSTGRESQL.sql: -------------------------------------------------------------------------------- 1 | ALTER TABLE sp_base_software_module ADD COLUMN encrypted BOOLEAN; 2 | 3 | UPDATE sp_base_software_module SET encrypted = FALSE; -------------------------------------------------------------------------------- /hawkbit-repository/hawkbit-repository-jpa-flyway/src/main/resources/db/migration/POSTGRESQL/V1_12_21__add_rollouts_status_index___POSTGRESQL.sql: -------------------------------------------------------------------------------- 1 | CREATE INDEX sp_idx_rollout_status_tenant 2 | ON sp_rollout 3 | USING BTREE (tenant, status); -------------------------------------------------------------------------------- /hawkbit-repository/hawkbit-repository-jpa-flyway/src/main/resources/db/migration/POSTGRESQL/V1_12_22__change_target_type_name_length___POSTGRESQL.sql: -------------------------------------------------------------------------------- 1 | ALTER TABLE sp_target_type ALTER COLUMN name TYPE VARCHAR (128); -------------------------------------------------------------------------------- /hawkbit-repository/hawkbit-repository-jpa-flyway/src/main/resources/db/migration/POSTGRESQL/V1_12_23__add_action_status_code___POSTGRESQL.sql: -------------------------------------------------------------------------------- 1 | ALTER TABLE sp_action_status ADD COLUMN code INTEGER; 2 | CREATE INDEX sp_idx_action_status_03 3 | ON sp_action_status 4 | USING BTREE (tenant, code); -------------------------------------------------------------------------------- /hawkbit-repository/hawkbit-repository-jpa-flyway/src/main/resources/db/migration/POSTGRESQL/V1_12_24__add_last_action_status_code___POSTGRESQL.sql: -------------------------------------------------------------------------------- 1 | ALTER TABLE sp_action ADD last_action_status_code INTEGER; -------------------------------------------------------------------------------- /hawkbit-repository/hawkbit-repository-jpa-flyway/src/main/resources/db/migration/POSTGRESQL/V1_12_25__add_confirmation_flag___POSTGRESQL.sql: -------------------------------------------------------------------------------- 1 | ALTER TABLE sp_rolloutgroup 2 | ADD COLUMN confirmation_required BOOLEAN; 3 | ALTER TABLE sp_target_filter_query 4 | ADD COLUMN confirmation_required BOOLEAN; 5 | 6 | UPDATE sp_rolloutgroup SET confirmation_required = FALSE; 7 | UPDATE sp_target_filter_query SET confirmation_required = FALSE; 8 | 9 | CREATE TABLE sp_target_conf_status 10 | ( 11 | id BIGSERIAL, 12 | target_id BIGINT NOT NULL, 13 | initiator VARCHAR(64), 14 | remark VARCHAR(512), 15 | tenant VARCHAR(40) NOT NULL, 16 | created_at BIGINT NOT NULL, 17 | created_by VARCHAR(64) NOT NULL, 18 | last_modified_at BIGINT NOT NULL, 19 | last_modified_by VARCHAR(64) NOT NULL, 20 | optlock_revision BIGINT NULL 21 | ); 22 | 23 | 24 | ALTER TABLE sp_target_conf_status 25 | ADD CONSTRAINT pk_sp_target_conf_status PRIMARY KEY (id); 26 | 27 | -------------------------------------------------------------------------------- /hawkbit-repository/hawkbit-repository-jpa-flyway/src/main/resources/db/migration/POSTGRESQL/V1_12_26__add_access_control_context___POSTGRESQL.sql: -------------------------------------------------------------------------------- 1 | ALTER TABLE sp_target_filter_query ADD COLUMN access_control_context VARCHAR(4096); 2 | ALTER TABLE sp_rollout ADD COLUMN access_control_context VARCHAR(4096); -------------------------------------------------------------------------------- /hawkbit-repository/hawkbit-repository-jpa-flyway/src/main/resources/db/migration/POSTGRESQL/V1_12_27__target_type_inherit_type___POSTGRESQL.sql: -------------------------------------------------------------------------------- 1 | ALTER TABLE sp_target_type ADD COLUMN type_key VARCHAR (64) NOT NULL DEFAULT ('_'); 2 | UPDATE sp_target_type SET type_key = name; 3 | ALTER TABLE sp_target_type ADD CONSTRAINT uk_target_type_key UNIQUE (type_key, tenant); -------------------------------------------------------------------------------- /hawkbit-repository/hawkbit-repository-jpa-flyway/src/main/resources/db/migration/POSTGRESQL/V1_12_28__add_dynamic_rollout___POSTGRESQL.sql: -------------------------------------------------------------------------------- 1 | ALTER TABLE sp_rollout ADD COLUMN is_dynamic BOOLEAN; 2 | ALTER TABLE sp_rolloutgroup ADD COLUMN is_dynamic BOOLEAN NOT NULL DEFAULT false; 3 | 4 | UPDATE sp_rollout SET weight = 1000 WHERE weight IS NULL; 5 | UPDATE sp_action SET weight = 1000 WHERE weight IS NULL; 6 | UPDATE sp_target_filter_query SET auto_assign_weight = 1000 WHERE auto_assign_weight IS NULL; 7 | ALTER TABLE sp_rollout ALTER COLUMN weight SET NOT NULL; 8 | ALTER TABLE sp_action ALTER COLUMN weight SET NOT NULL; 9 | ALTER TABLE sp_target_filter_query ALTER COLUMN auto_assign_weight SET NOT NULL; -------------------------------------------------------------------------------- /hawkbit-repository/hawkbit-repository-jpa-flyway/src/main/resources/db/migration/POSTGRESQL/V1_12_29__add_ds_sm_locked___POSTGRESQL.sql: -------------------------------------------------------------------------------- 1 | ALTER TABLE sp_base_software_module ADD COLUMN locked BOOLEAN NOT NULL DEFAULT true; 2 | ALTER TABLE sp_distribution_set ADD COLUMN locked BOOLEAN NOT NULL DEFAULT true; -------------------------------------------------------------------------------- /hawkbit-repository/hawkbit-repository-jpa-flyway/src/main/resources/db/migration/POSTGRESQL/V1_12_30__add_indexes___POSTGRESQL.sql: -------------------------------------------------------------------------------- 1 | CREATE INDEX sp_idx_rollouttargetgroup_target_id 2 | ON sp_rollouttargetgroup 3 | USING BTREE (target_id); 4 | 5 | CREATE INDEX sp_idx_target_attributes_target_id 6 | ON sp_target_attributes 7 | USING BTREE (target_id); 8 | 9 | CREATE INDEX sp_idx_action_target 10 | ON sp_action 11 | USING BTREE (target); 12 | -------------------------------------------------------------------------------- /hawkbit-repository/hawkbit-repository-jpa-flyway/src/main/resources/db/migration/POSTGRESQL/V1_12_31__add_distrubuted_lock___POSTGRESQL.sql: -------------------------------------------------------------------------------- 1 | -- Table and fields in upper case as Spring queries it that way 2 | CREATE TABLE SP_LOCK ( 3 | LOCK_KEY CHAR(36) NOT NULL, 4 | REGION VARCHAR(100) NOT NULL, 5 | CLIENT_ID CHAR(36), 6 | CREATED_DATE TIMESTAMP NOT NULL, 7 | constraint SP_LOCK_PK primary key (LOCK_KEY, REGION) 8 | ); -------------------------------------------------------------------------------- /hawkbit-repository/hawkbit-repository-jpa-flyway/src/main/resources/db/migration/POSTGRESQL/V1_12_32__add_type_to_ds_index___POSTGRESQL.sql: -------------------------------------------------------------------------------- 1 | alter table sp_distribution_set drop constraint uk_distrib_set_sp_distribution_set; 2 | alter table sp_distribution_set add constraint uk_distrib_set_sp_distribution_set unique (tenant, name, version, ds_id); -------------------------------------------------------------------------------- /hawkbit-repository/hawkbit-repository-jpa-flyway/src/main/resources/hawkbit-jpa-flyway-defaults.properties: -------------------------------------------------------------------------------- 1 | # 2 | # Copyright (c) 2024 Contributors to the Eclipse Foundation 3 | # 4 | # This program and the accompanying materials are made 5 | # available under the terms of the Eclipse Public License 2.0 6 | # which is available at https://www.eclipse.org/legal/epl-2.0/ 7 | # 8 | # SPDX-License-Identifier: EPL-2.0 9 | # 10 | 11 | # Flyway DDL 12 | spring.flyway.enabled=true 13 | spring.flyway.clean-disabled=true 14 | spring.flyway.sql-migration-suffixes=${spring.jpa.database}.sql 15 | spring.flyway.ignore-migration-patterns=*:missing 16 | spring.flyway.table=schema_version 17 | ### Flyway DDL - END 18 | -------------------------------------------------------------------------------- /hawkbit-repository/hawkbit-repository-jpa-hibernate/README.md: -------------------------------------------------------------------------------- 1 | # hawkBit JPA Hibernate Vendor integration 2 | 3 | Implementation of [Hibernate](https://hibernate.org/) JPA vendor. 4 | 5 | To use this vendor you could exclude the org.eclipse.hawkbit:hawkbit.repository-jpa-eclipselink and include this module. 6 | For instance if you use org.eclipse.hawkbit:hawkbit-repository-jpa via org.eclipse.hawkbit:hawkbit-starter you could do it like this: 7 | 8 | ```xml 9 | 10 | org.eclipse.hawkbit 11 | hawkbit-starter 12 | ${project.version} 13 | 14 | 15 | org.eclipse.hawkbit 16 | hawkbit-repository-jpa-eclipselink 17 | 18 | 19 | 20 | 21 | org.eclipse.hawkbit 22 | hawkbit-repository-jpa-hibernate 23 | ${project.version} 24 | 25 | ``` -------------------------------------------------------------------------------- /hawkbit-repository/hawkbit-repository-jpa-hibernate/src/main/resources/META-INF/spring/org.springframework.boot.autoconfigure.AutoConfiguration.imports: -------------------------------------------------------------------------------- 1 | org.eclipse.hawkbit.repository.jpa.Statistics.StatisticsAutoConfiguration -------------------------------------------------------------------------------- /hawkbit-repository/hawkbit-repository-jpa/README.md: -------------------------------------------------------------------------------- 1 | # hawkBit JPA implementation 2 | 3 | JPA implementation of the repository. Based on [EclipseLink](http://www.eclipse.org/eclipselink/) 4 | and [Spring Data Jpa](http://projects.spring.io/spring-data-jpa/). -------------------------------------------------------------------------------- /hawkbit-repository/hawkbit-repository-jpa/src/main/java/org/eclipse/hawkbit/repository/jpa/autocleanup/CleanupTask.java: -------------------------------------------------------------------------------- 1 | /** 2 | * Copyright (c) 2018 Bosch Software Innovations GmbH and others 3 | * 4 | * This program and the accompanying materials are made 5 | * available under the terms of the Eclipse Public License 2.0 6 | * which is available at https://www.eclipse.org/legal/epl-2.0/ 7 | * 8 | * SPDX-License-Identifier: EPL-2.0 9 | */ 10 | package org.eclipse.hawkbit.repository.jpa.autocleanup; 11 | 12 | /** 13 | * Interface modeling a cleanup task. 14 | */ 15 | public interface CleanupTask extends Runnable { 16 | 17 | /** 18 | * Executes the cleanup task. 19 | */ 20 | @Override 21 | void run(); 22 | 23 | /** 24 | * @return The identifier of this cleanup task. Never null. 25 | */ 26 | String getId(); 27 | } -------------------------------------------------------------------------------- /hawkbit-repository/hawkbit-repository-jpa/src/main/java/org/eclipse/hawkbit/repository/jpa/builder/JpaActionStatusBuilder.java: -------------------------------------------------------------------------------- 1 | /** 2 | * Copyright (c) 2015 Bosch Software Innovations GmbH and others 3 | * 4 | * This program and the accompanying materials are made 5 | * available under the terms of the Eclipse Public License 2.0 6 | * which is available at https://www.eclipse.org/legal/epl-2.0/ 7 | * 8 | * SPDX-License-Identifier: EPL-2.0 9 | */ 10 | package org.eclipse.hawkbit.repository.jpa.builder; 11 | 12 | import org.eclipse.hawkbit.repository.builder.ActionStatusBuilder; 13 | import org.eclipse.hawkbit.repository.builder.ActionStatusCreate; 14 | import org.eclipse.hawkbit.repository.model.ActionStatus; 15 | 16 | /** 17 | * Builder implementation for {@link ActionStatus}. 18 | */ 19 | public class JpaActionStatusBuilder implements ActionStatusBuilder { 20 | 21 | @Override 22 | public ActionStatusCreate create(final long actionId) { 23 | return new JpaActionStatusCreate(actionId); 24 | } 25 | } -------------------------------------------------------------------------------- /hawkbit-repository/hawkbit-repository-jpa/src/main/java/org/eclipse/hawkbit/repository/jpa/builder/JpaRolloutGroupBuilder.java: -------------------------------------------------------------------------------- 1 | /** 2 | * Copyright (c) 2015 Bosch Software Innovations GmbH and others 3 | * 4 | * This program and the accompanying materials are made 5 | * available under the terms of the Eclipse Public License 2.0 6 | * which is available at https://www.eclipse.org/legal/epl-2.0/ 7 | * 8 | * SPDX-License-Identifier: EPL-2.0 9 | */ 10 | package org.eclipse.hawkbit.repository.jpa.builder; 11 | 12 | import org.eclipse.hawkbit.repository.builder.RolloutGroupBuilder; 13 | import org.eclipse.hawkbit.repository.builder.RolloutGroupCreate; 14 | import org.eclipse.hawkbit.repository.model.RolloutGroup; 15 | 16 | /** 17 | * Builder implementation for {@link RolloutGroup}. 18 | */ 19 | public class JpaRolloutGroupBuilder implements RolloutGroupBuilder { 20 | 21 | @Override 22 | public RolloutGroupCreate create() { 23 | return new JpaRolloutGroupCreate(); 24 | } 25 | } -------------------------------------------------------------------------------- /hawkbit-repository/hawkbit-repository-jpa/src/main/java/org/eclipse/hawkbit/repository/jpa/builder/JpaTargetUpdate.java: -------------------------------------------------------------------------------- 1 | /** 2 | * Copyright (c) 2015 Bosch Software Innovations GmbH and others 3 | * 4 | * This program and the accompanying materials are made 5 | * available under the terms of the Eclipse Public License 2.0 6 | * which is available at https://www.eclipse.org/legal/epl-2.0/ 7 | * 8 | * SPDX-License-Identifier: EPL-2.0 9 | */ 10 | package org.eclipse.hawkbit.repository.jpa.builder; 11 | 12 | import org.eclipse.hawkbit.repository.builder.AbstractTargetUpdateCreate; 13 | import org.eclipse.hawkbit.repository.builder.TargetUpdate; 14 | 15 | public class JpaTargetUpdate extends AbstractTargetUpdateCreate implements TargetUpdate { 16 | 17 | JpaTargetUpdate(final String controllerId) { 18 | super(controllerId); 19 | } 20 | } -------------------------------------------------------------------------------- /hawkbit-repository/hawkbit-repository-jpa/src/main/java/org/eclipse/hawkbit/repository/jpa/model/JpaStatistic.java: -------------------------------------------------------------------------------- 1 | /** 2 | * Copyright (c) 2023 Bosch.IO GmbH and others 3 | * 4 | * This program and the accompanying materials are made 5 | * available under the terms of the Eclipse Public License 2.0 6 | * which is available at https://www.eclipse.org/legal/epl-2.0/ 7 | * 8 | * SPDX-License-Identifier: EPL-2.0 9 | */ 10 | 11 | package org.eclipse.hawkbit.repository.jpa.model; 12 | 13 | import org.eclipse.hawkbit.repository.model.Statistic; 14 | 15 | public interface JpaStatistic extends Statistic {} -------------------------------------------------------------------------------- /hawkbit-repository/hawkbit-repository-jpa/src/main/java/org/eclipse/hawkbit/repository/jpa/rollout/condition/RolloutGroupActionEvaluator.java: -------------------------------------------------------------------------------- 1 | /** 2 | * Copyright (c) 2015 Bosch Software Innovations GmbH and others 3 | * 4 | * This program and the accompanying materials are made 5 | * available under the terms of the Eclipse Public License 2.0 6 | * which is available at https://www.eclipse.org/legal/epl-2.0/ 7 | * 8 | * SPDX-License-Identifier: EPL-2.0 9 | */ 10 | package org.eclipse.hawkbit.repository.jpa.rollout.condition; 11 | 12 | import org.eclipse.hawkbit.repository.model.Rollout; 13 | import org.eclipse.hawkbit.repository.model.RolloutGroup; 14 | 15 | /** 16 | * Interface to define a specific execution for an action 17 | */ 18 | public interface RolloutGroupActionEvaluator { 19 | 20 | T getAction(); 21 | 22 | void exec(Rollout rollout, RolloutGroup rolloutGroup); 23 | } 24 | -------------------------------------------------------------------------------- /hawkbit-repository/hawkbit-repository-jpa/src/main/java/org/eclipse/hawkbit/repository/jpa/rollout/condition/RolloutGroupConditionEvaluator.java: -------------------------------------------------------------------------------- 1 | /** 2 | * Copyright (c) 2015 Bosch Software Innovations GmbH and others 3 | * 4 | * This program and the accompanying materials are made 5 | * available under the terms of the Eclipse Public License 2.0 6 | * which is available at https://www.eclipse.org/legal/epl-2.0/ 7 | * 8 | * SPDX-License-Identifier: EPL-2.0 9 | */ 10 | package org.eclipse.hawkbit.repository.jpa.rollout.condition; 11 | 12 | import org.eclipse.hawkbit.repository.model.Rollout; 13 | import org.eclipse.hawkbit.repository.model.RolloutGroup; 14 | 15 | /** 16 | * Interface for evaluate conditions define for a {@link RolloutGroup} based on a given expression 17 | */ 18 | public interface RolloutGroupConditionEvaluator { 19 | 20 | T getCondition(); 21 | 22 | boolean eval(Rollout rollout, RolloutGroup rolloutGroup, final String expression); 23 | } 24 | -------------------------------------------------------------------------------- /hawkbit-repository/hawkbit-repository-jpa/src/test/java/org/eclipse/hawkbit/repository/jpa/rsql/sa/RootRepository.java: -------------------------------------------------------------------------------- 1 | /** 2 | * Copyright (c) 2025 Contributors to the Eclipse Foundation 3 | * 4 | * This program and the accompanying materials are made 5 | * available under the terms of the Eclipse Public License 2.0 6 | * which is available at https://www.eclipse.org/legal/epl-2.0/ 7 | * 8 | * SPDX-License-Identifier: EPL-2.0 9 | */ 10 | package org.eclipse.hawkbit.repository.jpa.rsql.sa; 11 | 12 | import org.springframework.data.jpa.repository.JpaSpecificationExecutor; 13 | import org.springframework.data.repository.CrudRepository; 14 | import org.springframework.stereotype.Repository; 15 | 16 | @Repository 17 | public interface RootRepository 18 | extends CrudRepository, JpaSpecificationExecutor {} 19 | -------------------------------------------------------------------------------- /hawkbit-repository/hawkbit-repository-jpa/src/test/java/org/eclipse/hawkbit/repository/jpa/rsql/sa/Sub.java: -------------------------------------------------------------------------------- 1 | /** 2 | * Copyright (c) 2025 Contributors to the Eclipse Foundation 3 | * 4 | * This program and the accompanying materials are made 5 | * available under the terms of the Eclipse Public License 2.0 6 | * which is available at https://www.eclipse.org/legal/epl-2.0/ 7 | * 8 | * SPDX-License-Identifier: EPL-2.0 9 | */ 10 | package org.eclipse.hawkbit.repository.jpa.rsql.sa; 11 | 12 | import jakarta.persistence.Entity; 13 | import jakarta.persistence.GeneratedValue; 14 | import jakarta.persistence.GenerationType; 15 | import jakarta.persistence.Id; 16 | 17 | import lombok.Data; 18 | import lombok.experimental.Accessors; 19 | 20 | @Entity 21 | @Data 22 | @Accessors(chain = true) 23 | class Sub { 24 | 25 | @Id 26 | @GeneratedValue(strategy = GenerationType.IDENTITY) 27 | private Long id; 28 | 29 | // singular attributes 30 | // basic 31 | private String strValue; 32 | private int intValue; 33 | } 34 | -------------------------------------------------------------------------------- /hawkbit-repository/hawkbit-repository-jpa/src/test/java/org/eclipse/hawkbit/repository/jpa/rsql/sa/SubRepository.java: -------------------------------------------------------------------------------- 1 | /** 2 | * Copyright (c) 2025 Contributors to the Eclipse Foundation 3 | * 4 | * This program and the accompanying materials are made 5 | * available under the terms of the Eclipse Public License 2.0 6 | * which is available at https://www.eclipse.org/legal/epl-2.0/ 7 | * 8 | * SPDX-License-Identifier: EPL-2.0 9 | */ 10 | package org.eclipse.hawkbit.repository.jpa.rsql.sa; 11 | 12 | import org.springframework.data.jpa.repository.JpaSpecificationExecutor; 13 | import org.springframework.data.repository.CrudRepository; 14 | import org.springframework.stereotype.Repository; 15 | 16 | @Repository 17 | public interface SubRepository 18 | extends CrudRepository, JpaSpecificationExecutor {} 19 | -------------------------------------------------------------------------------- /hawkbit-repository/hawkbit-repository-test/src/main/java/org/eclipse/hawkbit/repository/test/matcher/Expect.java: -------------------------------------------------------------------------------- 1 | /** 2 | * Copyright (c) 2015 Bosch Software Innovations GmbH and others 3 | * 4 | * This program and the accompanying materials are made 5 | * available under the terms of the Eclipse Public License 2.0 6 | * which is available at https://www.eclipse.org/legal/epl-2.0/ 7 | * 8 | * SPDX-License-Identifier: EPL-2.0 9 | */ 10 | 11 | package org.eclipse.hawkbit.repository.test.matcher; 12 | 13 | import java.lang.annotation.ElementType; 14 | import java.lang.annotation.Retention; 15 | import java.lang.annotation.RetentionPolicy; 16 | import java.lang.annotation.Target; 17 | 18 | /** 19 | * Interface to add annotations for counting events by type and count. 20 | */ 21 | @Retention(RetentionPolicy.RUNTIME) 22 | @Target({ ElementType.METHOD, ElementType.TYPE }) 23 | public @interface Expect { 24 | 25 | /** 26 | * @return the type of the event 27 | */ 28 | Class type(); 29 | 30 | /** 31 | * @return the expected count of events 32 | */ 33 | int count() default 0; 34 | } 35 | -------------------------------------------------------------------------------- /hawkbit-repository/hawkbit-repository-test/src/main/java/org/eclipse/hawkbit/repository/test/matcher/ExpectEvents.java: -------------------------------------------------------------------------------- 1 | /** 2 | * Copyright (c) 2015 Bosch Software Innovations GmbH and others 3 | * 4 | * This program and the accompanying materials are made 5 | * available under the terms of the Eclipse Public License 2.0 6 | * which is available at https://www.eclipse.org/legal/epl-2.0/ 7 | * 8 | * SPDX-License-Identifier: EPL-2.0 9 | */ 10 | 11 | package org.eclipse.hawkbit.repository.test.matcher; 12 | 13 | import java.lang.annotation.ElementType; 14 | import java.lang.annotation.Retention; 15 | import java.lang.annotation.RetentionPolicy; 16 | import java.lang.annotation.Target; 17 | 18 | /** 19 | * Interface to annotate methods when event count is required. 20 | */ 21 | @Retention(RetentionPolicy.RUNTIME) 22 | @Target({ ElementType.METHOD, ElementType.TYPE }) 23 | public @interface ExpectEvents { 24 | 25 | /** 26 | * @return a list of {@link Expect} 27 | */ 28 | Expect[] value() default {}; 29 | 30 | } 31 | -------------------------------------------------------------------------------- /hawkbit-rest-core/src/main/java/org/eclipse/hawkbit/rest/exception/MultiPartFileUploadException.java: -------------------------------------------------------------------------------- 1 | /** 2 | * Copyright (c) 2015 Bosch Software Innovations GmbH and others 3 | * 4 | * This program and the accompanying materials are made 5 | * available under the terms of the Eclipse Public License 2.0 6 | * which is available at https://www.eclipse.org/legal/epl-2.0/ 7 | * 8 | * SPDX-License-Identifier: EPL-2.0 9 | */ 10 | package org.eclipse.hawkbit.rest.exception; 11 | 12 | import java.io.Serial; 13 | 14 | import org.eclipse.hawkbit.exception.AbstractServerRtException; 15 | import org.eclipse.hawkbit.exception.SpServerError; 16 | 17 | /** 18 | * Thrown if a multipart exception occurred. 19 | */ 20 | public final class MultiPartFileUploadException extends AbstractServerRtException { 21 | 22 | @Serial 23 | private static final long serialVersionUID = 1L; 24 | 25 | public MultiPartFileUploadException(final Throwable cause) { 26 | super(cause.getMessage(), SpServerError.SP_ARTIFACT_UPLOAD_FAILED, cause); 27 | } 28 | } -------------------------------------------------------------------------------- /hawkbit-rest-core/src/main/java/org/eclipse/hawkbit/rest/json/model/ExceptionInfo.java: -------------------------------------------------------------------------------- 1 | /** 2 | * Copyright (c) 2015 Bosch Software Innovations GmbH and others 3 | * 4 | * This program and the accompanying materials are made 5 | * available under the terms of the Eclipse Public License 2.0 6 | * which is available at https://www.eclipse.org/legal/epl-2.0/ 7 | * 8 | * SPDX-License-Identifier: EPL-2.0 9 | */ 10 | package org.eclipse.hawkbit.rest.json.model; 11 | 12 | import java.util.Map; 13 | 14 | import com.fasterxml.jackson.annotation.JsonInclude; 15 | import com.fasterxml.jackson.annotation.JsonInclude.Include; 16 | import lombok.Data; 17 | 18 | /** 19 | * An exception model rest representation with JSON annotations for response bodies in case of RESTful exception occurrence. 20 | */ 21 | @Data 22 | @JsonInclude(Include.NON_EMPTY) 23 | public class ExceptionInfo { 24 | 25 | private String exceptionClass; 26 | private String errorCode; 27 | private String message; 28 | private Map info; 29 | } 30 | -------------------------------------------------------------------------------- /hawkbit-rest-core/src/test/java/org/eclipse/hawkbit/rest/util/SuccessCondition.java: -------------------------------------------------------------------------------- 1 | /** 2 | * Copyright (c) 2015 Bosch Software Innovations GmbH and others 3 | * 4 | * This program and the accompanying materials are made 5 | * available under the terms of the Eclipse Public License 2.0 6 | * which is available at https://www.eclipse.org/legal/epl-2.0/ 7 | * 8 | * SPDX-License-Identifier: EPL-2.0 9 | */ 10 | package org.eclipse.hawkbit.rest.util; 11 | 12 | /** 13 | * @param 14 | */ 15 | public interface SuccessCondition { 16 | 17 | /** 18 | * @param result 19 | * @return 20 | */ 21 | boolean success(final T result); 22 | 23 | } 24 | -------------------------------------------------------------------------------- /hawkbit-sdk/hawkbit-sdk-commons/src/main/java/org/eclipse/hawkbit/sdk/Controller.java: -------------------------------------------------------------------------------- 1 | /** 2 | * Copyright (c) 2023 Bosch.IO GmbH and others 3 | * 4 | * This program and the accompanying materials are made 5 | * available under the terms of the Eclipse Public License 2.0 6 | * which is available at https://www.eclipse.org/legal/epl-2.0/ 7 | * 8 | * SPDX-License-Identifier: EPL-2.0 9 | */ 10 | package org.eclipse.hawkbit.sdk; 11 | 12 | import lombok.Builder; 13 | import lombok.Data; 14 | import org.springframework.lang.NonNull; 15 | import org.springframework.lang.Nullable; 16 | 17 | @Data 18 | @Builder 19 | public class Controller { 20 | 21 | // id of the tenant 22 | @NonNull 23 | private String controllerId; 24 | // (target) security token 25 | @Nullable 26 | private String securityToken; 27 | @Nullable 28 | private Certificate certificate; 29 | } 30 | -------------------------------------------------------------------------------- /hawkbit-sdk/hawkbit-sdk-commons/src/main/java/org/eclipse/hawkbit/sdk/HawkbitServer.java: -------------------------------------------------------------------------------- 1 | /** 2 | * Copyright (c) 2023 Bosch.IO GmbH and others 3 | * 4 | * This program and the accompanying materials are made 5 | * available under the terms of the Eclipse Public License 2.0 6 | * which is available at https://www.eclipse.org/legal/epl-2.0/ 7 | * 8 | * SPDX-License-Identifier: EPL-2.0 9 | */ 10 | package org.eclipse.hawkbit.sdk; 11 | 12 | import lombok.Data; 13 | import org.springframework.boot.context.properties.ConfigurationProperties; 14 | import org.springframework.lang.NonNull; 15 | 16 | @ConfigurationProperties(prefix = "hawkbit.server") 17 | @Data 18 | public class HawkbitServer { 19 | 20 | @NonNull 21 | private String mgmtUrl = "http://localhost:8080"; 22 | @NonNull 23 | private String ddiUrl = "http://localhost:8081"; 24 | } -------------------------------------------------------------------------------- /hawkbit-sdk/hawkbit-sdk-commons/src/main/resources/META-INF/spring/org.springframework.boot.autoconfigure.AutoConfiguration.imports: -------------------------------------------------------------------------------- 1 | org.eclipse.hawkbit.sdk.HawkbitSDKConfiguration -------------------------------------------------------------------------------- /hawkbit-sdk/hawkbit-sdk-commons/src/main/resources/hawkbit-sdk-defaults.properties: -------------------------------------------------------------------------------- 1 | # 2 | # Copyright (c) 2023 Bosch.IO GmbH and others 3 | # 4 | # This program and the accompanying materials are made 5 | # available under the terms of the Eclipse Public License 2.0 6 | # which is available at https://www.eclipse.org/legal/epl-2.0/ 7 | # 8 | # SPDX-License-Identifier: EPL-2.0 9 | # 10 | 11 | spring.cloud.openfeign.httpclient.hc5.enabled=true -------------------------------------------------------------------------------- /hawkbit-sdk/hawkbit-sdk-demo/src/main/resources/application.properties: -------------------------------------------------------------------------------- 1 | # 2 | # Copyright (c) 2023 Bosch.IO GmbH and others 3 | # 4 | # This program and the accompanying materials are made 5 | # available under the terms of the Eclipse Public License 2.0 6 | # which is available at https://www.eclipse.org/legal/epl-2.0/ 7 | # 8 | # SPDX-License-Identifier: EPL-2.0 9 | # 10 | 11 | spring.main.web-application-type=none 12 | 13 | logging.level.org.eclipse.hawkbit=DEBUG 14 | 15 | -------------------------------------------------------------------------------- /hawkbit-sdk/hawkbit-sdk-device/src/main/resources/application.properties: -------------------------------------------------------------------------------- 1 | # 2 | # Copyright (c) 2023 Bosch.IO GmbH and others 3 | # 4 | # This program and the accompanying materials are made 5 | # available under the terms of the Eclipse Public License 2.0 6 | # which is available at https://www.eclipse.org/legal/epl-2.0/ 7 | # 8 | # SPDX-License-Identifier: EPL-2.0 9 | # 10 | 11 | 12 | -------------------------------------------------------------------------------- /hawkbit-sdk/hawkbit-sdk-dmf/src/main/java/org/eclipse/hawkbit/sdk/dmf/UpdateStatus.java: -------------------------------------------------------------------------------- 1 | /** 2 | * Copyright (c) 2024 Contributors to the Eclipse Foundation 3 | * 4 | * This program and the accompanying materials are made 5 | * available under the terms of the Eclipse Public License 2.0 6 | * which is available at https://www.eclipse.org/legal/epl-2.0/ 7 | * 8 | * SPDX-License-Identifier: EPL-2.0 9 | */ 10 | package org.eclipse.hawkbit.sdk.dmf; 11 | 12 | import java.util.List; 13 | 14 | import org.eclipse.hawkbit.dmf.json.model.DmfActionStatus; 15 | 16 | public record UpdateStatus(DmfActionStatus status, List messages) {} -------------------------------------------------------------------------------- /hawkbit-sdk/hawkbit-sdk-dmf/src/main/resources/application.properties: -------------------------------------------------------------------------------- 1 | # 2 | # Copyright (c) 2023 Bosch.IO GmbH and others 3 | # 4 | # This program and the accompanying materials are made 5 | # available under the terms of the Eclipse Public License 2.0 6 | # which is available at https://www.eclipse.org/legal/epl-2.0/ 7 | # 8 | # SPDX-License-Identifier: EPL-2.0 9 | # 10 | 11 | ## Configuration for local RabbitMQ integration 12 | spring.rabbitmq.username=guest 13 | spring.rabbitmq.password=guest 14 | spring.rabbitmq.virtualHost=/ 15 | spring.rabbitmq.host=localhost 16 | spring.rabbitmq.port=5672 17 | spring.rabbitmq.dynamic=true 18 | 19 | ## Configuration for sdk dmf 20 | hawkbit.sdk.dmf.enabled=true 21 | hawkbit.sdk.dmf.amqp.receiverConnectorQueueFromSp=sdk_receiver 22 | hawkbit.sdk.dmf.amqp.senderForSpExchange=sdk.replyTo 23 | 24 | 25 | -------------------------------------------------------------------------------- /hawkbit-security-core/src/main/java/org/eclipse/hawkbit/security/SecurityConstants.java: -------------------------------------------------------------------------------- 1 | /** 2 | * Copyright (c) 2015 Bosch Software Innovations GmbH and others 3 | * 4 | * This program and the accompanying materials are made 5 | * available under the terms of the Eclipse Public License 2.0 6 | * which is available at https://www.eclipse.org/legal/epl-2.0/ 7 | * 8 | * SPDX-License-Identifier: EPL-2.0 9 | */ 10 | package org.eclipse.hawkbit.security; 11 | 12 | import lombok.AccessLevel; 13 | import lombok.NoArgsConstructor; 14 | 15 | /** 16 | * Constants related to security. 17 | */ 18 | @NoArgsConstructor(access = AccessLevel.PRIVATE) 19 | public final class SecurityConstants { 20 | 21 | /** 22 | * Logger prefix used for security logging. 23 | */ 24 | public static final String SECURITY_LOG_PREFIX = "server-security"; 25 | } -------------------------------------------------------------------------------- /hawkbit-security-core/src/main/java/org/eclipse/hawkbit/util/UrlUtils.java: -------------------------------------------------------------------------------- 1 | /** 2 | * Copyright (c) 2023 Bosch.IO GmbH and others 3 | * 4 | * This program and the accompanying materials are made 5 | * available under the terms of the Eclipse Public License 2.0 6 | * which is available at https://www.eclipse.org/legal/epl-2.0/ 7 | * 8 | * SPDX-License-Identifier: EPL-2.0 9 | */ 10 | package org.eclipse.hawkbit.util; 11 | 12 | import java.nio.charset.StandardCharsets; 13 | 14 | import lombok.AccessLevel; 15 | import lombok.NoArgsConstructor; 16 | import org.springframework.web.util.UriUtils; 17 | 18 | @NoArgsConstructor(access = AccessLevel.PRIVATE) 19 | public class UrlUtils { 20 | 21 | public static String decodeUriValue(String value) { 22 | return UriUtils.decode(value, StandardCharsets.UTF_8); 23 | } 24 | } -------------------------------------------------------------------------------- /hawkbit-simple-ui/.gitignore: -------------------------------------------------------------------------------- 1 | bundles 2 | src/main/frontend/* 3 | !src/main/frontend/themes/ 4 | node_modules 5 | package.json 6 | package-lock.json 7 | tsconfig.json 8 | types.d.ts 9 | vite.config.ts 10 | vite.generated.ts -------------------------------------------------------------------------------- /hawkbit-simple-ui/src/main/frontend/themes/hawkbit/styles.css: -------------------------------------------------------------------------------- 1 | /* Import your application global css files here or add the styles directly to this file */ -------------------------------------------------------------------------------- /hawkbit-simple-ui/src/main/frontend/themes/hawkbit/theme.json: -------------------------------------------------------------------------------- 1 | { 2 | "lumoImports": ["badge"] 3 | } -------------------------------------------------------------------------------- /hawkbit-simple-ui/src/main/resources/META-INF/resources/images/about_image.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/eclipse-hawkbit/hawkbit/ebdcab2aaa8835fc2a0bcef555b1a7b5bd196a23/hawkbit-simple-ui/src/main/resources/META-INF/resources/images/about_image.png -------------------------------------------------------------------------------- /hawkbit-simple-ui/src/main/resources/META-INF/resources/images/header_icon.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/eclipse-hawkbit/hawkbit/ebdcab2aaa8835fc2a0bcef555b1a7b5bd196a23/hawkbit-simple-ui/src/main/resources/META-INF/resources/images/header_icon.png -------------------------------------------------------------------------------- /hawkbit-test-report/placeholder.txt: -------------------------------------------------------------------------------- 1 | ==== 2 | Copyright (c) 2015 Bosch Software Innovations GmbH and others 3 | 4 | This program and the accompanying materials are made 5 | available under the terms of the Eclipse Public License 2.0 6 | which is available at https://www.eclipse.org/legal/epl-2.0/ 7 | 8 | SPDX-License-Identifier: EPL-2.0 9 | ==== 10 | 11 | A zip need 1 file -------------------------------------------------------------------------------- /hawkbit_logo.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/eclipse-hawkbit/hawkbit/ebdcab2aaa8835fc2a0bcef555b1a7b5bd196a23/hawkbit_logo.png -------------------------------------------------------------------------------- /licenses/LICENSE_HEADER_TEMPLATE.txt: -------------------------------------------------------------------------------- 1 | Copyright (c) 2025 Contributors to the Eclipse Foundation 2 | 3 | This program and the accompanying materials are made 4 | available under the terms of the Eclipse Public License 2.0 5 | which is available at https://www.eclipse.org/legal/epl-2.0/ 6 | 7 | SPDX-License-Identifier: EPL-2.0 -------------------------------------------------------------------------------- /licenses/LICENSE_HEADER_TEMPLATE_BLUEZONE_25.txt: -------------------------------------------------------------------------------- 1 | Copyright (c) 2025 blue-zone GmbH and others 2 | 3 | This program and the accompanying materials are made 4 | available under the terms of the Eclipse Public License 2.0 5 | which is available at https://www.eclipse.org/legal/epl-2.0/ 6 | 7 | SPDX-License-Identifier: EPL-2.0 8 | -------------------------------------------------------------------------------- /licenses/LICENSE_HEADER_TEMPLATE_BOSCH_15.txt: -------------------------------------------------------------------------------- 1 | Copyright (c) 2015 Bosch Software Innovations GmbH and others 2 | 3 | This program and the accompanying materials are made 4 | available under the terms of the Eclipse Public License 2.0 5 | which is available at https://www.eclipse.org/legal/epl-2.0/ 6 | 7 | SPDX-License-Identifier: EPL-2.0 -------------------------------------------------------------------------------- /licenses/LICENSE_HEADER_TEMPLATE_BOSCH_18.txt: -------------------------------------------------------------------------------- 1 | Copyright (c) 2018 Bosch Software Innovations GmbH and others 2 | 3 | This program and the accompanying materials are made 4 | available under the terms of the Eclipse Public License 2.0 5 | which is available at https://www.eclipse.org/legal/epl-2.0/ 6 | 7 | SPDX-License-Identifier: EPL-2.0 -------------------------------------------------------------------------------- /licenses/LICENSE_HEADER_TEMPLATE_BOSCH_19.txt: -------------------------------------------------------------------------------- 1 | Copyright (c) 2019 Bosch Software Innovations GmbH and others 2 | 3 | This program and the accompanying materials are made 4 | available under the terms of the Eclipse Public License 2.0 5 | which is available at https://www.eclipse.org/legal/epl-2.0/ 6 | 7 | SPDX-License-Identifier: EPL-2.0 -------------------------------------------------------------------------------- /licenses/LICENSE_HEADER_TEMPLATE_BOSCH_20.txt: -------------------------------------------------------------------------------- 1 | Copyright (c) 2020 Bosch.IO GmbH and others 2 | 3 | This program and the accompanying materials are made 4 | available under the terms of the Eclipse Public License 2.0 5 | which is available at https://www.eclipse.org/legal/epl-2.0/ 6 | 7 | SPDX-License-Identifier: EPL-2.0 -------------------------------------------------------------------------------- /licenses/LICENSE_HEADER_TEMPLATE_BOSCH_21.txt: -------------------------------------------------------------------------------- 1 | Copyright (c) 2021 Bosch.IO GmbH and others 2 | 3 | This program and the accompanying materials are made 4 | available under the terms of the Eclipse Public License 2.0 5 | which is available at https://www.eclipse.org/legal/epl-2.0/ 6 | 7 | SPDX-License-Identifier: EPL-2.0 -------------------------------------------------------------------------------- /licenses/LICENSE_HEADER_TEMPLATE_BOSCH_22.txt: -------------------------------------------------------------------------------- 1 | Copyright (c) 2022 Bosch.IO GmbH and others 2 | 3 | This program and the accompanying materials are made 4 | available under the terms of the Eclipse Public License 2.0 5 | which is available at https://www.eclipse.org/legal/epl-2.0/ 6 | 7 | SPDX-License-Identifier: EPL-2.0 -------------------------------------------------------------------------------- /licenses/LICENSE_HEADER_TEMPLATE_BOSCH_23.txt: -------------------------------------------------------------------------------- 1 | Copyright (c) 2023 Bosch.IO GmbH and others 2 | 3 | This program and the accompanying materials are made 4 | available under the terms of the Eclipse Public License 2.0 5 | which is available at https://www.eclipse.org/legal/epl-2.0/ 6 | 7 | SPDX-License-Identifier: EPL-2.0 -------------------------------------------------------------------------------- /licenses/LICENSE_HEADER_TEMPLATE_CONTRIBUTORS_23.txt: -------------------------------------------------------------------------------- 1 | Copyright (c) 2023 Contributors to the Eclipse Foundation 2 | 3 | This program and the accompanying materials are made 4 | available under the terms of the Eclipse Public License 2.0 5 | which is available at https://www.eclipse.org/legal/epl-2.0/ 6 | 7 | SPDX-License-Identifier: EPL-2.0 -------------------------------------------------------------------------------- /licenses/LICENSE_HEADER_TEMPLATE_CONTRIBUTORS_24.txt: -------------------------------------------------------------------------------- 1 | Copyright (c) 2024 Contributors to the Eclipse Foundation 2 | 3 | This program and the accompanying materials are made 4 | available under the terms of the Eclipse Public License 2.0 5 | which is available at https://www.eclipse.org/legal/epl-2.0/ 6 | 7 | SPDX-License-Identifier: EPL-2.0 -------------------------------------------------------------------------------- /licenses/LICENSE_HEADER_TEMPLATE_DEVOLO_19.txt: -------------------------------------------------------------------------------- 1 | Copyright (c) 2019 devolo AG and others 2 | 3 | This program and the accompanying materials are made 4 | available under the terms of the Eclipse Public License 2.0 5 | which is available at https://www.eclipse.org/legal/epl-2.0/ 6 | 7 | SPDX-License-Identifier: EPL-2.0 -------------------------------------------------------------------------------- /licenses/LICENSE_HEADER_TEMPLATE_DEVOLO_20.txt: -------------------------------------------------------------------------------- 1 | Copyright (c) 2020 devolo AG and others 2 | 3 | This program and the accompanying materials are made 4 | available under the terms of the Eclipse Public License 2.0 5 | which is available at https://www.eclipse.org/legal/epl-2.0/ 6 | 7 | SPDX-License-Identifier: EPL-2.0 -------------------------------------------------------------------------------- /licenses/LICENSE_HEADER_TEMPLATE_ENAPTER.txt: -------------------------------------------------------------------------------- 1 | Copyright (c) 2020 Enapter Co.,Ltd 2 | 3 | This program and the accompanying materials are made 4 | available under the terms of the Eclipse Public License 2.0 5 | which is available at https://www.eclipse.org/legal/epl-2.0/ 6 | 7 | SPDX-License-Identifier: EPL-2.0 -------------------------------------------------------------------------------- /licenses/LICENSE_HEADER_TEMPLATE_KIWIGRID_19.txt: -------------------------------------------------------------------------------- 1 | Copyright (c) 2019 Kiwigrid GmbH and others 2 | 3 | This program and the accompanying materials are made 4 | available under the terms of the Eclipse Public License 2.0 5 | which is available at https://www.eclipse.org/legal/epl-2.0/ 6 | 7 | SPDX-License-Identifier: EPL-2.0 -------------------------------------------------------------------------------- /licenses/LICENSE_HEADER_TEMPLATE_MICROSOFT_18.txt: -------------------------------------------------------------------------------- 1 | Copyright (c) 2018 Microsoft and others 2 | 3 | This program and the accompanying materials are made 4 | available under the terms of the Eclipse Public License 2.0 5 | which is available at https://www.eclipse.org/legal/epl-2.0/ 6 | 7 | SPDX-License-Identifier: EPL-2.0 -------------------------------------------------------------------------------- /licenses/LICENSE_HEADER_TEMPLATE_MICROSOFT_20.txt: -------------------------------------------------------------------------------- 1 | Copyright (c) 2020 Microsoft and others 2 | 3 | This program and the accompanying materials are made 4 | available under the terms of the Eclipse Public License 2.0 5 | which is available at https://www.eclipse.org/legal/epl-2.0/ 6 | 7 | SPDX-License-Identifier: EPL-2.0 -------------------------------------------------------------------------------- /licenses/LICENSE_HEADER_TEMPLATE_SIEMENS.txt: -------------------------------------------------------------------------------- 1 | Copyright (c) 2017 Siemens AG 2 | 3 | This program and the accompanying materials are made 4 | available under the terms of the Eclipse Public License 2.0 5 | which is available at https://www.eclipse.org/legal/epl-2.0/ 6 | 7 | SPDX-License-Identifier: EPL-2.0 -------------------------------------------------------------------------------- /licenses/LICENSE_HEADER_TEMPLATE_SIEMENS_18.txt: -------------------------------------------------------------------------------- 1 | Copyright (c) 2018 Siemens AG 2 | 3 | This program and the accompanying materials are made 4 | available under the terms of the Eclipse Public License 2.0 5 | which is available at https://www.eclipse.org/legal/epl-2.0/ 6 | 7 | SPDX-License-Identifier: EPL-2.0 -------------------------------------------------------------------------------- /lombok.config: -------------------------------------------------------------------------------- 1 | lombok.addLombokGeneratedAnnotation=true -------------------------------------------------------------------------------- /site/.gitignore: -------------------------------------------------------------------------------- 1 | # rest api doc 2 | content/rest-api/*.json 3 | content/rest-api/*.html 4 | content/rest-api/*.yaml 5 | static/rest-api/*.html 6 | # npm leftover 7 | node_modules 8 | package.json 9 | package-lock.json 10 | # themes 11 | themes 12 | themes/hugo-material-docs 13 | # hugo 14 | public 15 | .hugo_build.lock 16 | -------------------------------------------------------------------------------- /site/cleanup.bat: -------------------------------------------------------------------------------- 1 | @echo off 2 | @REM 3 | @REM Copyright (c) 2023 Bosch.IO GmbH and others 4 | @REM 5 | @REM This program and the accompanying materials are made 6 | @REM available under the terms of the Eclipse Public License 2.0 7 | @REM which is available at https://www.eclipse.org/legal/epl-2.0/ 8 | @REM 9 | @REM SPDX-License-Identifier: EPL-2.0 10 | @REM 11 | 12 | rem This script is used to clean up the previously generated or downloaded files. 13 | 14 | echo [INFO] Remove Hugo Theme 15 | rmdir /Q /S themes resources public 16 | echo [INFO] ... done 17 | 18 | echo [INFO] 19 | 20 | echo [INFO] Remove generated REST docs 21 | del /Q content\rest-api\*.html 22 | echo [INFO] ... done 23 | -------------------------------------------------------------------------------- /site/cleanup.sh: -------------------------------------------------------------------------------- 1 | # 2 | # Copyright (c) 2018 Bosch Software Innovations GmbH and others 3 | # 4 | # This program and the accompanying materials are made 5 | # available under the terms of the Eclipse Public License 2.0 6 | # which is available at https://www.eclipse.org/legal/epl-2.0/ 7 | # 8 | # SPDX-License-Identifier: EPL-2.0 9 | # 10 | 11 | # This script is used to clean up the previously generated or downloaded files. 12 | 13 | #!/bin/bash 14 | 15 | 16 | echo "[INFO] Remove Hugo Theme" 17 | rm -rf themes resources public 18 | echo "[INFO] ... done" 19 | 20 | echo "[INFO] " 21 | 22 | echo "[INFO] Remove generated REST docs" 23 | rm -f content/rest-api/*.json 24 | rm -f content/rest-api/*.html 25 | echo "[INFO] ... done" 26 | 27 | 28 | -------------------------------------------------------------------------------- /site/content/architecture.md: -------------------------------------------------------------------------------- 1 | --- 2 | title: Architecture 3 | weight: 60 4 | --- 5 | 6 | Overview of hawkBit modules and used 3rd party technology: 7 | ![](../images/architecture/architecture.png) -------------------------------------------------------------------------------- /site/content/blog/2023-09-21-epl2.0.md: -------------------------------------------------------------------------------- 1 | --- 2 | title: Eclipse hawkBit upgrade to Eclipse Public License - v 2.0 3 | parent: Blog 4 | weight: 100 5 | --- 6 | 7 | hawkBit is a domain-independent back-end framework for rolling out software updates to constrained edge devices as well 8 | as more powerful controllers and gateways connected to IP based networking infrastructure. It is part of the Eclipse IoT 9 | since 2015. 10 | 11 | In this article, we want to give an overview of the latest highlights of hawkBit license changes. 12 | 13 | ## hawkBit license upgraded to Eclipse Public License - v 2.0 14 | 15 | Based on the issues 16 | [Switch to EPL 2.0 License](https://github.com/eclipse-hawkbit/hawkbit/issues/1393) and 17 | [Update hawkBit's license to EPL 2.0](https://github.com/eclipse-hawkbit/hawkbit/issues/1008) 18 | the hawkBit license is upgraded 19 | from [Eclipse Public License - Version 1.0](http://www.eclipse.org/org/documents/epl-v10.php) to 20 | [Eclipse Public License - v 2.0](https://www.eclipse.org/org/documents/epl-2.0/EPL-2.0.txt). 21 | 22 | -------------------------------------------------------------------------------- /site/layouts/partials/nav_link.html: -------------------------------------------------------------------------------- 1 | {{ $currentMenuEntry := .Scratch.Get "currentMenuEntry" }} 2 | {{ $isCurrent := eq .Permalink ($currentMenuEntry.URL | absURL | printf "%s") }} 3 | 4 | 5 | 6 | {{ $currentMenuEntry.Pre }} 7 | {{ $currentMenuEntry.Name }} 8 | 9 | 10 | {{ if $isCurrent }} 11 |

    12 |
13 | {{ end }} -------------------------------------------------------------------------------- /site/src/main/resources/banner.txt: -------------------------------------------------------------------------------- 1 | ______ _ _ _ _ ____ _ _ 2 | | ____| | (_) | | | | | _ \(_) | 3 | | |__ ___| |_ _ __ ___ ___ | |__ __ ___ _| | _| |_) |_| |_ 4 | | __| / __| | | '_ \/ __|/ _ \ | '_ \ / _` \ \ /\ / / |/ / _ <| | __| 5 | | |___| (__| | | |_) \__ \ __/ | | | | (_| |\ V V /| <| |_) | | |_ 6 | |______\___|_|_| .__/|___/\___| |_| |_|\__,_| \_/\_/ |_|\_\____/|_|\__| 7 | | | 8 | |_| 9 | 10 | Eclipse hawkBit Update Server ${application.formatted-version} 11 | using Spring Boot ${spring-boot.formatted-version} 12 | 13 | Go to https://www.eclipse.org/hawkbit for more information. 14 | -------------------------------------------------------------------------------- /site/static/images/architecture/architecture.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/eclipse-hawkbit/hawkbit/ebdcab2aaa8835fc2a0bcef555b1a7b5bd196a23/site/static/images/architecture/architecture.png -------------------------------------------------------------------------------- /site/static/images/architecture/targetStatusStates.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/eclipse-hawkbit/hawkbit/ebdcab2aaa8835fc2a0bcef555b1a7b5bd196a23/site/static/images/architecture/targetStatusStates.png -------------------------------------------------------------------------------- /site/static/images/eclipse_foundation_logo.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/eclipse-hawkbit/hawkbit/ebdcab2aaa8835fc2a0bcef555b1a7b5bd196a23/site/static/images/eclipse_foundation_logo.png -------------------------------------------------------------------------------- /site/static/images/eventing-within-cluster.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/eclipse-hawkbit/hawkbit/ebdcab2aaa8835fc2a0bcef555b1a7b5bd196a23/site/static/images/eventing-within-cluster.png -------------------------------------------------------------------------------- /site/static/images/favicon.ico: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/eclipse-hawkbit/hawkbit/ebdcab2aaa8835fc2a0bcef555b1a7b5bd196a23/site/static/images/favicon.ico -------------------------------------------------------------------------------- /site/static/images/hawkBit_overview.jpeg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/eclipse-hawkbit/hawkbit/ebdcab2aaa8835fc2a0bcef555b1a7b5bd196a23/site/static/images/hawkBit_overview.jpeg -------------------------------------------------------------------------------- /site/static/images/hawkbit_icon.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/eclipse-hawkbit/hawkbit/ebdcab2aaa8835fc2a0bcef555b1a7b5bd196a23/site/static/images/hawkbit_icon.png -------------------------------------------------------------------------------- /site/static/images/hawkbit_logo.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/eclipse-hawkbit/hawkbit/ebdcab2aaa8835fc2a0bcef555b1a7b5bd196a23/site/static/images/hawkbit_logo.png -------------------------------------------------------------------------------- /site/static/images/hawkbit_transparency.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/eclipse-hawkbit/hawkbit/ebdcab2aaa8835fc2a0bcef555b1a7b5bd196a23/site/static/images/hawkbit_transparency.png -------------------------------------------------------------------------------- /site/static/images/interfaces.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/eclipse-hawkbit/hawkbit/ebdcab2aaa8835fc2a0bcef555b1a7b5bd196a23/site/static/images/interfaces.png -------------------------------------------------------------------------------- /site/static/images/overall_cluster.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/eclipse-hawkbit/hawkbit/ebdcab2aaa8835fc2a0bcef555b1a7b5bd196a23/site/static/images/overall_cluster.png -------------------------------------------------------------------------------- /site/static/images/packagemodel.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/eclipse-hawkbit/hawkbit/ebdcab2aaa8835fc2a0bcef555b1a7b5bd196a23/site/static/images/packagemodel.png -------------------------------------------------------------------------------- /site/static/images/rollout.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/eclipse-hawkbit/hawkbit/ebdcab2aaa8835fc2a0bcef555b1a7b5bd196a23/site/static/images/rollout.png -------------------------------------------------------------------------------- /site/static/images/rolloutgroupstatediagram.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/eclipse-hawkbit/hawkbit/ebdcab2aaa8835fc2a0bcef555b1a7b5bd196a23/site/static/images/rolloutgroupstatediagram.png -------------------------------------------------------------------------------- /site/static/images/rolloutstatediagram.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/eclipse-hawkbit/hawkbit/ebdcab2aaa8835fc2a0bcef555b1a7b5bd196a23/site/static/images/rolloutstatediagram.png -------------------------------------------------------------------------------- /site/static/images/security/exampleReverseProxyArchitecture.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/eclipse-hawkbit/hawkbit/ebdcab2aaa8835fc2a0bcef555b1a7b5bd196a23/site/static/images/security/exampleReverseProxyArchitecture.png -------------------------------------------------------------------------------- /site/static/images/security/exampleReverseProxySettings.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/eclipse-hawkbit/hawkbit/ebdcab2aaa8835fc2a0bcef555b1a7b5bd196a23/site/static/images/security/exampleReverseProxySettings.png -------------------------------------------------------------------------------- /site/static/images/security/gatewayToken.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/eclipse-hawkbit/hawkbit/ebdcab2aaa8835fc2a0bcef555b1a7b5bd196a23/site/static/images/security/gatewayToken.png -------------------------------------------------------------------------------- /site/static/images/security/targetToken.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/eclipse-hawkbit/hawkbit/ebdcab2aaa8835fc2a0bcef555b1a7b5bd196a23/site/static/images/security/targetToken.png -------------------------------------------------------------------------------- /site/static/slides/plugin/multiplex/client.js: -------------------------------------------------------------------------------- 1 | (function () { 2 | var multiplex = Reveal.getConfig().multiplex; 3 | var socketId = multiplex.id; 4 | var socket = io.connect(multiplex.url); 5 | 6 | socket.on(multiplex.id, function (data) { 7 | // ignore data from sockets that aren't ours 8 | if (data.socketId !== socketId) { 9 | return; 10 | } 11 | if (window.location.host === 'localhost:1947') return; 12 | 13 | Reveal.setState(data.state); 14 | }); 15 | }()); 16 | -------------------------------------------------------------------------------- /site/static/slides/resources/images/hawkBit_overview.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/eclipse-hawkbit/hawkbit/ebdcab2aaa8835fc2a0bcef555b1a7b5bd196a23/site/static/slides/resources/images/hawkBit_overview.jpg -------------------------------------------------------------------------------- /site/static/slides/resources/images/hawkbit_logo.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/eclipse-hawkbit/hawkbit/ebdcab2aaa8835fc2a0bcef555b1a7b5bd196a23/site/static/slides/resources/images/hawkbit_logo.png -------------------------------------------------------------------------------- /site/static/slides/reveal.js.txt: -------------------------------------------------------------------------------- 1 | The files and folders in this folder (folder slides) are based on reveal.js 2 | 3 | MIT licensed 4 | Copyright (C) 2015 Hakim El Hattab, http://hakim.se 5 | 6 | see https://github.com/hakimel/reveal.js/ --------------------------------------------------------------------------------