diff --git a/application/src/main/java/org/thingsboard/server/service/edge/instructions/DefaultEdgeUpgradeInstructionsService.java b/application/src/main/java/org/thingsboard/server/service/edge/instructions/DefaultEdgeUpgradeInstructionsService.java index 138fae70f2..0401521a1c 100644 --- a/application/src/main/java/org/thingsboard/server/service/edge/instructions/DefaultEdgeUpgradeInstructionsService.java +++ b/application/src/main/java/org/thingsboard/server/service/edge/instructions/DefaultEdgeUpgradeInstructionsService.java @@ -20,7 +20,7 @@ import lombok.extern.slf4j.Slf4j; import org.springframework.beans.factory.annotation.Value; import org.springframework.boot.autoconfigure.condition.ConditionalOnProperty; import org.springframework.stereotype.Service; -import org.thingsboard.server.common.data.UpgradeInfo; +import org.thingsboard.server.common.data.EdgeUpgradeInfo; import org.thingsboard.server.common.data.edge.EdgeInstructions; import org.thingsboard.server.queue.util.TbCoreComponent; import org.thingsboard.server.service.install.InstallScripts; @@ -39,7 +39,7 @@ import java.util.Map; @TbCoreComponent public class DefaultEdgeUpgradeInstructionsService implements EdgeUpgradeInstructionsService { - private static final Map upgradeVersionHashMap = new HashMap<>(); + private static final Map upgradeVersionHashMap = new HashMap<>(); private static final String EDGE_DIR = "edge"; private static final String INSTRUCTIONS_DIR = "instructions"; @@ -71,23 +71,23 @@ public class DefaultEdgeUpgradeInstructionsService implements EdgeUpgradeInstruc } @Override - public void updateInstructionMap(Map map) { + public void updateInstructionMap(Map map) { for (String key : map.keySet()) { upgradeVersionHashMap.put(key, map.get(key)); } } private EdgeInstructions getDockerUpgradeInstructions(String tbVersion, String currentEdgeVersion) { - UpgradeInfo upgradeInfo = upgradeVersionHashMap.get(currentEdgeVersion); - if (upgradeInfo == null || upgradeInfo.getNextEdgeVersion() == null || tbVersion.equals(currentEdgeVersion)) { + EdgeUpgradeInfo edgeUpgradeInfo = upgradeVersionHashMap.get(currentEdgeVersion); + if (edgeUpgradeInfo == null || edgeUpgradeInfo.getNextEdgeVersion() == null || tbVersion.equals(currentEdgeVersion)) { return new EdgeInstructions("Edge upgrade instruction for " + currentEdgeVersion + "EDGE is not available."); } boolean rmUpgradeCompose = false; StringBuilder result = new StringBuilder(readFile(resolveFile("docker", "upgrade_preparing.md"))); - while (upgradeInfo.getNextEdgeVersion() != null || !tbVersion.equals(currentEdgeVersion)) { - String edgeVersion = upgradeInfo.getNextEdgeVersion(); + while (edgeUpgradeInfo.getNextEdgeVersion() != null || !tbVersion.equals(currentEdgeVersion)) { + String edgeVersion = edgeUpgradeInfo.getNextEdgeVersion(); String ubuntuUpgradeInstructions = readFile(resolveFile("docker", "instructions.md")); - if (upgradeInfo.isRequiresUpdateDb()) { + if (edgeUpgradeInfo.isRequiresUpdateDb()) { String upgradeDb = readFile(resolveFile("docker", "upgrade_db.md")); ubuntuUpgradeInstructions = ubuntuUpgradeInstructions.replace("${UPGRADE_DB}", upgradeDb); } else { @@ -103,7 +103,7 @@ public class DefaultEdgeUpgradeInstructionsService implements EdgeUpgradeInstruc ubuntuUpgradeInstructions = ubuntuUpgradeInstructions.replace("${TB_EDGE_VERSION}", edgeVersion + "EDGE"); ubuntuUpgradeInstructions = ubuntuUpgradeInstructions.replace("${FROM_TB_EDGE_VERSION}", currentEdgeVersion + "EDGE"); currentEdgeVersion = edgeVersion; - upgradeInfo = upgradeVersionHashMap.get(upgradeInfo.getNextEdgeVersion()); + edgeUpgradeInfo = upgradeVersionHashMap.get(edgeUpgradeInfo.getNextEdgeVersion()); result.append(ubuntuUpgradeInstructions); } String startService = readFile(resolveFile("docker", "start_service.md")); @@ -113,17 +113,17 @@ public class DefaultEdgeUpgradeInstructionsService implements EdgeUpgradeInstruc } private EdgeInstructions getLinuxUpgradeInstructions(String tbVersion, String currentEdgeVersion, String os) { - UpgradeInfo upgradeInfo = upgradeVersionHashMap.get(currentEdgeVersion); - if (upgradeInfo == null || upgradeInfo.getNextEdgeVersion() == null || tbVersion.equals(currentEdgeVersion)) { + EdgeUpgradeInfo edgeUpgradeInfo = upgradeVersionHashMap.get(currentEdgeVersion); + if (edgeUpgradeInfo == null || edgeUpgradeInfo.getNextEdgeVersion() == null || tbVersion.equals(currentEdgeVersion)) { return new EdgeInstructions("Edge upgrade instruction for " + currentEdgeVersion + "EDGE is not available."); } String upgrade_preparing = readFile(resolveFile("upgrade_preparing.md")); upgrade_preparing = upgrade_preparing.replace("${OS}", os.equals("centos") ? "RHEL/CentOS 7/8" : "Ubuntu"); StringBuilder result = new StringBuilder(upgrade_preparing); - while (upgradeInfo.getNextEdgeVersion() != null || !tbVersion.equals(currentEdgeVersion)) { - String edgeVersion = upgradeInfo.getNextEdgeVersion(); + while (edgeUpgradeInfo.getNextEdgeVersion() != null || !tbVersion.equals(currentEdgeVersion)) { + String edgeVersion = edgeUpgradeInfo.getNextEdgeVersion(); String ubuntuUpgradeInstructions = readFile(resolveFile(os, "instructions.md")); - if (upgradeInfo.isRequiresUpdateDb()) { + if (edgeUpgradeInfo.isRequiresUpdateDb()) { String upgradeDb = readFile(resolveFile("upgrade_db.md")); ubuntuUpgradeInstructions = ubuntuUpgradeInstructions.replace("${UPGRADE_DB}", upgradeDb); } else { @@ -134,7 +134,7 @@ public class DefaultEdgeUpgradeInstructionsService implements EdgeUpgradeInstruc ubuntuUpgradeInstructions = ubuntuUpgradeInstructions.replace("${TB_EDGE_VERSION}", edgeVersion); ubuntuUpgradeInstructions = ubuntuUpgradeInstructions.replace("${FROM_TB_EDGE_VERSION}", currentEdgeVersion); currentEdgeVersion = edgeVersion; - upgradeInfo = upgradeVersionHashMap.get(upgradeInfo.getNextEdgeVersion()); + edgeUpgradeInfo = upgradeVersionHashMap.get(edgeUpgradeInfo.getNextEdgeVersion()); result.append(ubuntuUpgradeInstructions); } String startService = readFile(resolveFile("start_service.md")); diff --git a/application/src/main/java/org/thingsboard/server/service/edge/instructions/EdgeUpgradeInstructionsService.java b/application/src/main/java/org/thingsboard/server/service/edge/instructions/EdgeUpgradeInstructionsService.java index 4c67c1ab9c..e6f5cb0753 100644 --- a/application/src/main/java/org/thingsboard/server/service/edge/instructions/EdgeUpgradeInstructionsService.java +++ b/application/src/main/java/org/thingsboard/server/service/edge/instructions/EdgeUpgradeInstructionsService.java @@ -15,7 +15,7 @@ */ package org.thingsboard.server.service.edge.instructions; -import org.thingsboard.server.common.data.UpgradeInfo; +import org.thingsboard.server.common.data.EdgeUpgradeInfo; import org.thingsboard.server.common.data.edge.EdgeInstructions; import java.util.Map; @@ -24,7 +24,7 @@ public interface EdgeUpgradeInstructionsService { EdgeInstructions getUpgradeInstructions(String edgeVersion, String upgradeMethod); - void updateInstructionMap(Map upgradeVersions); + void updateInstructionMap(Map upgradeVersions); void updateApplicationVersion(String version); } diff --git a/application/src/main/java/org/thingsboard/server/service/update/DefaultUpdateService.java b/application/src/main/java/org/thingsboard/server/service/update/DefaultUpdateService.java index cf31464ba9..6a86d022df 100644 --- a/application/src/main/java/org/thingsboard/server/service/update/DefaultUpdateService.java +++ b/application/src/main/java/org/thingsboard/server/service/update/DefaultUpdateService.java @@ -154,14 +154,15 @@ public class DefaultUpdateService implements UpdateService { .updateInfo(updateMessage) .build()); } + ObjectNode edgeRequest = JacksonUtil.newObjectNode().put(VERSION_PARAM, version); String prevEdgeInstallVersion = edgeInstallVersion; - edgeInstallVersion = restClient.postForObject(UPDATE_SERVER_BASE_URL + "/api/v1/edge/install", new HttpEntity<>(request.toString(), headers), String.class); + edgeInstallVersion = restClient.postForObject(UPDATE_SERVER_BASE_URL + "/api/v1/edge/installMapping", new HttpEntity<>(edgeRequest.toString(), headers), String.class); if (edgeInstallVersion != null && !edgeInstallVersion.equals(prevEdgeInstallVersion)) { edgeInstallInstructionsService.updateApplicationVersion(edgeInstallVersion); edgeUpgradeInstructionsService.updateApplicationVersion(edgeInstallVersion); } EdgeUpgradeMessage prevEdgeUpgradeMessage = edgeUpgradeMessage; - edgeUpgradeMessage = restClient.postForObject(UPDATE_SERVER_BASE_URL + "/api/v1/edge/upgrades", new HttpEntity<>(request.toString(), headers), EdgeUpgradeMessage.class); + edgeUpgradeMessage = restClient.postForObject(UPDATE_SERVER_BASE_URL + "/api/v1/edge/upgradeMapping", new HttpEntity<>(edgeRequest.toString(), headers), EdgeUpgradeMessage.class); if (edgeUpgradeMessage != null && !edgeUpgradeMessage.equals(prevEdgeUpgradeMessage)) { edgeUpgradeInstructionsService.updateInstructionMap(edgeUpgradeMessage.getEdgeVersions()); } diff --git a/application/src/test/java/org/thingsboard/server/controller/EdgeControllerTest.java b/application/src/test/java/org/thingsboard/server/controller/EdgeControllerTest.java index fe5cceb206..9ecabf06f3 100644 --- a/application/src/test/java/org/thingsboard/server/controller/EdgeControllerTest.java +++ b/application/src/test/java/org/thingsboard/server/controller/EdgeControllerTest.java @@ -48,7 +48,7 @@ import org.thingsboard.server.common.data.EntitySubtype; import org.thingsboard.server.common.data.StringUtils; import org.thingsboard.server.common.data.Tenant; import org.thingsboard.server.common.data.TenantProfile; -import org.thingsboard.server.common.data.UpgradeInfo; +import org.thingsboard.server.common.data.EdgeUpgradeInfo; import org.thingsboard.server.common.data.User; import org.thingsboard.server.common.data.asset.Asset; import org.thingsboard.server.common.data.asset.AssetProfile; @@ -1187,10 +1187,10 @@ public class EdgeControllerTest extends AbstractControllerTest { @Test public void testGetEdgeUpgradeInstructions() throws Exception { // UpdateInfo config is updating from Thingsboard Update server - HashMap upgradeInfoHashMap = new HashMap<>(); - upgradeInfoHashMap.put("3.6.0", new UpgradeInfo(true, "3.6.1")); - upgradeInfoHashMap.put("3.6.1", new UpgradeInfo(true, "3.6.2")); - upgradeInfoHashMap.put("3.6.2", new UpgradeInfo(true, null)); + HashMap upgradeInfoHashMap = new HashMap<>(); + upgradeInfoHashMap.put("3.6.0", new EdgeUpgradeInfo(true, "3.6.1")); + upgradeInfoHashMap.put("3.6.1", new EdgeUpgradeInfo(true, "3.6.2")); + upgradeInfoHashMap.put("3.6.2", new EdgeUpgradeInfo(true, null)); edgeUpgradeInstructionsService.updateInstructionMap(upgradeInfoHashMap); Edge edge = constructEdge("Edge for Test Docker Upgrade Instructions", "default"); Edge savedEdge = doPost("/api/edge", edge, Edge.class); diff --git a/common/data/src/main/java/org/thingsboard/server/common/data/UpgradeInfo.java b/common/data/src/main/java/org/thingsboard/server/common/data/EdgeUpgradeInfo.java similarity index 96% rename from common/data/src/main/java/org/thingsboard/server/common/data/UpgradeInfo.java rename to common/data/src/main/java/org/thingsboard/server/common/data/EdgeUpgradeInfo.java index 8dd8f4d9b8..cadd589b49 100644 --- a/common/data/src/main/java/org/thingsboard/server/common/data/UpgradeInfo.java +++ b/common/data/src/main/java/org/thingsboard/server/common/data/EdgeUpgradeInfo.java @@ -20,7 +20,7 @@ import lombok.Getter; @AllArgsConstructor @Getter -public class UpgradeInfo { +public class EdgeUpgradeInfo { private boolean requiresUpdateDb; private String nextEdgeVersion; } diff --git a/common/data/src/main/java/org/thingsboard/server/common/data/EdgeUpgradeMessage.java b/common/data/src/main/java/org/thingsboard/server/common/data/EdgeUpgradeMessage.java index 67cbce56cb..bb17479607 100644 --- a/common/data/src/main/java/org/thingsboard/server/common/data/EdgeUpgradeMessage.java +++ b/common/data/src/main/java/org/thingsboard/server/common/data/EdgeUpgradeMessage.java @@ -29,5 +29,5 @@ public class EdgeUpgradeMessage implements Serializable { private static final long serialVersionUID = 2872965507642822989L; @ApiModelProperty(position = 1, value = "Mapping for upgrade versions and upgrade strategy (next ver).") - private final Map edgeVersions; + private final Map edgeVersions; }