|
|
|
@ -21,6 +21,9 @@ import lombok.extern.slf4j.Slf4j; |
|
|
|
import org.springframework.beans.factory.annotation.Autowired; |
|
|
|
import org.springframework.beans.factory.annotation.Value; |
|
|
|
import org.springframework.boot.info.BuildProperties; |
|
|
|
import org.springframework.http.HttpEntity; |
|
|
|
import org.springframework.http.HttpHeaders; |
|
|
|
import org.springframework.http.MediaType; |
|
|
|
import org.springframework.stereotype.Service; |
|
|
|
import org.springframework.web.client.RestTemplate; |
|
|
|
import org.thingsboard.common.util.ThingsBoardThreadFactory; |
|
|
|
@ -65,8 +68,8 @@ public class DefaultUpdateService implements UpdateService { |
|
|
|
|
|
|
|
private final ScheduledExecutorService scheduler = Executors.newScheduledThreadPool(1, ThingsBoardThreadFactory.forName("tb-update-service")); |
|
|
|
|
|
|
|
private ScheduledFuture checkUpdatesFuture = null; |
|
|
|
private RestTemplate restClient = new RestTemplate(); |
|
|
|
private ScheduledFuture<?> checkUpdatesFuture = null; |
|
|
|
private final RestTemplate restClient = new RestTemplate(); |
|
|
|
|
|
|
|
private UpdateMessage updateMessage; |
|
|
|
|
|
|
|
@ -94,7 +97,7 @@ public class DefaultUpdateService implements UpdateService { |
|
|
|
Path instanceIdPath = Paths.get(INSTANCE_ID_FILE); |
|
|
|
if (instanceIdPath.toFile().exists()) { |
|
|
|
byte[] data = Files.readAllBytes(instanceIdPath); |
|
|
|
if (data != null && data.length > 0) { |
|
|
|
if (data.length > 0) { |
|
|
|
try { |
|
|
|
result = UUID.fromString(new String(data)); |
|
|
|
} catch (IllegalArgumentException e) { |
|
|
|
@ -124,13 +127,15 @@ public class DefaultUpdateService implements UpdateService { |
|
|
|
Runnable checkUpdatesRunnable = () -> { |
|
|
|
try { |
|
|
|
log.trace("Executing check update method for instanceId [{}], platform [{}] and version [{}]", instanceId, platform, version); |
|
|
|
var headers = new HttpHeaders(); |
|
|
|
headers.setContentType(MediaType.APPLICATION_JSON); |
|
|
|
ObjectNode request = new ObjectMapper().createObjectNode(); |
|
|
|
request.put(PLATFORM_PARAM, platform); |
|
|
|
request.put(VERSION_PARAM, version); |
|
|
|
request.put(INSTANCE_ID_PARAM, instanceId.toString()); |
|
|
|
UpdateMessage prevUpdateMessage = updateMessage; |
|
|
|
updateMessage = restClient.postForObject(UPDATE_SERVER_BASE_URL + "/api/v2/thingsboard/updates", request, UpdateMessage.class); |
|
|
|
if (updateMessage.isUpdateAvailable() && !updateMessage.equals(prevUpdateMessage)) { |
|
|
|
updateMessage = restClient.postForObject(UPDATE_SERVER_BASE_URL + "/api/v2/thingsboard/updates", new HttpEntity<>(request.toString(), headers), UpdateMessage.class); |
|
|
|
if (updateMessage != null && updateMessage.isUpdateAvailable() && !updateMessage.equals(prevUpdateMessage)) { |
|
|
|
notificationRuleProcessor.process(NewPlatformVersionTrigger.builder() |
|
|
|
.updateInfo(updateMessage) |
|
|
|
.build()); |
|
|
|
|