diff --git a/application/src/main/java/org/thingsboard/server/actors/ActorSystemContext.java b/application/src/main/java/org/thingsboard/server/actors/ActorSystemContext.java index c43b643045..9cadd0db5e 100644 --- a/application/src/main/java/org/thingsboard/server/actors/ActorSystemContext.java +++ b/application/src/main/java/org/thingsboard/server/actors/ActorSystemContext.java @@ -335,9 +335,9 @@ public class ActorSystemContext { @Getter private long statisticsPersistFrequency; - @Value("${edges.rpc.enabled}") + @Value("${edges.enabled}") @Getter - private boolean edgesRpcEnabled; + private boolean edgesEnabled; @Scheduled(fixedDelayString = "${actors.statistics.js_print_interval_ms}") public void printStats() { diff --git a/application/src/main/java/org/thingsboard/server/actors/device/DeviceActorMessageProcessor.java b/application/src/main/java/org/thingsboard/server/actors/device/DeviceActorMessageProcessor.java index 68ced0b7ab..0ddcd60eca 100644 --- a/application/src/main/java/org/thingsboard/server/actors/device/DeviceActorMessageProcessor.java +++ b/application/src/main/java/org/thingsboard/server/actors/device/DeviceActorMessageProcessor.java @@ -130,7 +130,7 @@ class DeviceActorMessageProcessor extends AbstractContextAwareMsgProcessor { this.defaultMetaData = new TbMsgMetaData(); this.defaultMetaData.putValue("deviceName", deviceName); this.defaultMetaData.putValue("deviceType", deviceType); - if (systemContext.isEdgesRpcEnabled()) { + if (systemContext.isEdgesEnabled()) { this.edgeId = findRelatedEdgeId(); } return true; @@ -169,7 +169,7 @@ class DeviceActorMessageProcessor extends AbstractContextAwareMsgProcessor { } boolean sent; - if (systemContext.isEdgesRpcEnabled() && edgeId != null) { + if (systemContext.isEdgesEnabled() && edgeId != null) { log.debug("[{}][{}] device is related to edge [{}]. Saving RPC request to edge queue", tenantId, deviceId, edgeId.getId()); saveRpcRequestToEdgeQueue(request, rpcRequest.getRequestId()); sent = true; diff --git a/application/src/main/java/org/thingsboard/server/controller/BaseController.java b/application/src/main/java/org/thingsboard/server/controller/BaseController.java index ff9039aabc..09b23b0429 100644 --- a/application/src/main/java/org/thingsboard/server/controller/BaseController.java +++ b/application/src/main/java/org/thingsboard/server/controller/BaseController.java @@ -254,9 +254,9 @@ public abstract class BaseController { @Getter private boolean logControllerErrorStackTrace; - @Value("${edges.rpc.enabled}") + @Value("${edges.enabled}") @Getter - private boolean edgesRpcEnabled; + protected boolean edgesEnabled; @ExceptionHandler(ThingsboardException.class) public void handleThingsboardException(ThingsboardException ex, HttpServletResponse response) { @@ -884,7 +884,7 @@ public abstract class BaseController { } protected void sendNotificationMsgToEdgeService(TenantId tenantId, EdgeId edgeId, CustomerId customerId, EdgeEventActionType action) { - if (!edgesRpcEnabled) { + if (!edgesEnabled) { return; } try { @@ -895,7 +895,7 @@ public abstract class BaseController { } protected void sendNotificationMsgToEdgeService(TenantId tenantId, EntityId entityId, CustomerId customerId, EdgeEventActionType action) { - if (!edgesRpcEnabled) { + if (!edgesEnabled) { return; } EdgeEventType type = EdgeUtils.getEdgeEventTypeByEntityType(entityId.getEntityType()); @@ -909,7 +909,7 @@ public abstract class BaseController { } protected void sendNotificationMsgToEdgeService(TenantId tenantId, EntityRelation relation, EdgeEventActionType action) { - if (!edgesRpcEnabled) { + if (!edgesEnabled) { return; } try { @@ -927,7 +927,7 @@ public abstract class BaseController { } protected void sendNotificationMsgToEdgeService(TenantId tenantId, EdgeId edgeId, EntityId entityId, EntityType entityType, EdgeEventActionType action) { - if (!edgesRpcEnabled) { + if (!edgesEnabled) { return; } EdgeEventType type = EdgeUtils.getEdgeEventTypeByEntityType(entityType); diff --git a/application/src/main/java/org/thingsboard/server/controller/EdgeController.java b/application/src/main/java/org/thingsboard/server/controller/EdgeController.java index 21f5438d59..7e60b840b4 100644 --- a/application/src/main/java/org/thingsboard/server/controller/EdgeController.java +++ b/application/src/main/java/org/thingsboard/server/controller/EdgeController.java @@ -64,6 +64,13 @@ public class EdgeController extends BaseController { public static final String EDGE_ID = "edgeId"; + @PreAuthorize("hasAnyAuthority('SYS_ADMIN', 'TENANT_ADMIN', 'CUSTOMER_USER')") + @RequestMapping(value = "/edges/enabled", method = RequestMethod.GET) + @ResponseBody + public boolean isEdgesSupportEnabled() { + return edgesEnabled; + } + @PreAuthorize("hasAuthority('TENANT_ADMIN')") @RequestMapping(value = "/edge/{edgeId}", method = RequestMethod.GET) @ResponseBody @@ -470,7 +477,7 @@ public class EdgeController extends BaseController { public void syncEdge(@RequestBody EdgeId edgeId) throws ThingsboardException { try { edgeId = checkNotNull(edgeId); - if (isEdgesRpcEnabled()) { + if (isEdgesEnabled()) { EdgeGrpcSession session = edgeGrpcService.getEdgeGrpcSessionById(edgeId); Edge edge = session.getEdge(); syncEdgeService.sync(edge); diff --git a/application/src/main/java/org/thingsboard/server/service/edge/rpc/EdgeEventStorageSettings.java b/application/src/main/java/org/thingsboard/server/service/edge/rpc/EdgeEventStorageSettings.java index 13e05e905f..a9368bbd1f 100644 --- a/application/src/main/java/org/thingsboard/server/service/edge/rpc/EdgeEventStorageSettings.java +++ b/application/src/main/java/org/thingsboard/server/service/edge/rpc/EdgeEventStorageSettings.java @@ -23,10 +23,10 @@ import org.springframework.stereotype.Component; @Component @Data public class EdgeEventStorageSettings { - @Value("${edges.rpc.storage.max_read_records_count}") + @Value("${edges.storage.max_read_records_count}") private int maxReadRecordsCount; - @Value("${edges.rpc.storage.no_read_records_sleep}") + @Value("${edges.storage.no_read_records_sleep}") private long noRecordsSleepInterval; - @Value("${edges.rpc.storage.sleep_between_batches}") + @Value("${edges.storage.sleep_between_batches}") private long sleepIntervalBetweenBatches; } diff --git a/application/src/main/java/org/thingsboard/server/service/edge/rpc/EdgeGrpcService.java b/application/src/main/java/org/thingsboard/server/service/edge/rpc/EdgeGrpcService.java index ca3b578734..8fd335efea 100644 --- a/application/src/main/java/org/thingsboard/server/service/edge/rpc/EdgeGrpcService.java +++ b/application/src/main/java/org/thingsboard/server/service/edge/rpc/EdgeGrpcService.java @@ -59,7 +59,7 @@ import java.util.concurrent.TimeUnit; @Service @Slf4j -@ConditionalOnProperty(prefix = "edges.rpc", value = "enabled", havingValue = "true") +@ConditionalOnProperty(prefix = "edges", value = "enabled", havingValue = "true") @TbCoreComponent public class EdgeGrpcService extends EdgeRpcServiceGrpc.EdgeRpcServiceImplBase implements EdgeRpcService { diff --git a/application/src/main/resources/thingsboard.yml b/application/src/main/resources/thingsboard.yml index b01697e5f3..9538756617 100644 --- a/application/src/main/resources/thingsboard.yml +++ b/application/src/main/resources/thingsboard.yml @@ -576,8 +576,8 @@ transport: # Edges parameters edges: + enabled: "${EDGES_ENABLED:false}" rpc: - enabled: "${EDGES_RPC_ENABLED:false}" port: "${EDGES_RPC_PORT:7070}" client_max_keep_alive_time_sec: "${EDGES_RPC_CLIENT_MAX_KEEP_ALIVE_TIME_SEC:300}" ssl: @@ -585,10 +585,10 @@ edges: enabled: "${EDGES_RPC_SSL_ENABLED:false}" cert: "${EDGES_RPC_SSL_CERT:certChainFile.pem}" private_key: "${EDGES_RPC_SSL_PRIVATE_KEY:privateKeyFile.pem}" - storage: - max_read_records_count: "${EDGES_RPC_STORAGE_MAX_READ_RECORDS_COUNT:50}" - no_read_records_sleep: "${EDGES_RPC_NO_READ_RECORDS_SLEEP:1000}" - sleep_between_batches: "${EDGES_RPC_SLEEP_BETWEEN_BATCHES:1000}" + storage: + max_read_records_count: "${EDGES_STORAGE_MAX_READ_RECORDS_COUNT:50}" + no_read_records_sleep: "${EDGES_NO_READ_RECORDS_SLEEP:1000}" + sleep_between_batches: "${EDGES_SLEEP_BETWEEN_BATCHES:1000}" scheduler_pool_size: "${EDGES_SCHEDULER_POOL_SIZE:4}" edge_events_ttl: "${EDGES_EDGE_EVENTS_TTL:0}" state: diff --git a/dao/src/main/java/org/thingsboard/server/dao/edge/EdgeServiceImpl.java b/dao/src/main/java/org/thingsboard/server/dao/edge/EdgeServiceImpl.java index 26a683b814..7dc6a57316 100644 --- a/dao/src/main/java/org/thingsboard/server/dao/edge/EdgeServiceImpl.java +++ b/dao/src/main/java/org/thingsboard/server/dao/edge/EdgeServiceImpl.java @@ -126,12 +126,12 @@ public class EdgeServiceImpl extends AbstractEntityService implements EdgeServic @Autowired private RelationService relationService; - @Value("${edges.rpc.enabled:false}") - private boolean edgesRpcEnabled; + @Value("${edges.enabled:false}") + private boolean edgesEnabled; @PostConstruct public void init() { - if (edgesRpcEnabled) { + if (edgesEnabled) { initRestTemplate(); } } diff --git a/ui-ngx/src/assets/locale/locale.constant-en_US.json b/ui-ngx/src/assets/locale/locale.constant-en_US.json index 099bfa7334..924cadf2fc 100644 --- a/ui-ngx/src/assets/locale/locale.constant-en_US.json +++ b/ui-ngx/src/assets/locale/locale.constant-en_US.json @@ -1204,7 +1204,7 @@ "selected-edges": "{ count, plural, 1 {1 edge} other {# edges} } selected", "any-edge": "Any edge", "no-edge-types-matching": "No edge types matching '{{entitySubtype}}' were found.", - "edge-type-list-empty": "No device types selected.", + "edge-type-list-empty": "No edge types selected.", "edge-types": "Edge types", "dashboard": "Edge dashboard", "unassign-edges-action-title": "Unassign { count, plural, 1 {1 edge} other {# edges} } from customer", @@ -1863,7 +1863,11 @@ "entity-field": "Entity field", "access-token": "Access token", "isgateway": "Is Gateway", - "description": "Description" + "description": "Description", + "edgeLicenseKey": "License Key", + "cloudEndpoint": "Cloud Endpoint", + "routingKey": "Edge key", + "secret": "Edge secret" }, "stepper-text":{ "select-file": "Select a file",