diff --git a/README.md b/README.md index e70b3521c..990707312 100644 --- a/README.md +++ b/README.md @@ -21,7 +21,7 @@ see [hawkBit Documentation](https://www.eclipse.org/hawkbit/documentation/overvi We offer a sandbox installation that is free for everyone to try out hawkBit. However, keep in mind that the sandbox database will be reset from time to time. It is also not possible to upload any artifacts into the sandbox. But you can use it to try out the Management UI, Management API and DDI API. -https://hawkbit.eu-gb.mybluemix.net/UI/ (currently unavailable - will be back soon) +https://hawkbit.eu-gb.mybluemix.net/UI/ # Device Integration diff --git a/examples/hawkbit-example-mgmt-simulator/src/main/java/org/eclipse/hawkbit/mgmt/client/Application.java b/examples/hawkbit-example-mgmt-simulator/src/main/java/org/eclipse/hawkbit/mgmt/client/Application.java index 97538f72c..1bdbbb136 100644 --- a/examples/hawkbit-example-mgmt-simulator/src/main/java/org/eclipse/hawkbit/mgmt/client/Application.java +++ b/examples/hawkbit-example-mgmt-simulator/src/main/java/org/eclipse/hawkbit/mgmt/client/Application.java @@ -17,7 +17,6 @@ import org.eclipse.hawkbit.mgmt.client.resource.MgmtSoftwareModuleClientResource import org.eclipse.hawkbit.mgmt.client.resource.MgmtTargetClientResource; import org.eclipse.hawkbit.mgmt.client.resource.MgmtTargetTagClientResource; import org.eclipse.hawkbit.mgmt.client.scenarios.ConfigurableScenario; -import org.eclipse.hawkbit.mgmt.client.scenarios.CreateStartedRolloutExample; import org.eclipse.hawkbit.mgmt.client.scenarios.upload.FeignMultipartEncoder; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.boot.Banner.Mode; @@ -51,9 +50,6 @@ public class Application implements CommandLineRunner { @Autowired private ConfigurableScenario configuredScenario; - @Autowired - private CreateStartedRolloutExample gettingStartedRolloutScenario; - public static void main(final String[] args) { new SpringApplicationBuilder().bannerMode(Mode.OFF).sources(Application.class).run(args); } @@ -62,7 +58,7 @@ public class Application implements CommandLineRunner { public void run(final String... args) throws Exception { if (containsArg("--createrollout", args)) { // run the create and start rollout example - gettingStartedRolloutScenario.run(); + configuredScenario.runWithRollout(); } else { // run the configured scenario from properties configuredScenario.run(); @@ -86,11 +82,6 @@ public class Application implements CommandLineRunner { distributionSetTagResource, clientConfigurationProperties); } - @Bean - public CreateStartedRolloutExample createStartedRolloutExample() { - return new CreateStartedRolloutExample(); - } - private static MgmtSoftwareModuleClientResource uploadSoftwareModule( final ClientConfigurationProperties configuration) { final ObjectMapper mapper = new ObjectMapper() diff --git a/examples/hawkbit-example-mgmt-simulator/src/main/java/org/eclipse/hawkbit/mgmt/client/scenarios/ConfigurableScenario.java b/examples/hawkbit-example-mgmt-simulator/src/main/java/org/eclipse/hawkbit/mgmt/client/scenarios/ConfigurableScenario.java index c4fafb228..3e9299d19 100644 --- a/examples/hawkbit-example-mgmt-simulator/src/main/java/org/eclipse/hawkbit/mgmt/client/scenarios/ConfigurableScenario.java +++ b/examples/hawkbit-example-mgmt-simulator/src/main/java/org/eclipse/hawkbit/mgmt/client/scenarios/ConfigurableScenario.java @@ -101,6 +101,19 @@ public class ConfigurableScenario { clientConfigurationProperties.getScenarios().forEach(this::createScenario); } + /** + * Run the default getting started scenario including rollout + */ + public void runWithRollout() { + + LOGGER.info("Running Configurable Scenario..."); + + clientConfigurationProperties.getScenarios().forEach(scenario -> { + scenario.setRunRollouts(true); + createScenario(scenario); + }); + } + private void createScenario(final Scenario scenario) { if (scenario.isCleanRepository()) { cleanRepository(); @@ -204,11 +217,19 @@ public class ConfigurableScenario { } private void runRollouts(final Scenario scenario) { + if (scenario.getDistributionSets() <= 0) { + return; + } + distributionSetResource.getDistributionSets(0, scenario.getDistributionSets(), null, null).getBody() .getContent().forEach(set -> runRollout(set, scenario)); } private void runSemiAutomaticRollouts(final Scenario scenario) { + if (scenario.getDistributionSets() <= 0) { + return; + } + distributionSetResource.getDistributionSets(0, scenario.getDistributionSets(), null, null).getBody() .getContent().forEach(set -> runSemiAutomaticRollout(set, scenario)); } @@ -319,6 +340,10 @@ public class ConfigurableScenario { } private void createDistributionSets(final Scenario scenario) { + if (scenario.getDistributionSets() <= 0) { + return; + } + LOGGER.info("Creating {} distribution sets", scenario.getDistributionSets()); final BigDecimal pages = new BigDecimal(scenario.getDistributionSets()) .divide(new BigDecimal(PAGE_SIZE), BigDecimal.ROUND_UP).max(new BigDecimal(1)); @@ -389,6 +414,10 @@ public class ConfigurableScenario { } private void createTargets(final Scenario scenario, final List deviceGroupTags) { + if (scenario.getTargets() <= 0) { + return; + } + LOGGER.info("Creating {} targets", scenario.getTargets()); final BigDecimal pages = new BigDecimal(scenario.getTargets()) .divide(new BigDecimal(PAGE_SIZE), BigDecimal.ROUND_UP).max(new BigDecimal(1)); diff --git a/examples/hawkbit-example-mgmt-simulator/src/main/java/org/eclipse/hawkbit/mgmt/client/scenarios/CreateStartedRolloutExample.java b/examples/hawkbit-example-mgmt-simulator/src/main/java/org/eclipse/hawkbit/mgmt/client/scenarios/CreateStartedRolloutExample.java deleted file mode 100644 index d46cbe0ea..000000000 --- a/examples/hawkbit-example-mgmt-simulator/src/main/java/org/eclipse/hawkbit/mgmt/client/scenarios/CreateStartedRolloutExample.java +++ /dev/null @@ -1,108 +0,0 @@ -/** - * Copyright (c) 2015 Bosch Software Innovations GmbH and others. - * - * All rights reserved. This program and the accompanying materials - * are made available under the terms of the Eclipse Public License v1.0 - * which accompanies this distribution, and is available at - * http://www.eclipse.org/legal/epl-v10.html - */ -package org.eclipse.hawkbit.mgmt.client.scenarios; - -import java.util.List; - -import org.eclipse.hawkbit.mgmt.client.resource.MgmtDistributionSetClientResource; -import org.eclipse.hawkbit.mgmt.client.resource.MgmtDistributionSetTypeClientResource; -import org.eclipse.hawkbit.mgmt.client.resource.MgmtRolloutClientResource; -import org.eclipse.hawkbit.mgmt.client.resource.MgmtSoftwareModuleClientResource; -import org.eclipse.hawkbit.mgmt.client.resource.MgmtSoftwareModuleTypeClientResource; -import org.eclipse.hawkbit.mgmt.client.resource.MgmtTargetClientResource; -import org.eclipse.hawkbit.mgmt.client.resource.builder.DistributionSetBuilder; -import org.eclipse.hawkbit.mgmt.client.resource.builder.DistributionSetTypeBuilder; -import org.eclipse.hawkbit.mgmt.client.resource.builder.RolloutBuilder; -import org.eclipse.hawkbit.mgmt.client.resource.builder.SoftwareModuleAssigmentBuilder; -import org.eclipse.hawkbit.mgmt.client.resource.builder.SoftwareModuleBuilder; -import org.eclipse.hawkbit.mgmt.client.resource.builder.SoftwareModuleTypeBuilder; -import org.eclipse.hawkbit.mgmt.client.resource.builder.TargetBuilder; -import org.eclipse.hawkbit.mgmt.json.model.distributionset.MgmtDistributionSet; -import org.eclipse.hawkbit.mgmt.json.model.rollout.MgmtRolloutResponseBody; -import org.eclipse.hawkbit.mgmt.json.model.softwaremodule.MgmtSoftwareModule; -import org.eclipse.hawkbit.mgmt.json.model.softwaremoduletype.MgmtSoftwareModuleType; -import org.springframework.beans.factory.annotation.Autowired; - -/** - * Example for creating and starting a Rollout. - * - */ -public class CreateStartedRolloutExample { - - /* known software module type name and key */ - private static final String SM_MODULE_TYPE = "gettingstarted-rollout-example"; - - /* known distribution set type name and key */ - private static final String DS_MODULE_TYPE = SM_MODULE_TYPE; - - @Autowired - private MgmtDistributionSetClientResource distributionSetResource; - - @Autowired - private MgmtSoftwareModuleClientResource softwareModuleResource; - - @Autowired - private MgmtTargetClientResource targetResource; - - @Autowired - private MgmtRolloutClientResource rolloutResource; - - @Autowired - private MgmtDistributionSetTypeClientResource distributionSetTypeResource; - - @Autowired - private MgmtSoftwareModuleTypeClientResource softwareModuleTypeResource; - - /** - * Run the Rollout scenario. - */ - public void run() { - - // create three SoftwareModuleTypes - final List createdSoftwareModuleTypes = softwareModuleTypeResource - .createSoftwareModuleTypes(new SoftwareModuleTypeBuilder().key(SM_MODULE_TYPE).name(SM_MODULE_TYPE) - .maxAssignments(1).build()) - .getBody(); - - // create one DistributionSetType - distributionSetTypeResource.createDistributionSetTypes(new DistributionSetTypeBuilder().key(DS_MODULE_TYPE) - .name(DS_MODULE_TYPE).mandatorymodules(createdSoftwareModuleTypes.get(0).getModuleId()).build()) - .getBody(); - - // create one DistributionSet - final List distributionSetsRest = distributionSetResource.createDistributionSets( - new DistributionSetBuilder().name("rollout-example").version("1.0.0").type(DS_MODULE_TYPE).build()) - .getBody(); - - // create three SoftwareModules - final List softwareModulesRest = softwareModuleResource - .createSoftwareModules( - new SoftwareModuleBuilder().name("firmware").version("1.0.0").type(SM_MODULE_TYPE).build()) - .getBody(); - - // Assign SoftwareModule to DistributionSet - distributionSetResource.assignSoftwareModules(distributionSetsRest.get(0).getDsId(), - new SoftwareModuleAssigmentBuilder().id(softwareModulesRest.get(0).getModuleId()).build()); - - // create ten targets - targetResource.createTargets(new TargetBuilder().controllerId("00-FF-AA-0").name("00-FF-AA-0") - .description("Targets used for rollout example").buildAsList(10)); - - // create a Rollout - final MgmtRolloutResponseBody rolloutResponseBody = rolloutResource - .create(new RolloutBuilder().name("MyRollout").groupSize(2).targetFilterQuery("name==00-FF-AA-0*") - .distributionSetId(distributionSetsRest.get(0).getDsId()).successThreshold("80") - .errorThreshold("50").build()) - .getBody(); - - // start the created Rollout - rolloutResource.start(rolloutResponseBody.getRolloutId()); - } - -} diff --git a/examples/hawkbit-example-mgmt-simulator/src/main/resources/application.properties b/examples/hawkbit-example-mgmt-simulator/src/main/resources/application.properties index 881df6e81..e61334255 100644 --- a/examples/hawkbit-example-mgmt-simulator/src/main/resources/application.properties +++ b/examples/hawkbit-example-mgmt-simulator/src/main/resources/application.properties @@ -22,4 +22,5 @@ hawkbit.scenarios.[0].distribution-sets=3 hawkbit.scenarios.[0].sm-fw-name=gettingstarted-example hawkbit.scenarios.[0].sm-sw-name=gettingstarted-example hawkbit.scenarios.[0].runRollouts=false +hawkbit.scenarios.[0].runSemiAutomaticRollouts=false hawkbit.scenarios.[0].artifactsPerSM=0 diff --git a/hawkbit-runtime/hawkbit-update-server/src/main/resources/application.properties b/hawkbit-runtime/hawkbit-update-server/src/main/resources/application.properties index 9d648e7fe..c0c129c82 100644 --- a/hawkbit-runtime/hawkbit-update-server/src/main/resources/application.properties +++ b/hawkbit-runtime/hawkbit-update-server/src/main/resources/application.properties @@ -24,6 +24,9 @@ spring.rabbitmq.virtualHost=/ spring.rabbitmq.host=localhost spring.rabbitmq.port=5672 +# Monitoring +endpoints.health.enabled=true + # UI demo account hawkbit.server.ui.demo.password=admin hawkbit.server.ui.demo.user=admin