Browse Source

Merge pull request #13117 from dashevchenko/gatewayImageVersion

Configurable gateway image version
pull/13124/head
Viacheslav Klimov 1 year ago
committed by GitHub
parent
commit
1247dd93f3
No known key found for this signature in database GPG Key ID: B5690EEEBB952194
  1. 3
      application/src/main/resources/thingsboard.yml
  2. 2
      application/src/test/java/org/thingsboard/server/controller/DeviceConnectivityControllerTest.java
  3. 6
      dao/src/main/java/org/thingsboard/server/dao/device/DeviceConnectivityServiceImpl.java
  4. 6
      dao/src/main/java/org/thingsboard/server/dao/util/DeviceConnectivityUtil.java

3
application/src/main/resources/thingsboard.yml

@ -1421,6 +1421,9 @@ device:
port: "${DEVICE_CONNECTIVITY_COAPS_PORT:5684}" port: "${DEVICE_CONNECTIVITY_COAPS_PORT:5684}"
# Path to the COAP CA root certificate file # Path to the COAP CA root certificate file
pem_cert_file: "${DEVICE_CONNECTIVITY_COAPS_CA_ROOT_CERT:cafile.pem}" 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 parameters
edges: edges:

2
application/src/test/java/org/thingsboard/server/controller/DeviceConnectivityControllerTest.java

@ -298,7 +298,7 @@ public class DeviceConnectivityControllerTest extends AbstractControllerTest {
"services:\n" + "services:\n" +
" # ThingsBoard IoT Gateway Service Configuration\n" + " # ThingsBoard IoT Gateway Service Configuration\n" +
" tb-gateway:\n" + " tb-gateway:\n" +
" image: thingsboard/tb-gateway\n" + " image: thingsboard/tb-gateway:latest\n" +
" container_name: tb-gateway\n" + " container_name: tb-gateway\n" +
" restart: always\n" + " restart: always\n" +
"\n" + "\n" +

6
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.settings.AdminSettingsService;
import org.thingsboard.server.dao.util.DeviceConnectivityUtil; import org.thingsboard.server.dao.util.DeviceConnectivityUtil;
import java.io.IOException;
import java.io.InputStream; import java.io.InputStream;
import java.io.InputStreamReader; import java.io.InputStreamReader;
import java.net.URISyntaxException; import java.net.URISyntaxException;
@ -86,6 +85,8 @@ public class DeviceConnectivityServiceImpl implements DeviceConnectivityService
private String mqttsPemCertFile; private String mqttsPemCertFile;
@Value("${device.connectivity.coaps.pem_cert_file:}") @Value("${device.connectivity.coaps.pem_cert_file:}")
private String coapsPemCertFile; private String coapsPemCertFile;
@Value("${device.connectivity.gateway.image_version:latest}")
private String gatewayImageVersion;
@Override @Override
public JsonNode findDevicePublishTelemetryCommands(String baseUrl, Device device) throws URISyntaxException { public JsonNode findDevicePublishTelemetryCommands(String baseUrl, Device device) throws URISyntaxException {
@ -157,7 +158,8 @@ public class DeviceConnectivityServiceImpl implements DeviceConnectivityService
String mqttType = isEnabled(MQTTS) ? MQTTS : MQTT; String mqttType = isEnabled(MQTTS) ? MQTTS : MQTT;
DeviceConnectivityInfo properties = getConnectivity(mqttType); DeviceConnectivityInfo properties = getConnectivity(mqttType);
DeviceCredentials creds = deviceCredentialsService.findDeviceCredentialsByDeviceId(device.getTenantId(), device.getId()); 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) { private DeviceConnectivityInfo getConnectivity(String protocol) {

6
dao/src/main/java/org/thingsboard/server/dao/util/DeviceConnectivityUtil.java

@ -92,15 +92,13 @@ public class DeviceConnectivityUtil {
return command.toString(); return command.toString();
} }
public static Resource getGatewayDockerComposeFile(String baseUrl, DeviceConnectivityInfo properties, DeviceCredentials deviceCredentials, String mqttType) throws URISyntaxException { public static Resource getGatewayDockerComposeFile(String host, String gatewayImageVersion, DeviceCredentials deviceCredentials) {
String host = getHost(baseUrl, properties, mqttType);
StringBuilder dockerComposeBuilder = new StringBuilder(); StringBuilder dockerComposeBuilder = new StringBuilder();
dockerComposeBuilder.append("version: '3.4'\n"); dockerComposeBuilder.append("version: '3.4'\n");
dockerComposeBuilder.append("services:\n"); dockerComposeBuilder.append("services:\n");
dockerComposeBuilder.append(" # ThingsBoard IoT Gateway Service Configuration\n"); dockerComposeBuilder.append(" # ThingsBoard IoT Gateway Service Configuration\n");
dockerComposeBuilder.append(" tb-gateway:\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(" container_name: tb-gateway\n");
dockerComposeBuilder.append(" restart: always\n"); dockerComposeBuilder.append(" restart: always\n");
dockerComposeBuilder.append("\n"); dockerComposeBuilder.append("\n");

Loading…
Cancel
Save