Skip to content
Snippets Groups Projects
Commit 87300b7b authored by Lluis Gifre Renom's avatar Lluis Gifre Renom
Browse files

Merge branch 'pr-automation-fix' into 'develop'

fix(automation): ztpUpdate loop resolved

See merge request !6
parents 568149a1 16419e29
No related branches found
No related tags found
2 merge requests!54Release 2.0.0,!6fix(automation): ztpUpdate loop resolved
......@@ -50,33 +50,34 @@ public class AutomationServiceImpl implements AutomationService {
device -> {
final var id = deviceId;
if (!device.isEnabled()) {
LOGGER.infof(MESSAGE, device);
final var initialConfiguration =
deviceService.getInitialConfiguration(device.getDeviceId());
device.enableDevice();
LOGGER.infof("Enabled device [%s]", id);
initialConfiguration
.subscribe()
.with(
deviceConfig -> {
device.setDeviceConfiguration(deviceConfig);
final var configuredDeviceIdUni = deviceService.configureDevice(device);
configuredDeviceIdUni
.subscribe()
.with(
configuredDeviceId ->
LOGGER.infof(
"Device [%s] has been enabled and configured successfully with %s.\n",
id, deviceConfig));
});
} else {
LOGGER.infof("%s has been already enabled. Ignoring...", device);
if (device.isEnabled()) {
LOGGER.warnf("%s has already been enabled. Ignoring...", device);
return;
}
LOGGER.infof(MESSAGE, device);
final var initialConfiguration =
deviceService.getInitialConfiguration(device.getDeviceId());
device.enableDevice();
LOGGER.infof("Enabled device [%s]", id);
initialConfiguration
.subscribe()
.with(
deviceConfig -> {
device.setDeviceConfiguration(deviceConfig);
final var configuredDeviceIdUni = deviceService.configureDevice(device);
configuredDeviceIdUni
.subscribe()
.with(
configuredDeviceId ->
LOGGER.infof(
"Device [%s] has been successfully enabled and configured with %s.\n",
id, deviceConfig));
});
});
return deserializedDeviceUni;
......@@ -92,13 +93,23 @@ public class AutomationServiceImpl implements AutomationService {
device -> {
final var id = deviceId;
if (device.isDisabled()) {
LOGGER.warnf("%s has already been disabled. Ignoring...", device);
return;
}
device.disableDevice();
LOGGER.infof("Disabled device [%s]", id);
LOGGER.infof(MESSAGE, device);
final var empty = deviceService.deleteDevice(device.getDeviceId());
empty
.subscribe()
.with(emptyMessage -> LOGGER.infof("Device [%s] has been deleted.\n", id));
.with(
emptyMessage ->
LOGGER.infof("Device [%s] has been successfully deleted.\n", id));
});
return deserializedDeviceUni;
......@@ -114,6 +125,11 @@ public class AutomationServiceImpl implements AutomationService {
device -> {
final var id = deviceId;
if (!device.isEnabled()) {
LOGGER.warnf("Cannot update disabled device %s. Ignoring...", device);
return;
}
LOGGER.infof(MESSAGE, device);
device.setDeviceConfiguration(deviceConfig);
final var updatedDeviceIdUni = deviceService.configureDevice(device);
......@@ -123,7 +139,7 @@ public class AutomationServiceImpl implements AutomationService {
.with(
configuredDeviceId ->
LOGGER.infof(
"Device [%s] has been updated successfully with %s.\n",
"Device [%s] has been successfully updated with %s.\n",
id, deviceConfig));
});
......
......@@ -78,9 +78,11 @@ public class ContextSubscriber {
automationService.deleteDevice(deviceEvent.getDeviceId());
break;
case UPDATE:
LOGGER.infof("Received %s for device [%s]", event, deviceId);
automationService.updateDevice(
deviceEvent.getDeviceId(), deviceEvent.getDeviceConfig().orElse(null));
LOGGER.warnf(
"Received %s for device [%s]. " +
"No automation action on an already updated device",
event, deviceId);
break;
case UNDEFINED:
logWarningMessage(event, deviceId, eventType);
break;
......
......@@ -61,10 +61,18 @@ public class Device {
return deviceOperationalStatus == DeviceOperationalStatus.ENABLED;
}
public boolean isDisabled() {
return deviceOperationalStatus == DeviceOperationalStatus.DISABLED;
}
public void enableDevice() {
this.deviceOperationalStatus = DeviceOperationalStatus.ENABLED;
}
public void disableDevice() {
this.deviceOperationalStatus = DeviceOperationalStatus.DISABLED;
}
public String getDeviceId() {
return deviceId;
}
......
0% Loading or .
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment