Browse Source

Minor refactoring. Provide better naming and refactor due to changes in thingsboard-updates

pull/9688/head
Andrii Landiak 3 years ago
parent
commit
4f0760327e
  1. 30
      application/src/main/java/org/thingsboard/server/service/edge/instructions/DefaultEdgeUpgradeInstructionsService.java
  2. 4
      application/src/main/java/org/thingsboard/server/service/edge/instructions/EdgeUpgradeInstructionsService.java
  3. 5
      application/src/main/java/org/thingsboard/server/service/update/DefaultUpdateService.java
  4. 10
      application/src/test/java/org/thingsboard/server/controller/EdgeControllerTest.java
  5. 2
      common/data/src/main/java/org/thingsboard/server/common/data/EdgeUpgradeInfo.java
  6. 2
      common/data/src/main/java/org/thingsboard/server/common/data/EdgeUpgradeMessage.java

30
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<String, UpgradeInfo> upgradeVersionHashMap = new HashMap<>();
private static final Map<String, EdgeUpgradeInfo> 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<String, UpgradeInfo> map) {
public void updateInstructionMap(Map<String, EdgeUpgradeInfo> 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"));

4
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<String, UpgradeInfo> upgradeVersions);
void updateInstructionMap(Map<String, EdgeUpgradeInfo> upgradeVersions);
void updateApplicationVersion(String version);
}

5
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());
}

10
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<String, UpgradeInfo> 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<String, EdgeUpgradeInfo> 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);

2
common/data/src/main/java/org/thingsboard/server/common/data/UpgradeInfo.java → 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;
}

2
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<String, UpgradeInfo> edgeVersions;
private final Map<String, EdgeUpgradeInfo> edgeVersions;
}

Loading…
Cancel
Save