diff --git a/application/src/main/resources/thingsboard.yml b/application/src/main/resources/thingsboard.yml index 7ede65e375..37f2bcd5a7 100644 --- a/application/src/main/resources/thingsboard.yml +++ b/application/src/main/resources/thingsboard.yml @@ -1421,6 +1421,9 @@ 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: + # 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 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");