From 759a814763e8ea6b6cbf74e5a96a48aebf8811ac Mon Sep 17 00:00:00 2001 From: dashevchenko Date: Mon, 7 Apr 2025 12:39:54 +0300 Subject: [PATCH 1/2] added gateway image version configuration --- application/src/main/resources/thingsboard.yml | 2 ++ .../server/controller/DeviceConnectivityControllerTest.java | 2 +- .../server/dao/device/DeviceConnectivityServiceImpl.java | 6 ++++-- .../thingsboard/server/dao/util/DeviceConnectivityUtil.java | 6 ++---- 4 files changed, 9 insertions(+), 7 deletions(-) diff --git a/application/src/main/resources/thingsboard.yml b/application/src/main/resources/thingsboard.yml index 7ede65e375..6f139eaa6e 100644 --- a/application/src/main/resources/thingsboard.yml +++ b/application/src/main/resources/thingsboard.yml @@ -1421,6 +1421,8 @@ device: port: "${DEVICE_CONNECTIVITY_COAPS_PORT:5684}" # Path to the COAP CA root certificate file pem_cert_file: "${DEVICE_CONNECTIVITY_COAPS_CA_ROOT_CERT:cafile.pem}" + gateway: + image_version: "${DEVICE_CONNECTIVITY_GATEWAY_IMAGE_VERSION:latest}" # Edges parameters edges: diff --git a/application/src/test/java/org/thingsboard/server/controller/DeviceConnectivityControllerTest.java b/application/src/test/java/org/thingsboard/server/controller/DeviceConnectivityControllerTest.java index 2a6c847591..cb475d7f16 100644 --- a/application/src/test/java/org/thingsboard/server/controller/DeviceConnectivityControllerTest.java +++ b/application/src/test/java/org/thingsboard/server/controller/DeviceConnectivityControllerTest.java @@ -298,7 +298,7 @@ public class DeviceConnectivityControllerTest extends AbstractControllerTest { "services:\n" + " # ThingsBoard IoT Gateway Service Configuration\n" + " tb-gateway:\n" + - " image: thingsboard/tb-gateway\n" + + " image: thingsboard/tb-gateway:latest\n" + " container_name: tb-gateway\n" + " restart: always\n" + "\n" + diff --git a/dao/src/main/java/org/thingsboard/server/dao/device/DeviceConnectivityServiceImpl.java b/dao/src/main/java/org/thingsboard/server/dao/device/DeviceConnectivityServiceImpl.java index 606388e465..eb7ce56b9f 100644 --- a/dao/src/main/java/org/thingsboard/server/dao/device/DeviceConnectivityServiceImpl.java +++ b/dao/src/main/java/org/thingsboard/server/dao/device/DeviceConnectivityServiceImpl.java @@ -41,7 +41,6 @@ import org.thingsboard.server.common.data.security.DeviceCredentialsType; import org.thingsboard.server.dao.settings.AdminSettingsService; import org.thingsboard.server.dao.util.DeviceConnectivityUtil; -import java.io.IOException; import java.io.InputStream; import java.io.InputStreamReader; import java.net.URISyntaxException; @@ -86,6 +85,8 @@ public class DeviceConnectivityServiceImpl implements DeviceConnectivityService private String mqttsPemCertFile; @Value("${device.connectivity.coaps.pem_cert_file:}") private String coapsPemCertFile; + @Value("${device.connectivity.gateway.image_version:latest}") + private String gatewayImageVersion; @Override public JsonNode findDevicePublishTelemetryCommands(String baseUrl, Device device) throws URISyntaxException { @@ -157,7 +158,8 @@ public class DeviceConnectivityServiceImpl implements DeviceConnectivityService String mqttType = isEnabled(MQTTS) ? MQTTS : MQTT; DeviceConnectivityInfo properties = getConnectivity(mqttType); DeviceCredentials creds = deviceCredentialsService.findDeviceCredentialsByDeviceId(device.getTenantId(), device.getId()); - return DeviceConnectivityUtil.getGatewayDockerComposeFile(baseUrl, properties, creds, mqttType); + String host = getHost(baseUrl, properties, mqttType); + return DeviceConnectivityUtil.getGatewayDockerComposeFile(host, gatewayImageVersion, creds); } private DeviceConnectivityInfo getConnectivity(String protocol) { diff --git a/dao/src/main/java/org/thingsboard/server/dao/util/DeviceConnectivityUtil.java b/dao/src/main/java/org/thingsboard/server/dao/util/DeviceConnectivityUtil.java index 56e0e44778..cae2d56ae5 100644 --- a/dao/src/main/java/org/thingsboard/server/dao/util/DeviceConnectivityUtil.java +++ b/dao/src/main/java/org/thingsboard/server/dao/util/DeviceConnectivityUtil.java @@ -92,15 +92,13 @@ public class DeviceConnectivityUtil { return command.toString(); } - public static Resource getGatewayDockerComposeFile(String baseUrl, DeviceConnectivityInfo properties, DeviceCredentials deviceCredentials, String mqttType) throws URISyntaxException { - String host = getHost(baseUrl, properties, mqttType); - + public static Resource getGatewayDockerComposeFile(String host, String gatewayImageVersion, DeviceCredentials deviceCredentials) { StringBuilder dockerComposeBuilder = new StringBuilder(); dockerComposeBuilder.append("version: '3.4'\n"); dockerComposeBuilder.append("services:\n"); dockerComposeBuilder.append(" # ThingsBoard IoT Gateway Service Configuration\n"); dockerComposeBuilder.append(" tb-gateway:\n"); - dockerComposeBuilder.append(" image: thingsboard/tb-gateway\n"); + dockerComposeBuilder.append(" image: thingsboard/tb-gateway:").append(gatewayImageVersion).append("\n"); dockerComposeBuilder.append(" container_name: tb-gateway\n"); dockerComposeBuilder.append(" restart: always\n"); dockerComposeBuilder.append("\n"); From ffbe67c54b5c0c634edd1af2c878cebc59ad9410 Mon Sep 17 00:00:00 2001 From: dashevchenko Date: Mon, 7 Apr 2025 16:21:26 +0300 Subject: [PATCH 2/2] added env description --- application/src/main/resources/thingsboard.yml | 1 + 1 file changed, 1 insertion(+) diff --git a/application/src/main/resources/thingsboard.yml b/application/src/main/resources/thingsboard.yml index 6f139eaa6e..37f2bcd5a7 100644 --- a/application/src/main/resources/thingsboard.yml +++ b/application/src/main/resources/thingsboard.yml @@ -1422,6 +1422,7 @@ device: # Path to the COAP CA root certificate file pem_cert_file: "${DEVICE_CONNECTIVITY_COAPS_CA_ROOT_CERT:cafile.pem}" gateway: + # The docker tag for thingsboard/tb-gateway image used in docker-compose file for gateway launch image_version: "${DEVICE_CONNECTIVITY_GATEWAY_IMAGE_VERSION:latest}" # Edges parameters