Dmf batch support changes. (#1273)

* Dmf batch support changes. Implement single batch message instead of multiple messages for assigment on multiple targets. Added system property to switch on/off.

Signed-off-by: Dimitar Shterev <dimitar.shterev@bosch.io>

* Dmf batch support changes. Implement single batch message instead of multiple messages for assigment on multiple targets. Added system property to switch on/off.

Signed-off-by: Dimitar Shterev <dimitar.shterev@bosch.io>

* Dmf batch support changes. Implement single batch message instead of multiple messages for assigment on multiple targets. Added system property to switch on/off.

Signed-off-by: Dimitar Shterev <dimitar.shterev@bosch.io>

* Dmf batch support changes. Implement single batch message instead of multiple messages for assigment on multiple targets. Added system property to switch on/off.

Signed-off-by: Dimitar Shterev <dimitar.shterev@bosch.io>

* Update hawkbit-dmf/hawkbit-dmf-amqp/src/test/java/org/eclipse/hawkbit/integration/AmqpMessageDispatcherServiceIntegrationTest.java

Co-authored-by: Bondar Bogdan <36962546+bogdan-bondar@users.noreply.github.com>

* Dmf batch support changes. Implement single batch message instead of multiple messages for assigment on multiple targets. Added system property to switch on/off.

Signed-off-by: Dimitar Shterev <dimitar.shterev@bosch.io>

* Dmf batch support changes. Implement single batch message instead of multiple messages for assigment on multiple targets. Added system property to switch on/off.

Signed-off-by: Dimitar Shterev <dimitar.shterev@bosch.io>

* Dmf batch support changes. Implement code review comments.

Signed-off-by: Dimitar Shterev <dimitar.shterev@bosch.io>

Signed-off-by: Dimitar Shterev <dimitar.shterev@bosch.io>
Co-authored-by: Bondar Bogdan <36962546+bogdan-bondar@users.noreply.github.com>
This commit is contained in:
Dimitar Shterev
2022-08-30 10:55:52 +03:00
committed by GitHub
parent ccb5fa3b3f
commit bc2f228edc
13 changed files with 406 additions and 19 deletions

View File

@@ -46,6 +46,16 @@ public enum EventTopic {
/**
* Topic to send multiple actions to the device.
*/
MULTI_ACTION
MULTI_ACTION,
/**
* Topic when sending a download only action to multiple devices.
*/
BATCH_DOWNLOAD,
/**
* Topic when sending a download and install action to multiple devices.
*/
BATCH_DOWNLOAD_AND_INSTALL
}

View File

@@ -0,0 +1,102 @@
/**
* Copyright (c) 2022 Bosch.IO 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.dmf.json.model;
import com.fasterxml.jackson.annotation.JsonIgnoreProperties;
import com.fasterxml.jackson.annotation.JsonInclude;
import com.fasterxml.jackson.annotation.JsonInclude.Include;
import com.fasterxml.jackson.annotation.JsonProperty;
import java.util.ArrayList;
import java.util.Collections;
import java.util.List;
/**
* JSON representation of batch download and update request.
*
*/
@JsonInclude(Include.NON_NULL)
@JsonIgnoreProperties(ignoreUnknown = true)
public class DmfBatchDownloadAndUpdateRequest {
@JsonProperty
private Long timestamp;
@JsonProperty
private List<DmfTarget> targets;
@JsonProperty
private List<DmfSoftwareModule> softwareModules;
public Long getTimestamp() {
return timestamp;
}
public void setTimestamp(final Long timestamp) {
this.timestamp = timestamp;
}
public List<DmfSoftwareModule> getSoftwareModules() {
if (softwareModules == null) {
return Collections.emptyList();
}
return Collections.unmodifiableList(softwareModules);
}
/**
* Add a Software module.
*
* @param createSoftwareModule
* the module
*/
public void addSoftwareModule(final DmfSoftwareModule createSoftwareModule) {
if (softwareModules == null) {
softwareModules = new ArrayList<>();
}
softwareModules.add(createSoftwareModule);
}
public List<DmfTarget> getTargets() {
if (targets == null) {
return Collections.emptyList();
}
return Collections.unmodifiableList(targets);
}
/**
* Add a Target.
*
* @param target
* the target
*/
public void addTarget(final DmfTarget target) {
if (targets == null) {
targets = new ArrayList<>();
}
targets.add(target);
}
/**
* Add multiple Targets.
*
* @param targets
* the target
*/
public void addTargets(final List<DmfTarget> targets) {
if (this.targets == null) {
this.targets = new ArrayList<>();
}
this.targets.addAll(targets);
}
}

View File

@@ -0,0 +1,64 @@
/**
* Copyright (c) 2022 Bosch.IO 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.dmf.json.model;
import com.fasterxml.jackson.annotation.JsonIgnoreProperties;
import com.fasterxml.jackson.annotation.JsonInclude;
import com.fasterxml.jackson.annotation.JsonInclude.Include;
import com.fasterxml.jackson.annotation.JsonProperty;
/**
* Json representation of Target used in batch download and update request.
*
*/
@JsonInclude(Include.NON_NULL)
@JsonIgnoreProperties(ignoreUnknown = true)
public class DmfTarget {
@JsonProperty
private Long actionId;
@JsonProperty
private String controllerId;
@JsonProperty
private String targetSecurityToken;
public Long getActionId() {
return actionId;
}
public void setActionId(final Long actionId) {
this.actionId = actionId;
}
public String getControllerId() {
return controllerId;
}
public void setControllerId(final String controllerId) {
this.controllerId = controllerId;
}
public String getTargetSecurityToken() {
return targetSecurityToken;
}
public void setTargetSecurityToken(final String targetSecurityToken) {
this.targetSecurityToken = targetSecurityToken;
}
@Override
public String toString() {
return String.format(
"DmfTarget [actionId=%d controllerId='%s']",
actionId, controllerId);
}
}