Request attribute update after deployment (#750)

Send attribute update request to ddi connected device after successful software update

Signed-off-by: Stefan Klotz <stefan.klotz@bosch-si.com>
This commit is contained in:
Stefan Klotz
2018-10-25 17:12:41 +02:00
committed by Dominic Schabel
parent 93279c0803
commit f8e1a547b0
7 changed files with 232 additions and 95 deletions

View File

@@ -8,6 +8,9 @@
*/
package org.eclipse.hawkbit.repository.jpa;
import static org.eclipse.hawkbit.repository.model.Target.CONTROLLER_ATTRIBUTE_KEY_SIZE;
import static org.eclipse.hawkbit.repository.model.Target.CONTROLLER_ATTRIBUTE_VALUE_SIZE;
import java.net.URI;
import java.time.Duration;
import java.time.ZonedDateTime;
@@ -37,6 +40,7 @@ import org.eclipse.hawkbit.repository.MaintenanceScheduleHelper;
import org.eclipse.hawkbit.repository.QuotaManagement;
import org.eclipse.hawkbit.repository.RepositoryConstants;
import org.eclipse.hawkbit.repository.RepositoryProperties;
import org.eclipse.hawkbit.repository.TargetManagement;
import org.eclipse.hawkbit.repository.TenantConfigurationManagement;
import org.eclipse.hawkbit.repository.UpdateMode;
import org.eclipse.hawkbit.repository.builder.ActionStatusCreate;
@@ -97,9 +101,6 @@ import com.google.common.collect.Lists;
import com.google.common.collect.Maps;
import com.google.common.collect.Sets;
import static org.eclipse.hawkbit.repository.model.Target.CONTROLLER_ATTRIBUTE_KEY_SIZE;
import static org.eclipse.hawkbit.repository.model.Target.CONTROLLER_ATTRIBUTE_VALUE_SIZE;
/**
* JPA based {@link ControllerManagement} implementation.
*
@@ -120,6 +121,9 @@ public class JpaControllerManagement implements ControllerManagement {
@Autowired
private TargetRepository targetRepository;
@Autowired
private TargetManagement targetManagement;
@Autowired
private SoftwareModuleRepository softwareModuleRepository;
@@ -595,7 +599,9 @@ public class JpaControllerManagement implements ControllerManagement {
* Sets {@link TargetUpdateStatus} based on given {@link ActionStatus}.
*/
private Action handleAddUpdateActionStatus(final JpaActionStatus actionStatus, final JpaAction action) {
LOG.debug("addUpdateActionStatus for action {}", action.getId());
String controllerId = null;
LOG.debug("handleAddUpdateActionStatus for action {}", action.getId());
switch (actionStatus.getStatus()) {
case ERROR:
@@ -604,7 +610,7 @@ public class JpaControllerManagement implements ControllerManagement {
handleErrorOnAction(action, target);
break;
case FINISHED:
handleFinishedAndStoreInTargetStatus(action);
controllerId = handleFinishedAndStoreInTargetStatus(action);
break;
default:
// information status entry - check for a potential DOS attack
@@ -615,10 +621,13 @@ public class JpaControllerManagement implements ControllerManagement {
actionStatus.setAction(action);
actionStatusRepository.save(actionStatus);
final Action savedAction = actionRepository.save(action);
LOG.debug("addUpdateActionStatus for action {} isfinished.", action.getId());
return actionRepository.save(action);
if (controllerId != null) {
targetManagement.requestControllerAttributes(controllerId);
}
return savedAction;
}
private void handleErrorOnAction(final JpaAction mergedAction, final JpaTarget mergedTarget) {
@@ -634,7 +643,7 @@ public class JpaControllerManagement implements ControllerManagement {
ActionStatus.class, Action.class, actionStatusRepository::countByActionId);
}
private void handleFinishedAndStoreInTargetStatus(final JpaAction action) {
private String handleFinishedAndStoreInTargetStatus(final JpaAction action) {
final JpaTarget target = (JpaTarget) action.getTarget();
action.setActive(false);
action.setStatus(Status.FINISHED);
@@ -651,8 +660,9 @@ public class JpaControllerManagement implements ControllerManagement {
}
targetRepository.save(target);
entityManager.detach(ds);
return target.getControllerId();
}
@Override