Fixed mgmt simulator and sandbox (#584)
Signed-off-by: kaizimmerm <kai.zimmermann@bosch-si.com>
This commit is contained in:
@@ -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
|
||||
|
||||
|
||||
@@ -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()
|
||||
|
||||
@@ -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<Long> 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));
|
||||
|
||||
@@ -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<MgmtSoftwareModuleType> 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<MgmtDistributionSet> distributionSetsRest = distributionSetResource.createDistributionSets(
|
||||
new DistributionSetBuilder().name("rollout-example").version("1.0.0").type(DS_MODULE_TYPE).build())
|
||||
.getBody();
|
||||
|
||||
// create three SoftwareModules
|
||||
final List<MgmtSoftwareModule> 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());
|
||||
}
|
||||
|
||||
}
|
||||
@@ -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
|
||||
|
||||
@@ -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
|
||||
|
||||
Reference in New Issue
Block a user