Showing
26 changed files
with
311 additions
and
236 deletions
... | ... | @@ -92,10 +92,10 @@ public class EdgeController extends BaseController { |
92 | 92 | edge.setTenantId(tenantId); |
93 | 93 | boolean created = edge.getId() == null; |
94 | 94 | |
95 | - RuleChain defaultRootEdgeRuleChain = null; | |
95 | + RuleChain edgeTemplateRootRuleChain = null; | |
96 | 96 | if (created) { |
97 | - defaultRootEdgeRuleChain = ruleChainService.getDefaultRootEdgeRuleChain(tenantId); | |
98 | - if (defaultRootEdgeRuleChain == null) { | |
97 | + edgeTemplateRootRuleChain = ruleChainService.getEdgeTemplateRootRuleChain(tenantId); | |
98 | + if (edgeTemplateRootRuleChain == null) { | |
99 | 99 | throw new DataValidationException("Root edge rule chain is not available!"); |
100 | 100 | } |
101 | 101 | } |
... | ... | @@ -108,8 +108,8 @@ public class EdgeController extends BaseController { |
108 | 108 | Edge savedEdge = checkNotNull(edgeService.saveEdge(edge)); |
109 | 109 | |
110 | 110 | if (created) { |
111 | - ruleChainService.assignRuleChainToEdge(tenantId, defaultRootEdgeRuleChain.getId(), savedEdge.getId()); | |
112 | - edgeNotificationService.setEdgeRootRuleChain(tenantId, savedEdge, defaultRootEdgeRuleChain.getId()); | |
111 | + ruleChainService.assignRuleChainToEdge(tenantId, edgeTemplateRootRuleChain.getId(), savedEdge.getId()); | |
112 | + edgeNotificationService.setEdgeRootRuleChain(tenantId, savedEdge, edgeTemplateRootRuleChain.getId()); | |
113 | 113 | edgeService.assignDefaultRuleChainsToEdge(tenantId, savedEdge.getId()); |
114 | 114 | } |
115 | 115 | |
... | ... | @@ -389,10 +389,12 @@ public class EdgeController extends BaseController { |
389 | 389 | checkNotNull(query.getEdgeTypes()); |
390 | 390 | checkEntityId(query.getParameters().getEntityId(), Operation.READ); |
391 | 391 | try { |
392 | - List<Edge> edges = checkNotNull(edgeService.findEdgesByQuery(getCurrentUser().getTenantId(), query).get()); | |
392 | + SecurityUser user = getCurrentUser(); | |
393 | + TenantId tenantId = user.getTenantId(); | |
394 | + List<Edge> edges = checkNotNull(edgeService.findEdgesByQuery(tenantId, query).get()); | |
393 | 395 | edges = edges.stream().filter(edge -> { |
394 | 396 | try { |
395 | - accessControlService.checkPermission(getCurrentUser(), Resource.EDGE, Operation.READ, edge.getId(), edge); | |
397 | + accessControlService.checkPermission(user, Resource.EDGE, Operation.READ, edge.getId(), edge); | |
396 | 398 | return true; |
397 | 399 | } catch (ThingsboardException e) { |
398 | 400 | return false; |
... | ... | @@ -419,14 +421,18 @@ public class EdgeController extends BaseController { |
419 | 421 | } |
420 | 422 | |
421 | 423 | @PreAuthorize("hasAuthority('TENANT_ADMIN')") |
422 | - @RequestMapping(value = "/edge/sync", method = RequestMethod.POST) | |
423 | - public void syncEdge(@RequestBody EdgeId edgeId) throws ThingsboardException { | |
424 | + @RequestMapping(value = "/edge/sync/{edgeId}", method = RequestMethod.POST) | |
425 | + public void syncEdge(@PathVariable("edgeId") String strEdgeId) throws ThingsboardException { | |
426 | + checkParameter("edgeId", strEdgeId); | |
424 | 427 | try { |
425 | - edgeId = checkNotNull(edgeId); | |
426 | 428 | if (isEdgesEnabled()) { |
427 | - EdgeGrpcSession session = edgeGrpcService.getEdgeGrpcSessionById(edgeId); | |
429 | + EdgeId edgeId = new EdgeId(toUUID(strEdgeId)); | |
430 | + edgeId = checkNotNull(edgeId); | |
431 | + SecurityUser user = getCurrentUser(); | |
432 | + TenantId tenantId = user.getTenantId(); | |
433 | + EdgeGrpcSession session = edgeGrpcService.getEdgeGrpcSessionById(tenantId, edgeId); | |
428 | 434 | Edge edge = session.getEdge(); |
429 | - syncEdgeService.sync(edge); | |
435 | + syncEdgeService.sync(tenantId, edge); | |
430 | 436 | } else { |
431 | 437 | throw new ThingsboardException("Edges support disabled", ThingsboardErrorCode.GENERAL); |
432 | 438 | } |
... | ... | @@ -455,4 +461,19 @@ public class EdgeController extends BaseController { |
455 | 461 | throw new ThingsboardException(e, ThingsboardErrorCode.SUBSCRIPTION_VIOLATION); |
456 | 462 | } |
457 | 463 | } |
464 | + | |
465 | + @PreAuthorize("hasAuthority('TENANT_ADMIN')") | |
466 | + @RequestMapping(value = "/edge/missingToRelatedRuleChains/{edgeId}", method = RequestMethod.GET) | |
467 | + @ResponseBody | |
468 | + public String findMissingToRelatedRuleChains(@PathVariable("edgeId") String strEdgeId) throws ThingsboardException { | |
469 | + try { | |
470 | + EdgeId edgeId = new EdgeId(toUUID(strEdgeId)); | |
471 | + edgeId = checkNotNull(edgeId); | |
472 | + SecurityUser user = getCurrentUser(); | |
473 | + TenantId tenantId = user.getTenantId(); | |
474 | + return edgeService.findMissingToRelatedRuleChains(tenantId, edgeId); | |
475 | + } catch (Exception e) { | |
476 | + throw handleException(e); | |
477 | + } | |
478 | + } | |
458 | 479 | } | ... | ... |
... | ... | @@ -495,14 +495,14 @@ public class RuleChainController extends BaseController { |
495 | 495 | } |
496 | 496 | |
497 | 497 | @PreAuthorize("hasAnyAuthority('TENANT_ADMIN')") |
498 | - @RequestMapping(value = "/ruleChain/{ruleChainId}/defaultRootEdge", method = RequestMethod.POST) | |
498 | + @RequestMapping(value = "/ruleChain/{ruleChainId}/edgeTemplateRoot", method = RequestMethod.POST) | |
499 | 499 | @ResponseBody |
500 | - public RuleChain setDefaultRootEdgeRuleChain(@PathVariable(RULE_CHAIN_ID) String strRuleChainId) throws ThingsboardException { | |
500 | + public RuleChain setEdgeTemplateRootRuleChain(@PathVariable(RULE_CHAIN_ID) String strRuleChainId) throws ThingsboardException { | |
501 | 501 | checkParameter(RULE_CHAIN_ID, strRuleChainId); |
502 | 502 | try { |
503 | 503 | RuleChainId ruleChainId = new RuleChainId(toUUID(strRuleChainId)); |
504 | 504 | RuleChain ruleChain = checkRuleChain(ruleChainId, Operation.WRITE); |
505 | - ruleChainService.setDefaultRootEdgeRuleChain(getTenantId(), ruleChainId); | |
505 | + ruleChainService.setEdgeTemplateRootRuleChain(getTenantId(), ruleChainId); | |
506 | 506 | return ruleChain; |
507 | 507 | } catch (Exception e) { |
508 | 508 | logEntityAction(emptyId(EntityType.RULE_CHAIN), |
... | ... | @@ -514,14 +514,14 @@ public class RuleChainController extends BaseController { |
514 | 514 | } |
515 | 515 | |
516 | 516 | @PreAuthorize("hasAuthority('TENANT_ADMIN')") |
517 | - @RequestMapping(value = "/ruleChain/{ruleChainId}/defaultEdge", method = RequestMethod.POST) | |
517 | + @RequestMapping(value = "/ruleChain/{ruleChainId}/autoAssignToEdge", method = RequestMethod.POST) | |
518 | 518 | @ResponseBody |
519 | - public RuleChain addDefaultEdgeRuleChain(@PathVariable(RULE_CHAIN_ID) String strRuleChainId) throws ThingsboardException { | |
519 | + public RuleChain setAutoAssignToEdgeRuleChain(@PathVariable(RULE_CHAIN_ID) String strRuleChainId) throws ThingsboardException { | |
520 | 520 | checkParameter(RULE_CHAIN_ID, strRuleChainId); |
521 | 521 | try { |
522 | 522 | RuleChainId ruleChainId = new RuleChainId(toUUID(strRuleChainId)); |
523 | 523 | RuleChain ruleChain = checkRuleChain(ruleChainId, Operation.WRITE); |
524 | - ruleChainService.addDefaultEdgeRuleChain(getTenantId(), ruleChainId); | |
524 | + ruleChainService.setAutoAssignToEdgeRuleChain(getTenantId(), ruleChainId); | |
525 | 525 | return ruleChain; |
526 | 526 | } catch (Exception e) { |
527 | 527 | logEntityAction(emptyId(EntityType.RULE_CHAIN), |
... | ... | @@ -533,14 +533,14 @@ public class RuleChainController extends BaseController { |
533 | 533 | } |
534 | 534 | |
535 | 535 | @PreAuthorize("hasAuthority('TENANT_ADMIN')") |
536 | - @RequestMapping(value = "/ruleChain/{ruleChainId}/defaultEdge", method = RequestMethod.DELETE) | |
536 | + @RequestMapping(value = "/ruleChain/{ruleChainId}/autoAssignToEdge", method = RequestMethod.DELETE) | |
537 | 537 | @ResponseBody |
538 | - public RuleChain removeDefaultEdgeRuleChain(@PathVariable(RULE_CHAIN_ID) String strRuleChainId) throws ThingsboardException { | |
538 | + public RuleChain unsetAutoAssignToEdgeRuleChain(@PathVariable(RULE_CHAIN_ID) String strRuleChainId) throws ThingsboardException { | |
539 | 539 | checkParameter(RULE_CHAIN_ID, strRuleChainId); |
540 | 540 | try { |
541 | 541 | RuleChainId ruleChainId = new RuleChainId(toUUID(strRuleChainId)); |
542 | 542 | RuleChain ruleChain = checkRuleChain(ruleChainId, Operation.WRITE); |
543 | - ruleChainService.removeDefaultEdgeRuleChain(getTenantId(), ruleChainId); | |
543 | + ruleChainService.unsetAutoAssignToEdgeRuleChain(getTenantId(), ruleChainId); | |
544 | 544 | return ruleChain; |
545 | 545 | } catch (Exception e) { |
546 | 546 | logEntityAction(emptyId(EntityType.RULE_CHAIN), |
... | ... | @@ -552,12 +552,12 @@ public class RuleChainController extends BaseController { |
552 | 552 | } |
553 | 553 | |
554 | 554 | @PreAuthorize("hasAnyAuthority('TENANT_ADMIN')") |
555 | - @RequestMapping(value = "/ruleChain/defaultEdgeRuleChains", method = RequestMethod.GET) | |
555 | + @RequestMapping(value = "/ruleChain/autoAssignToEdgeRuleChains", method = RequestMethod.GET) | |
556 | 556 | @ResponseBody |
557 | - public List<RuleChain> getDefaultEdgeRuleChains() throws ThingsboardException { | |
557 | + public List<RuleChain> getAutoAssignToEdgeRuleChains() throws ThingsboardException { | |
558 | 558 | try { |
559 | 559 | TenantId tenantId = getCurrentUser().getTenantId(); |
560 | - return checkNotNull(ruleChainService.findDefaultEdgeRuleChainsByTenantId(tenantId)).get(); | |
560 | + return checkNotNull(ruleChainService.findAutoAssignToEdgeRuleChainsByTenantId(tenantId)).get(); | |
561 | 561 | } catch (Exception e) { |
562 | 562 | throw handleException(e); |
563 | 563 | } | ... | ... |
... | ... | @@ -114,11 +114,6 @@ public class DefaultEdgeNotificationService implements EdgeNotificationService { |
114 | 114 | } |
115 | 115 | |
116 | 116 | @Override |
117 | - public TimePageData<EdgeEvent> findEdgeEvents(TenantId tenantId, EdgeId edgeId, TimePageLink pageLink) { | |
118 | - return edgeEventService.findEdgeEvents(tenantId, edgeId, pageLink, true); | |
119 | - } | |
120 | - | |
121 | - @Override | |
122 | 117 | public Edge setEdgeRootRuleChain(TenantId tenantId, Edge edge, RuleChainId ruleChainId) throws IOException { |
123 | 118 | edge.setRootRuleChainId(ruleChainId); |
124 | 119 | Edge savedEdge = edgeService.saveEdge(edge); | ... | ... |
... | ... | @@ -28,6 +28,7 @@ import org.thingsboard.server.dao.customer.CustomerService; |
28 | 28 | import org.thingsboard.server.dao.dashboard.DashboardService; |
29 | 29 | import org.thingsboard.server.dao.device.DeviceCredentialsService; |
30 | 30 | import org.thingsboard.server.dao.device.DeviceService; |
31 | +import org.thingsboard.server.dao.edge.EdgeEventService; | |
31 | 32 | import org.thingsboard.server.dao.edge.EdgeService; |
32 | 33 | import org.thingsboard.server.dao.entityview.EntityViewService; |
33 | 34 | import org.thingsboard.server.dao.relation.RelationService; |
... | ... | @@ -74,7 +75,7 @@ public class EdgeContextComponent { |
74 | 75 | |
75 | 76 | @Lazy |
76 | 77 | @Autowired |
77 | - private EdgeNotificationService edgeNotificationService; | |
78 | + private EdgeEventService edgeEventService; | |
78 | 79 | |
79 | 80 | @Lazy |
80 | 81 | @Autowired | ... | ... |
... | ... | @@ -15,14 +15,9 @@ |
15 | 15 | */ |
16 | 16 | package org.thingsboard.server.service.edge; |
17 | 17 | |
18 | -import org.thingsboard.server.common.data.Event; | |
19 | 18 | import org.thingsboard.server.common.data.edge.Edge; |
20 | -import org.thingsboard.server.common.data.edge.EdgeEvent; | |
21 | -import org.thingsboard.server.common.data.id.EdgeId; | |
22 | 19 | import org.thingsboard.server.common.data.id.RuleChainId; |
23 | 20 | import org.thingsboard.server.common.data.id.TenantId; |
24 | -import org.thingsboard.server.common.data.page.TimePageData; | |
25 | -import org.thingsboard.server.common.data.page.TimePageLink; | |
26 | 21 | import org.thingsboard.server.common.msg.queue.TbCallback; |
27 | 22 | import org.thingsboard.server.gen.transport.TransportProtos; |
28 | 23 | |
... | ... | @@ -30,8 +25,6 @@ import java.io.IOException; |
30 | 25 | |
31 | 26 | public interface EdgeNotificationService { |
32 | 27 | |
33 | - TimePageData<EdgeEvent> findEdgeEvents(TenantId tenantId, EdgeId edgeId, TimePageLink pageLink); | |
34 | - | |
35 | 28 | Edge setEdgeRootRuleChain(TenantId tenantId, Edge edge, RuleChainId ruleChainId) throws IOException; |
36 | 29 | |
37 | 30 | void pushNotificationToEdge(TransportProtos.EdgeNotificationMsgProto edgeNotificationMsg, TbCallback callback); | ... | ... |
... | ... | @@ -28,6 +28,7 @@ import org.springframework.boot.autoconfigure.condition.ConditionalOnProperty; |
28 | 28 | import org.springframework.stereotype.Service; |
29 | 29 | import org.thingsboard.common.util.ThingsBoardThreadFactory; |
30 | 30 | import org.thingsboard.server.common.data.DataConstants; |
31 | +import org.thingsboard.server.common.data.Tenant; | |
31 | 32 | import org.thingsboard.server.common.data.edge.Edge; |
32 | 33 | import org.thingsboard.server.common.data.id.EdgeId; |
33 | 34 | import org.thingsboard.server.common.data.id.TenantId; |
... | ... | @@ -186,11 +187,12 @@ public class EdgeGrpcService extends EdgeRpcServiceGrpc.EdgeRpcServiceImplBase i |
186 | 187 | scheduleEdgeEventsCheck(edgeGrpcSession); |
187 | 188 | } |
188 | 189 | |
189 | - public EdgeGrpcSession getEdgeGrpcSessionById(EdgeId edgeId) { | |
190 | + public EdgeGrpcSession getEdgeGrpcSessionById(TenantId tenantId, EdgeId edgeId) { | |
190 | 191 | EdgeGrpcSession session = sessions.get(edgeId); |
191 | 192 | if (session != null && session.isConnected()) { |
192 | 193 | return session; |
193 | 194 | } else { |
195 | + log.error("[{}] Edge is not connected [{}]", tenantId, edgeId); | |
194 | 196 | throw new RuntimeException("Edge is not connected"); |
195 | 197 | } |
196 | 198 | } | ... | ... |
... | ... | @@ -160,11 +160,12 @@ public final class EdgeGrpcSession implements Closeable { |
160 | 160 | .build()); |
161 | 161 | if (ConnectResponseCode.ACCEPTED != responseMsg.getResponseCode()) { |
162 | 162 | outputStream.onError(new RuntimeException(responseMsg.getErrorMsg())); |
163 | + } else { | |
164 | + connected = true; | |
163 | 165 | } |
164 | 166 | } |
165 | - if (!connected && requestMsg.getMsgType().equals(RequestMsgType.SYNC_REQUEST_RPC_MESSAGE)) { | |
166 | - connected = true; | |
167 | - ctx.getSyncEdgeService().sync(edge); | |
167 | + if (connected && requestMsg.getMsgType().equals(RequestMsgType.SYNC_REQUEST_RPC_MESSAGE)) { | |
168 | + ctx.getSyncEdgeService().sync(edge.getTenantId(), edge); | |
168 | 169 | } |
169 | 170 | if (connected) { |
170 | 171 | if (requestMsg.getMsgType().equals(RequestMsgType.UPLINK_RPC_MESSAGE) && requestMsg.hasUplinkMsg()) { |
... | ... | @@ -266,7 +267,7 @@ public final class EdgeGrpcSession implements Closeable { |
266 | 267 | UUID ifOffset = null; |
267 | 268 | boolean success = true; |
268 | 269 | do { |
269 | - pageData = ctx.getEdgeNotificationService().findEdgeEvents(edge.getTenantId(), edge.getId(), pageLink); | |
270 | + pageData = ctx.getEdgeEventService().findEdgeEvents(edge.getTenantId(), edge.getId(), pageLink, true); | |
270 | 271 | if (isConnected() && !pageData.getData().isEmpty()) { |
271 | 272 | log.trace("[{}] [{}] event(s) are going to be processed.", this.sessionId, pageData.getData().size()); |
272 | 273 | List<DownlinkMsg> downlinkMsgsPack = convertToDownlinkMsgsPack(pageData.getData()); |
... | ... | @@ -898,27 +899,27 @@ public final class EdgeGrpcSession implements Closeable { |
898 | 899 | } |
899 | 900 | if (uplinkMsg.getRuleChainMetadataRequestMsgList() != null && !uplinkMsg.getRuleChainMetadataRequestMsgList().isEmpty()) { |
900 | 901 | for (RuleChainMetadataRequestMsg ruleChainMetadataRequestMsg : uplinkMsg.getRuleChainMetadataRequestMsgList()) { |
901 | - result.add(ctx.getSyncEdgeService().processRuleChainMetadataRequestMsg(edge, ruleChainMetadataRequestMsg)); | |
902 | + result.add(ctx.getSyncEdgeService().processRuleChainMetadataRequestMsg(edge.getTenantId(), edge, ruleChainMetadataRequestMsg)); | |
902 | 903 | } |
903 | 904 | } |
904 | 905 | if (uplinkMsg.getAttributesRequestMsgList() != null && !uplinkMsg.getAttributesRequestMsgList().isEmpty()) { |
905 | 906 | for (AttributesRequestMsg attributesRequestMsg : uplinkMsg.getAttributesRequestMsgList()) { |
906 | - result.add(ctx.getSyncEdgeService().processAttributesRequestMsg(edge, attributesRequestMsg)); | |
907 | + result.add(ctx.getSyncEdgeService().processAttributesRequestMsg(edge.getTenantId(), edge, attributesRequestMsg)); | |
907 | 908 | } |
908 | 909 | } |
909 | 910 | if (uplinkMsg.getRelationRequestMsgList() != null && !uplinkMsg.getRelationRequestMsgList().isEmpty()) { |
910 | 911 | for (RelationRequestMsg relationRequestMsg : uplinkMsg.getRelationRequestMsgList()) { |
911 | - result.add(ctx.getSyncEdgeService().processRelationRequestMsg(edge, relationRequestMsg)); | |
912 | + result.add(ctx.getSyncEdgeService().processRelationRequestMsg(edge.getTenantId(), edge, relationRequestMsg)); | |
912 | 913 | } |
913 | 914 | } |
914 | 915 | if (uplinkMsg.getUserCredentialsRequestMsgList() != null && !uplinkMsg.getUserCredentialsRequestMsgList().isEmpty()) { |
915 | 916 | for (UserCredentialsRequestMsg userCredentialsRequestMsg : uplinkMsg.getUserCredentialsRequestMsgList()) { |
916 | - result.add(ctx.getSyncEdgeService().processUserCredentialsRequestMsg(edge, userCredentialsRequestMsg)); | |
917 | + result.add(ctx.getSyncEdgeService().processUserCredentialsRequestMsg(edge.getTenantId(), edge, userCredentialsRequestMsg)); | |
917 | 918 | } |
918 | 919 | } |
919 | 920 | if (uplinkMsg.getDeviceCredentialsRequestMsgList() != null && !uplinkMsg.getDeviceCredentialsRequestMsgList().isEmpty()) { |
920 | 921 | for (DeviceCredentialsRequestMsg deviceCredentialsRequestMsg : uplinkMsg.getDeviceCredentialsRequestMsgList()) { |
921 | - result.add(ctx.getSyncEdgeService().processDeviceCredentialsRequestMsg(edge, deviceCredentialsRequestMsg)); | |
922 | + result.add(ctx.getSyncEdgeService().processDeviceCredentialsRequestMsg(edge.getTenantId(), edge, deviceCredentialsRequestMsg)); | |
922 | 923 | } |
923 | 924 | } |
924 | 925 | if (uplinkMsg.getDeviceRpcCallMsgList() != null && !uplinkMsg.getDeviceRpcCallMsgList().isEmpty()) { | ... | ... |
... | ... | @@ -33,7 +33,6 @@ import org.springframework.core.io.DefaultResourceLoader; |
33 | 33 | import org.springframework.stereotype.Service; |
34 | 34 | import org.thingsboard.server.common.data.AdminSettings; |
35 | 35 | import org.thingsboard.server.common.data.DashboardInfo; |
36 | -import org.thingsboard.server.common.data.DataConstants; | |
37 | 36 | import org.thingsboard.server.common.data.Device; |
38 | 37 | import org.thingsboard.server.common.data.EdgeUtils; |
39 | 38 | import org.thingsboard.server.common.data.EntityType; |
... | ... | @@ -146,37 +145,37 @@ public class DefaultSyncEdgeService implements SyncEdgeService { |
146 | 145 | private TbClusterService tbClusterService; |
147 | 146 | |
148 | 147 | @Override |
149 | - public void sync(Edge edge) { | |
150 | - log.trace("[{}][{}] Staring edge sync process", edge.getTenantId(), edge.getId()); | |
148 | + public void sync(TenantId tenantId, Edge edge) { | |
149 | + log.trace("[{}][{}] Staring edge sync process", tenantId, edge.getId()); | |
151 | 150 | try { |
152 | - syncWidgetsBundleAndWidgetTypes(edge); | |
153 | - syncAdminSettings(edge); | |
154 | - syncRuleChains(edge, new TimePageLink(DEFAULT_LIMIT)); | |
155 | - syncUsers(edge, new TextPageLink(DEFAULT_LIMIT)); | |
156 | - syncDevices(edge, new TimePageLink(DEFAULT_LIMIT)); | |
157 | - syncAssets(edge, new TimePageLink(DEFAULT_LIMIT)); | |
158 | - syncEntityViews(edge, new TimePageLink(DEFAULT_LIMIT)); | |
159 | - syncDashboards(edge, new TimePageLink(DEFAULT_LIMIT)); | |
151 | + syncWidgetsBundleAndWidgetTypes(tenantId, edge); | |
152 | + syncAdminSettings(tenantId, edge); | |
153 | + syncRuleChains(tenantId, edge, new TimePageLink(DEFAULT_LIMIT)); | |
154 | + syncUsers(tenantId, edge, new TextPageLink(DEFAULT_LIMIT)); | |
155 | + syncDevices(tenantId, edge, new TimePageLink(DEFAULT_LIMIT)); | |
156 | + syncAssets(tenantId, edge, new TimePageLink(DEFAULT_LIMIT)); | |
157 | + syncEntityViews(tenantId, edge, new TimePageLink(DEFAULT_LIMIT)); | |
158 | + syncDashboards(tenantId, edge, new TimePageLink(DEFAULT_LIMIT)); | |
160 | 159 | } catch (Exception e) { |
161 | - log.error("[{}][{}] Exception during sync process", edge.getTenantId(), edge.getId(), e); | |
160 | + log.error("[{}][{}] Exception during sync process", tenantId, edge.getId(), e); | |
162 | 161 | } |
163 | 162 | } |
164 | 163 | |
165 | - private void syncRuleChains(Edge edge, TimePageLink pageLink) { | |
166 | - log.trace("[{}] syncRuleChains [{}] [{}]", edge.getTenantId(), edge.getName(), pageLink); | |
164 | + private void syncRuleChains(TenantId tenantId, Edge edge, TimePageLink pageLink) { | |
165 | + log.trace("[{}] syncRuleChains [{}] [{}]", tenantId, edge.getName(), pageLink); | |
167 | 166 | try { |
168 | 167 | ListenableFuture<TimePageData<RuleChain>> future = |
169 | - ruleChainService.findRuleChainsByTenantIdAndEdgeId(edge.getTenantId(), edge.getId(), pageLink); | |
168 | + ruleChainService.findRuleChainsByTenantIdAndEdgeId(tenantId, edge.getId(), pageLink); | |
170 | 169 | Futures.addCallback(future, new FutureCallback<TimePageData<RuleChain>>() { |
171 | 170 | @Override |
172 | 171 | public void onSuccess(@Nullable TimePageData<RuleChain> pageData) { |
173 | 172 | if (pageData != null && pageData.getData() != null && !pageData.getData().isEmpty()) { |
174 | 173 | log.trace("[{}] [{}] rule chains(s) are going to be pushed to edge.", edge.getId(), pageData.getData().size()); |
175 | 174 | for (RuleChain ruleChain : pageData.getData()) { |
176 | - saveEdgeEvent(edge.getTenantId(), edge.getId(), EdgeEventType.RULE_CHAIN, EdgeEventActionType.ADDED, ruleChain.getId(), null); | |
175 | + saveEdgeEvent(tenantId, edge.getId(), EdgeEventType.RULE_CHAIN, EdgeEventActionType.ADDED, ruleChain.getId(), null); | |
177 | 176 | } |
178 | 177 | if (pageData.hasNext()) { |
179 | - syncRuleChains(edge, pageData.getNextPageLink()); | |
178 | + syncRuleChains(tenantId, edge, pageData.getNextPageLink()); | |
180 | 179 | } |
181 | 180 | } |
182 | 181 | } |
... | ... | @@ -191,21 +190,21 @@ public class DefaultSyncEdgeService implements SyncEdgeService { |
191 | 190 | } |
192 | 191 | } |
193 | 192 | |
194 | - private void syncDevices(Edge edge, TimePageLink pageLink) { | |
195 | - log.trace("[{}] syncDevices [{}]", edge.getTenantId(), edge.getName()); | |
193 | + private void syncDevices(TenantId tenantId, Edge edge, TimePageLink pageLink) { | |
194 | + log.trace("[{}] syncDevices [{}]", tenantId, edge.getName()); | |
196 | 195 | try { |
197 | 196 | ListenableFuture<TimePageData<Device>> future = |
198 | - deviceService.findDevicesByTenantIdAndEdgeId(edge.getTenantId(), edge.getId(), pageLink); | |
197 | + deviceService.findDevicesByTenantIdAndEdgeId(tenantId, edge.getId(), pageLink); | |
199 | 198 | Futures.addCallback(future, new FutureCallback<TimePageData<Device>>() { |
200 | 199 | @Override |
201 | 200 | public void onSuccess(@Nullable TimePageData<Device> pageData) { |
202 | 201 | if (pageData != null && pageData.getData() != null && !pageData.getData().isEmpty()) { |
203 | 202 | log.trace("[{}] [{}] device(s) are going to be pushed to edge.", edge.getId(), pageData.getData().size()); |
204 | 203 | for (Device device : pageData.getData()) { |
205 | - saveEdgeEvent(edge.getTenantId(), edge.getId(), EdgeEventType.DEVICE, EdgeEventActionType.ADDED, device.getId(), null); | |
204 | + saveEdgeEvent(tenantId, edge.getId(), EdgeEventType.DEVICE, EdgeEventActionType.ADDED, device.getId(), null); | |
206 | 205 | } |
207 | 206 | if (pageData.hasNext()) { |
208 | - syncDevices(edge, pageData.getNextPageLink()); | |
207 | + syncDevices(tenantId, edge, pageData.getNextPageLink()); | |
209 | 208 | } |
210 | 209 | } |
211 | 210 | } |
... | ... | @@ -220,20 +219,20 @@ public class DefaultSyncEdgeService implements SyncEdgeService { |
220 | 219 | } |
221 | 220 | } |
222 | 221 | |
223 | - private void syncAssets(Edge edge, TimePageLink pageLink) { | |
224 | - log.trace("[{}] syncAssets [{}]", edge.getTenantId(), edge.getName()); | |
222 | + private void syncAssets(TenantId tenantId, Edge edge, TimePageLink pageLink) { | |
223 | + log.trace("[{}] syncAssets [{}]", tenantId, edge.getName()); | |
225 | 224 | try { |
226 | - ListenableFuture<TimePageData<Asset>> future = assetService.findAssetsByTenantIdAndEdgeId(edge.getTenantId(), edge.getId(), pageLink); | |
225 | + ListenableFuture<TimePageData<Asset>> future = assetService.findAssetsByTenantIdAndEdgeId(tenantId, edge.getId(), pageLink); | |
227 | 226 | Futures.addCallback(future, new FutureCallback<TimePageData<Asset>>() { |
228 | 227 | @Override |
229 | 228 | public void onSuccess(@Nullable TimePageData<Asset> pageData) { |
230 | 229 | if (pageData != null && pageData.getData() != null && !pageData.getData().isEmpty()) { |
231 | 230 | log.trace("[{}] [{}] asset(s) are going to be pushed to edge.", edge.getId(), pageData.getData().size()); |
232 | 231 | for (Asset asset : pageData.getData()) { |
233 | - saveEdgeEvent(edge.getTenantId(), edge.getId(), EdgeEventType.ASSET, EdgeEventActionType.ADDED, asset.getId(), null); | |
232 | + saveEdgeEvent(tenantId, edge.getId(), EdgeEventType.ASSET, EdgeEventActionType.ADDED, asset.getId(), null); | |
234 | 233 | } |
235 | 234 | if (pageData.hasNext()) { |
236 | - syncAssets(edge, pageData.getNextPageLink()); | |
235 | + syncAssets(tenantId, edge, pageData.getNextPageLink()); | |
237 | 236 | } |
238 | 237 | } |
239 | 238 | } |
... | ... | @@ -248,20 +247,20 @@ public class DefaultSyncEdgeService implements SyncEdgeService { |
248 | 247 | } |
249 | 248 | } |
250 | 249 | |
251 | - private void syncEntityViews(Edge edge, TimePageLink pageLink) { | |
252 | - log.trace("[{}] syncEntityViews [{}]", edge.getTenantId(), edge.getName()); | |
250 | + private void syncEntityViews(TenantId tenantId, Edge edge, TimePageLink pageLink) { | |
251 | + log.trace("[{}] syncEntityViews [{}]", tenantId, edge.getName()); | |
253 | 252 | try { |
254 | - ListenableFuture<TimePageData<EntityView>> future = entityViewService.findEntityViewsByTenantIdAndEdgeId(edge.getTenantId(), edge.getId(), pageLink); | |
253 | + ListenableFuture<TimePageData<EntityView>> future = entityViewService.findEntityViewsByTenantIdAndEdgeId(tenantId, edge.getId(), pageLink); | |
255 | 254 | Futures.addCallback(future, new FutureCallback<TimePageData<EntityView>>() { |
256 | 255 | @Override |
257 | 256 | public void onSuccess(@Nullable TimePageData<EntityView> pageData) { |
258 | 257 | if (pageData != null && pageData.getData() != null && !pageData.getData().isEmpty()) { |
259 | 258 | log.trace("[{}] [{}] entity view(s) are going to be pushed to edge.", edge.getId(), pageData.getData().size()); |
260 | 259 | for (EntityView entityView : pageData.getData()) { |
261 | - saveEdgeEvent(edge.getTenantId(), edge.getId(), EdgeEventType.ENTITY_VIEW, EdgeEventActionType.ADDED, entityView.getId(), null); | |
260 | + saveEdgeEvent(tenantId, edge.getId(), EdgeEventType.ENTITY_VIEW, EdgeEventActionType.ADDED, entityView.getId(), null); | |
262 | 261 | } |
263 | 262 | if (pageData.hasNext()) { |
264 | - syncEntityViews(edge, pageData.getNextPageLink()); | |
263 | + syncEntityViews(tenantId, edge, pageData.getNextPageLink()); | |
265 | 264 | } |
266 | 265 | } |
267 | 266 | } |
... | ... | @@ -276,20 +275,20 @@ public class DefaultSyncEdgeService implements SyncEdgeService { |
276 | 275 | } |
277 | 276 | } |
278 | 277 | |
279 | - private void syncDashboards(Edge edge, TimePageLink pageLink) { | |
280 | - log.trace("[{}] syncDashboards [{}]", edge.getTenantId(), edge.getName()); | |
278 | + private void syncDashboards(TenantId tenantId, Edge edge, TimePageLink pageLink) { | |
279 | + log.trace("[{}] syncDashboards [{}]", tenantId, edge.getName()); | |
281 | 280 | try { |
282 | - ListenableFuture<TimePageData<DashboardInfo>> future = dashboardService.findDashboardsByTenantIdAndEdgeId(edge.getTenantId(), edge.getId(), pageLink); | |
281 | + ListenableFuture<TimePageData<DashboardInfo>> future = dashboardService.findDashboardsByTenantIdAndEdgeId(tenantId, edge.getId(), pageLink); | |
283 | 282 | Futures.addCallback(future, new FutureCallback<TimePageData<DashboardInfo>>() { |
284 | 283 | @Override |
285 | 284 | public void onSuccess(@Nullable TimePageData<DashboardInfo> pageData) { |
286 | 285 | if (pageData != null && pageData.getData() != null && !pageData.getData().isEmpty()) { |
287 | 286 | log.trace("[{}] [{}] dashboard(s) are going to be pushed to edge.", edge.getId(), pageData.getData().size()); |
288 | 287 | for (DashboardInfo dashboardInfo : pageData.getData()) { |
289 | - saveEdgeEvent(edge.getTenantId(), edge.getId(), EdgeEventType.DASHBOARD, EdgeEventActionType.ADDED, dashboardInfo.getId(), null); | |
288 | + saveEdgeEvent(tenantId, edge.getId(), EdgeEventType.DASHBOARD, EdgeEventActionType.ADDED, dashboardInfo.getId(), null); | |
290 | 289 | } |
291 | 290 | if (pageData.hasNext()) { |
292 | - syncDashboards(edge, pageData.getNextPageLink()); | |
291 | + syncDashboards(tenantId, edge, pageData.getNextPageLink()); | |
293 | 292 | } |
294 | 293 | } |
295 | 294 | } |
... | ... | @@ -304,31 +303,31 @@ public class DefaultSyncEdgeService implements SyncEdgeService { |
304 | 303 | } |
305 | 304 | } |
306 | 305 | |
307 | - private void syncUsers(Edge edge, TextPageLink pageLink) { | |
308 | - log.trace("[{}] syncUsers [{}]", edge.getTenantId(), edge.getName()); | |
306 | + private void syncUsers(TenantId tenantId, Edge edge, TextPageLink pageLink) { | |
307 | + log.trace("[{}] syncUsers [{}]", tenantId, edge.getName()); | |
309 | 308 | try { |
310 | 309 | TextPageData<User> pageData; |
311 | 310 | do { |
312 | - pageData = userService.findTenantAdmins(edge.getTenantId(), pageLink); | |
313 | - pushUsersToEdge(pageData, edge); | |
311 | + pageData = userService.findTenantAdmins(tenantId, pageLink); | |
312 | + pushUsersToEdge(tenantId, pageData, edge); | |
314 | 313 | if (pageData != null && pageData.hasNext()) { |
315 | 314 | pageLink = pageData.getNextPageLink(); |
316 | 315 | } |
317 | 316 | } while (pageData != null && pageData.hasNext()); |
318 | - syncCustomerUsers(edge); | |
317 | + syncCustomerUsers(tenantId, edge); | |
319 | 318 | } catch (Exception e) { |
320 | 319 | log.error("Exception during loading edge user(s) on sync!", e); |
321 | 320 | } |
322 | 321 | } |
323 | 322 | |
324 | - private void syncCustomerUsers(Edge edge) { | |
323 | + private void syncCustomerUsers(TenantId tenantId, Edge edge) { | |
325 | 324 | if (edge.getCustomerId() != null && !EntityId.NULL_UUID.equals(edge.getCustomerId().getId())) { |
326 | - saveEdgeEvent(edge.getTenantId(), edge.getId(), EdgeEventType.CUSTOMER, EdgeEventActionType.ADDED, edge.getCustomerId(), null); | |
325 | + saveEdgeEvent(tenantId, edge.getId(), EdgeEventType.CUSTOMER, EdgeEventActionType.ADDED, edge.getCustomerId(), null); | |
327 | 326 | TextPageLink pageLink = new TextPageLink(DEFAULT_LIMIT); |
328 | 327 | TextPageData<User> pageData; |
329 | 328 | do { |
330 | - pageData = userService.findCustomerUsers(edge.getTenantId(), edge.getCustomerId(), pageLink); | |
331 | - pushUsersToEdge(pageData, edge); | |
329 | + pageData = userService.findCustomerUsers(tenantId, edge.getCustomerId(), pageLink); | |
330 | + pushUsersToEdge(tenantId, pageData, edge); | |
332 | 331 | if (pageData != null && pageData.hasNext()) { |
333 | 332 | pageLink = pageData.getNextPageLink(); |
334 | 333 | } |
... | ... | @@ -336,45 +335,45 @@ public class DefaultSyncEdgeService implements SyncEdgeService { |
336 | 335 | } |
337 | 336 | } |
338 | 337 | |
339 | - private void pushUsersToEdge(TextPageData<User> pageData, Edge edge) { | |
338 | + private void pushUsersToEdge(TenantId tenantId, TextPageData<User> pageData, Edge edge) { | |
340 | 339 | if (pageData != null && pageData.getData() != null && !pageData.getData().isEmpty()) { |
341 | 340 | log.trace("[{}] [{}] user(s) are going to be pushed to edge.", edge.getId(), pageData.getData().size()); |
342 | 341 | for (User user : pageData.getData()) { |
343 | - saveEdgeEvent(edge.getTenantId(), edge.getId(), EdgeEventType.USER, EdgeEventActionType.ADDED, user.getId(), null); | |
342 | + saveEdgeEvent(tenantId, edge.getId(), EdgeEventType.USER, EdgeEventActionType.ADDED, user.getId(), null); | |
344 | 343 | } |
345 | 344 | } |
346 | 345 | } |
347 | 346 | |
348 | - private void syncWidgetsBundleAndWidgetTypes(Edge edge) { | |
349 | - log.trace("[{}] syncWidgetsBundleAndWidgetTypes [{}]", edge.getTenantId(), edge.getName()); | |
347 | + private void syncWidgetsBundleAndWidgetTypes(TenantId tenantId, Edge edge) { | |
348 | + log.trace("[{}] syncWidgetsBundleAndWidgetTypes [{}]", tenantId, edge.getName()); | |
350 | 349 | List<WidgetsBundle> widgetsBundlesToPush = new ArrayList<>(); |
351 | 350 | List<WidgetType> widgetTypesToPush = new ArrayList<>(); |
352 | - widgetsBundlesToPush.addAll(widgetsBundleService.findAllTenantWidgetsBundlesByTenantId(edge.getTenantId())); | |
353 | - widgetsBundlesToPush.addAll(widgetsBundleService.findSystemWidgetsBundles(edge.getTenantId())); | |
351 | + widgetsBundlesToPush.addAll(widgetsBundleService.findAllTenantWidgetsBundlesByTenantId(tenantId)); | |
352 | + widgetsBundlesToPush.addAll(widgetsBundleService.findSystemWidgetsBundles(tenantId)); | |
354 | 353 | try { |
355 | 354 | for (WidgetsBundle widgetsBundle: widgetsBundlesToPush) { |
356 | - saveEdgeEvent(edge.getTenantId(), edge.getId(), EdgeEventType.WIDGETS_BUNDLE, EdgeEventActionType.ADDED, widgetsBundle.getId(), null); | |
355 | + saveEdgeEvent(tenantId, edge.getId(), EdgeEventType.WIDGETS_BUNDLE, EdgeEventActionType.ADDED, widgetsBundle.getId(), null); | |
357 | 356 | widgetTypesToPush.addAll(widgetTypeService.findWidgetTypesByTenantIdAndBundleAlias(widgetsBundle.getTenantId(), widgetsBundle.getAlias())); |
358 | 357 | } |
359 | 358 | for (WidgetType widgetType: widgetTypesToPush) { |
360 | - saveEdgeEvent(edge.getTenantId(), edge.getId(), EdgeEventType.WIDGET_TYPE, EdgeEventActionType.ADDED, widgetType.getId(), null); | |
359 | + saveEdgeEvent(tenantId, edge.getId(), EdgeEventType.WIDGET_TYPE, EdgeEventActionType.ADDED, widgetType.getId(), null); | |
361 | 360 | } |
362 | 361 | } catch (Exception e) { |
363 | 362 | log.error("Exception during loading widgets bundle(s) and widget type(s) on sync!", e); |
364 | 363 | } |
365 | 364 | } |
366 | 365 | |
367 | - private void syncAdminSettings(Edge edge) { | |
368 | - log.trace("[{}] syncAdminSettings [{}]", edge.getTenantId(), edge.getName()); | |
366 | + private void syncAdminSettings(TenantId tenantId, Edge edge) { | |
367 | + log.trace("[{}] syncAdminSettings [{}]", tenantId, edge.getName()); | |
369 | 368 | try { |
370 | 369 | AdminSettings systemMailSettings = adminSettingsService.findAdminSettingsByKey(TenantId.SYS_TENANT_ID, "mail"); |
371 | - saveEdgeEvent(edge.getTenantId(), edge.getId(), EdgeEventType.ADMIN_SETTINGS, EdgeEventActionType.UPDATED, null, mapper.valueToTree(systemMailSettings)); | |
370 | + saveEdgeEvent(tenantId, edge.getId(), EdgeEventType.ADMIN_SETTINGS, EdgeEventActionType.UPDATED, null, mapper.valueToTree(systemMailSettings)); | |
372 | 371 | AdminSettings tenantMailSettings = convertToTenantAdminSettings(systemMailSettings.getKey(), (ObjectNode) systemMailSettings.getJsonValue()); |
373 | - saveEdgeEvent(edge.getTenantId(), edge.getId(), EdgeEventType.ADMIN_SETTINGS, EdgeEventActionType.UPDATED, null, mapper.valueToTree(tenantMailSettings)); | |
372 | + saveEdgeEvent(tenantId, edge.getId(), EdgeEventType.ADMIN_SETTINGS, EdgeEventActionType.UPDATED, null, mapper.valueToTree(tenantMailSettings)); | |
374 | 373 | AdminSettings systemMailTemplates = loadMailTemplates(); |
375 | - saveEdgeEvent(edge.getTenantId(), edge.getId(), EdgeEventType.ADMIN_SETTINGS, EdgeEventActionType.UPDATED, null, mapper.valueToTree(systemMailTemplates)); | |
374 | + saveEdgeEvent(tenantId, edge.getId(), EdgeEventType.ADMIN_SETTINGS, EdgeEventActionType.UPDATED, null, mapper.valueToTree(systemMailTemplates)); | |
376 | 375 | AdminSettings tenantMailTemplates = convertToTenantAdminSettings(systemMailTemplates.getKey(), (ObjectNode) systemMailTemplates.getJsonValue()); |
377 | - saveEdgeEvent(edge.getTenantId(), edge.getId(), EdgeEventType.ADMIN_SETTINGS, EdgeEventActionType.UPDATED, null, mapper.valueToTree(tenantMailTemplates)); | |
376 | + saveEdgeEvent(tenantId, edge.getId(), EdgeEventType.ADMIN_SETTINGS, EdgeEventActionType.UPDATED, null, mapper.valueToTree(tenantMailTemplates)); | |
378 | 377 | } catch (Exception e) { |
379 | 378 | log.error("Can't load admin settings", e); |
380 | 379 | } |
... | ... | @@ -433,13 +432,13 @@ public class DefaultSyncEdgeService implements SyncEdgeService { |
433 | 432 | } |
434 | 433 | |
435 | 434 | @Override |
436 | - public ListenableFuture<Void> processRuleChainMetadataRequestMsg(Edge edge, RuleChainMetadataRequestMsg ruleChainMetadataRequestMsg) { | |
437 | - log.trace("[{}] processRuleChainMetadataRequestMsg [{}][{}]", edge.getTenantId(), edge.getName(), ruleChainMetadataRequestMsg); | |
435 | + public ListenableFuture<Void> processRuleChainMetadataRequestMsg(TenantId tenantId, Edge edge, RuleChainMetadataRequestMsg ruleChainMetadataRequestMsg) { | |
436 | + log.trace("[{}] processRuleChainMetadataRequestMsg [{}][{}]", tenantId, edge.getName(), ruleChainMetadataRequestMsg); | |
438 | 437 | SettableFuture<Void> futureToSet = SettableFuture.create(); |
439 | 438 | if (ruleChainMetadataRequestMsg.getRuleChainIdMSB() != 0 && ruleChainMetadataRequestMsg.getRuleChainIdLSB() != 0) { |
440 | 439 | RuleChainId ruleChainId = |
441 | 440 | new RuleChainId(new UUID(ruleChainMetadataRequestMsg.getRuleChainIdMSB(), ruleChainMetadataRequestMsg.getRuleChainIdLSB())); |
442 | - ListenableFuture<EdgeEvent> future = saveEdgeEvent(edge.getTenantId(), edge.getId(), EdgeEventType.RULE_CHAIN_METADATA, EdgeEventActionType.ADDED, ruleChainId, null); | |
441 | + ListenableFuture<EdgeEvent> future = saveEdgeEvent(tenantId, edge.getId(), EdgeEventType.RULE_CHAIN_METADATA, EdgeEventActionType.ADDED, ruleChainId, null); | |
443 | 442 | Futures.addCallback(future, new FutureCallback<EdgeEvent>() { |
444 | 443 | @Override |
445 | 444 | public void onSuccess(@Nullable EdgeEvent result) { |
... | ... | @@ -457,8 +456,8 @@ public class DefaultSyncEdgeService implements SyncEdgeService { |
457 | 456 | } |
458 | 457 | |
459 | 458 | @Override |
460 | - public ListenableFuture<Void> processAttributesRequestMsg(Edge edge, AttributesRequestMsg attributesRequestMsg) { | |
461 | - log.trace("[{}] processAttributesRequestMsg [{}][{}]", edge.getTenantId(), edge.getName(), attributesRequestMsg); | |
459 | + public ListenableFuture<Void> processAttributesRequestMsg(TenantId tenantId, Edge edge, AttributesRequestMsg attributesRequestMsg) { | |
460 | + log.trace("[{}] processAttributesRequestMsg [{}][{}]", tenantId, edge.getName(), attributesRequestMsg); | |
462 | 461 | EntityId entityId = EntityIdFactory.getByTypeAndUuid( |
463 | 462 | EntityType.valueOf(attributesRequestMsg.getEntityType()), |
464 | 463 | new UUID(attributesRequestMsg.getEntityIdMSB(), attributesRequestMsg.getEntityIdLSB())); |
... | ... | @@ -466,7 +465,7 @@ public class DefaultSyncEdgeService implements SyncEdgeService { |
466 | 465 | if (type != null) { |
467 | 466 | SettableFuture<Void> futureToSet = SettableFuture.create(); |
468 | 467 | String scope = attributesRequestMsg.getScope(); |
469 | - ListenableFuture<List<AttributeKvEntry>> ssAttrFuture = attributesService.findAll(edge.getTenantId(), entityId, scope); | |
468 | + ListenableFuture<List<AttributeKvEntry>> ssAttrFuture = attributesService.findAll(tenantId, entityId, scope); | |
470 | 469 | Futures.addCallback(ssAttrFuture, new FutureCallback<List<AttributeKvEntry>>() { |
471 | 470 | @Override |
472 | 471 | public void onSuccess(@Nullable List<AttributeKvEntry> ssAttributes) { |
... | ... | @@ -489,7 +488,7 @@ public class DefaultSyncEdgeService implements SyncEdgeService { |
489 | 488 | entityData.put("scope", scope); |
490 | 489 | JsonNode body = mapper.valueToTree(entityData); |
491 | 490 | log.debug("Sending attributes data msg, entityId [{}], attributes [{}]", entityId, body); |
492 | - saveEdgeEvent(edge.getTenantId(), | |
491 | + saveEdgeEvent(tenantId, | |
493 | 492 | edge.getId(), |
494 | 493 | type, |
495 | 494 | EdgeEventActionType.ATTRIBUTES_UPDATED, |
... | ... | @@ -500,7 +499,7 @@ public class DefaultSyncEdgeService implements SyncEdgeService { |
500 | 499 | throw new RuntimeException("[" + edge.getName() + "] Failed to send attribute updates to the edge", e); |
501 | 500 | } |
502 | 501 | } else { |
503 | - log.trace("[{}][{}] No attributes found for entity {} [{}]", edge.getTenantId(), | |
502 | + log.trace("[{}][{}] No attributes found for entity {} [{}]", tenantId, | |
504 | 503 | edge.getName(), |
505 | 504 | entityId.getEntityType(), |
506 | 505 | entityId.getId()); |
... | ... | @@ -516,21 +515,21 @@ public class DefaultSyncEdgeService implements SyncEdgeService { |
516 | 515 | }, dbCallbackExecutorService); |
517 | 516 | return futureToSet; |
518 | 517 | } else { |
519 | - log.warn("[{}] Type doesn't supported {}", edge.getTenantId(), entityId.getEntityType()); | |
518 | + log.warn("[{}] Type doesn't supported {}", tenantId, entityId.getEntityType()); | |
520 | 519 | return Futures.immediateFuture(null); |
521 | 520 | } |
522 | 521 | } |
523 | 522 | |
524 | 523 | @Override |
525 | - public ListenableFuture<Void> processRelationRequestMsg(Edge edge, RelationRequestMsg relationRequestMsg) { | |
526 | - log.trace("[{}] processRelationRequestMsg [{}][{}]", edge.getTenantId(), edge.getName(), relationRequestMsg); | |
524 | + public ListenableFuture<Void> processRelationRequestMsg(TenantId tenantId, Edge edge, RelationRequestMsg relationRequestMsg) { | |
525 | + log.trace("[{}] processRelationRequestMsg [{}][{}]", tenantId, edge.getName(), relationRequestMsg); | |
527 | 526 | EntityId entityId = EntityIdFactory.getByTypeAndUuid( |
528 | 527 | EntityType.valueOf(relationRequestMsg.getEntityType()), |
529 | 528 | new UUID(relationRequestMsg.getEntityIdMSB(), relationRequestMsg.getEntityIdLSB())); |
530 | 529 | |
531 | 530 | List<ListenableFuture<List<EntityRelation>>> futures = new ArrayList<>(); |
532 | - futures.add(findRelationByQuery(edge, entityId, EntitySearchDirection.FROM)); | |
533 | - futures.add(findRelationByQuery(edge, entityId, EntitySearchDirection.TO)); | |
531 | + futures.add(findRelationByQuery(tenantId, edge, entityId, EntitySearchDirection.FROM)); | |
532 | + futures.add(findRelationByQuery(tenantId, edge, entityId, EntitySearchDirection.TO)); | |
534 | 533 | ListenableFuture<List<List<EntityRelation>>> relationsListFuture = Futures.allAsList(futures); |
535 | 534 | SettableFuture<Void> futureToSet = SettableFuture.create(); |
536 | 535 | Futures.addCallback(relationsListFuture, new FutureCallback<List<List<EntityRelation>>>() { |
... | ... | @@ -544,7 +543,7 @@ public class DefaultSyncEdgeService implements SyncEdgeService { |
544 | 543 | try { |
545 | 544 | if (!relation.getFrom().getEntityType().equals(EntityType.EDGE) && |
546 | 545 | !relation.getTo().getEntityType().equals(EntityType.EDGE)) { |
547 | - saveEdgeEvent(edge.getTenantId(), | |
546 | + saveEdgeEvent(tenantId, | |
548 | 547 | edge.getId(), |
549 | 548 | EdgeEventType.RELATION, |
550 | 549 | EdgeEventActionType.ADDED, |
... | ... | @@ -568,26 +567,26 @@ public class DefaultSyncEdgeService implements SyncEdgeService { |
568 | 567 | |
569 | 568 | @Override |
570 | 569 | public void onFailure(Throwable t) { |
571 | - log.error("[{}] Can't find relation by query. Entity id [{}]", edge.getTenantId(), entityId, t); | |
570 | + log.error("[{}] Can't find relation by query. Entity id [{}]", tenantId, entityId, t); | |
572 | 571 | futureToSet.setException(t); |
573 | 572 | } |
574 | 573 | }, dbCallbackExecutorService); |
575 | 574 | return futureToSet; |
576 | 575 | } |
577 | 576 | |
578 | - private ListenableFuture<List<EntityRelation>> findRelationByQuery(Edge edge, EntityId entityId, EntitySearchDirection direction) { | |
577 | + private ListenableFuture<List<EntityRelation>> findRelationByQuery(TenantId tenantId, Edge edge, EntityId entityId, EntitySearchDirection direction) { | |
579 | 578 | EntityRelationsQuery query = new EntityRelationsQuery(); |
580 | 579 | query.setParameters(new RelationsSearchParameters(entityId, direction, -1, false)); |
581 | - return relationService.findByQuery(edge.getTenantId(), query); | |
580 | + return relationService.findByQuery(tenantId, query); | |
582 | 581 | } |
583 | 582 | |
584 | 583 | @Override |
585 | - public ListenableFuture<Void> processDeviceCredentialsRequestMsg(Edge edge, DeviceCredentialsRequestMsg deviceCredentialsRequestMsg) { | |
586 | - log.trace("[{}] processDeviceCredentialsRequestMsg [{}][{}]", edge.getTenantId(), edge.getName(), deviceCredentialsRequestMsg); | |
584 | + public ListenableFuture<Void> processDeviceCredentialsRequestMsg(TenantId tenantId, Edge edge, DeviceCredentialsRequestMsg deviceCredentialsRequestMsg) { | |
585 | + log.trace("[{}] processDeviceCredentialsRequestMsg [{}][{}]", tenantId, edge.getName(), deviceCredentialsRequestMsg); | |
587 | 586 | SettableFuture<Void> futureToSet = SettableFuture.create(); |
588 | 587 | if (deviceCredentialsRequestMsg.getDeviceIdMSB() != 0 && deviceCredentialsRequestMsg.getDeviceIdLSB() != 0) { |
589 | 588 | DeviceId deviceId = new DeviceId(new UUID(deviceCredentialsRequestMsg.getDeviceIdMSB(), deviceCredentialsRequestMsg.getDeviceIdLSB())); |
590 | - ListenableFuture<EdgeEvent> future = saveEdgeEvent(edge.getTenantId(), edge.getId(), EdgeEventType.DEVICE, EdgeEventActionType.CREDENTIALS_UPDATED, deviceId, null); | |
589 | + ListenableFuture<EdgeEvent> future = saveEdgeEvent(tenantId, edge.getId(), EdgeEventType.DEVICE, EdgeEventActionType.CREDENTIALS_UPDATED, deviceId, null); | |
591 | 590 | Futures.addCallback(future, new FutureCallback<EdgeEvent>() { |
592 | 591 | @Override |
593 | 592 | public void onSuccess(@Nullable EdgeEvent result) { |
... | ... | @@ -605,12 +604,12 @@ public class DefaultSyncEdgeService implements SyncEdgeService { |
605 | 604 | } |
606 | 605 | |
607 | 606 | @Override |
608 | - public ListenableFuture<Void> processUserCredentialsRequestMsg(Edge edge, UserCredentialsRequestMsg userCredentialsRequestMsg) { | |
609 | - log.trace("[{}] processUserCredentialsRequestMsg [{}][{}]", edge.getTenantId(), edge.getName(), userCredentialsRequestMsg); | |
607 | + public ListenableFuture<Void> processUserCredentialsRequestMsg(TenantId tenantId, Edge edge, UserCredentialsRequestMsg userCredentialsRequestMsg) { | |
608 | + log.trace("[{}] processUserCredentialsRequestMsg [{}][{}]", tenantId, edge.getName(), userCredentialsRequestMsg); | |
610 | 609 | SettableFuture<Void> futureToSet = SettableFuture.create(); |
611 | 610 | if (userCredentialsRequestMsg.getUserIdMSB() != 0 && userCredentialsRequestMsg.getUserIdLSB() != 0) { |
612 | 611 | UserId userId = new UserId(new UUID(userCredentialsRequestMsg.getUserIdMSB(), userCredentialsRequestMsg.getUserIdLSB())); |
613 | - ListenableFuture<EdgeEvent> future = saveEdgeEvent(edge.getTenantId(), edge.getId(), EdgeEventType.USER, EdgeEventActionType.CREDENTIALS_UPDATED, userId, null); | |
612 | + ListenableFuture<EdgeEvent> future = saveEdgeEvent(tenantId, edge.getId(), EdgeEventType.USER, EdgeEventActionType.CREDENTIALS_UPDATED, userId, null); | |
614 | 613 | Futures.addCallback(future, new FutureCallback<EdgeEvent>() { |
615 | 614 | @Override |
616 | 615 | public void onSuccess(@Nullable EdgeEvent result) { | ... | ... |
... | ... | @@ -17,6 +17,7 @@ package org.thingsboard.server.service.edge.rpc.init; |
17 | 17 | |
18 | 18 | import com.google.common.util.concurrent.ListenableFuture; |
19 | 19 | import org.thingsboard.server.common.data.edge.Edge; |
20 | +import org.thingsboard.server.common.data.id.TenantId; | |
20 | 21 | import org.thingsboard.server.gen.edge.AttributesRequestMsg; |
21 | 22 | import org.thingsboard.server.gen.edge.DeviceCredentialsRequestMsg; |
22 | 23 | import org.thingsboard.server.gen.edge.RelationRequestMsg; |
... | ... | @@ -25,15 +26,15 @@ import org.thingsboard.server.gen.edge.UserCredentialsRequestMsg; |
25 | 26 | |
26 | 27 | public interface SyncEdgeService { |
27 | 28 | |
28 | - void sync(Edge edge); | |
29 | + void sync(TenantId tenantId, Edge edge); | |
29 | 30 | |
30 | - ListenableFuture<Void> processRuleChainMetadataRequestMsg(Edge edge, RuleChainMetadataRequestMsg ruleChainMetadataRequestMsg); | |
31 | + ListenableFuture<Void> processRuleChainMetadataRequestMsg(TenantId tenantId, Edge edge, RuleChainMetadataRequestMsg ruleChainMetadataRequestMsg); | |
31 | 32 | |
32 | - ListenableFuture<Void> processAttributesRequestMsg(Edge edge, AttributesRequestMsg attributesRequestMsg); | |
33 | + ListenableFuture<Void> processAttributesRequestMsg(TenantId tenantId, Edge edge, AttributesRequestMsg attributesRequestMsg); | |
33 | 34 | |
34 | - ListenableFuture<Void> processRelationRequestMsg(Edge edge, RelationRequestMsg relationRequestMsg); | |
35 | + ListenableFuture<Void> processRelationRequestMsg(TenantId tenantId, Edge edge, RelationRequestMsg relationRequestMsg); | |
35 | 36 | |
36 | - ListenableFuture<Void> processDeviceCredentialsRequestMsg(Edge edge, DeviceCredentialsRequestMsg deviceCredentialsRequestMsg); | |
37 | + ListenableFuture<Void> processDeviceCredentialsRequestMsg(TenantId tenantId, Edge edge, DeviceCredentialsRequestMsg deviceCredentialsRequestMsg); | |
37 | 38 | |
38 | - ListenableFuture<Void> processUserCredentialsRequestMsg(Edge edge, UserCredentialsRequestMsg userCredentialsRequestMsg); | |
39 | + ListenableFuture<Void> processUserCredentialsRequestMsg(TenantId tenantId, Edge edge, UserCredentialsRequestMsg userCredentialsRequestMsg); | |
39 | 40 | } | ... | ... |
... | ... | @@ -89,7 +89,7 @@ public class DefaultDataUpdateService implements DataUpdateService { |
89 | 89 | @Override |
90 | 90 | protected void updateEntity(Tenant tenant) { |
91 | 91 | try { |
92 | - RuleChain defaultEdgeRuleChain = ruleChainService.getDefaultRootEdgeRuleChain(tenant.getId()); | |
92 | + RuleChain defaultEdgeRuleChain = ruleChainService.getEdgeTemplateRootRuleChain(tenant.getId()); | |
93 | 93 | if (defaultEdgeRuleChain == null) { |
94 | 94 | installScripts.createDefaultEdgeRuleChains(tenant.getId()); |
95 | 95 | } | ... | ... |
... | ... | @@ -682,7 +682,7 @@ public abstract class BaseEdgeControllerTest extends AbstractControllerTest { |
682 | 682 | edgeImitator.getDownlinkMsgs().clear(); |
683 | 683 | |
684 | 684 | edgeImitator.expectMessageAmount(4); |
685 | - doPost("/api/edge/sync", edge.getId()); | |
685 | + doPost("/api/edge/sync/" + edge.getId()); | |
686 | 686 | edgeImitator.waitForMessages(); |
687 | 687 | |
688 | 688 | Assert.assertEquals(4, edgeImitator.getDownlinkMsgs().size()); | ... | ... |
... | ... | @@ -73,14 +73,14 @@ public interface RuleChainService { |
73 | 73 | |
74 | 74 | ListenableFuture<TimePageData<RuleChain>> findRuleChainsByTenantIdAndEdgeId(TenantId tenantId, EdgeId edgeId, TimePageLink pageLink); |
75 | 75 | |
76 | - RuleChain getDefaultRootEdgeRuleChain(TenantId tenantId); | |
76 | + RuleChain getEdgeTemplateRootRuleChain(TenantId tenantId); | |
77 | 77 | |
78 | - boolean setDefaultRootEdgeRuleChain(TenantId tenantId, RuleChainId ruleChainId); | |
78 | + boolean setEdgeTemplateRootRuleChain(TenantId tenantId, RuleChainId ruleChainId); | |
79 | 79 | |
80 | - boolean addDefaultEdgeRuleChain(TenantId tenantId, RuleChainId ruleChainId); | |
80 | + boolean setAutoAssignToEdgeRuleChain(TenantId tenantId, RuleChainId ruleChainId); | |
81 | 81 | |
82 | - boolean removeDefaultEdgeRuleChain(TenantId tenantId, RuleChainId ruleChainId); | |
82 | + boolean unsetAutoAssignToEdgeRuleChain(TenantId tenantId, RuleChainId ruleChainId); | |
83 | 83 | |
84 | - ListenableFuture<List<RuleChain>> findDefaultEdgeRuleChainsByTenantId(TenantId tenantId); | |
84 | + ListenableFuture<List<RuleChain>> findAutoAssignToEdgeRuleChainsByTenantId(TenantId tenantId); | |
85 | 85 | |
86 | 86 | } | ... | ... |
... | ... | @@ -15,6 +15,9 @@ |
15 | 15 | */ |
16 | 16 | package org.thingsboard.server.dao.edge; |
17 | 17 | |
18 | +import com.fasterxml.jackson.databind.ObjectMapper; | |
19 | +import com.fasterxml.jackson.databind.node.ArrayNode; | |
20 | +import com.fasterxml.jackson.databind.node.ObjectNode; | |
18 | 21 | import com.google.common.base.Function; |
19 | 22 | import com.google.common.util.concurrent.FutureCallback; |
20 | 23 | import com.google.common.util.concurrent.Futures; |
... | ... | @@ -54,10 +57,13 @@ import org.thingsboard.server.common.data.id.TenantId; |
54 | 57 | import org.thingsboard.server.common.data.id.UserId; |
55 | 58 | import org.thingsboard.server.common.data.page.TextPageData; |
56 | 59 | import org.thingsboard.server.common.data.page.TextPageLink; |
60 | +import org.thingsboard.server.common.data.page.TimePageData; | |
61 | +import org.thingsboard.server.common.data.page.TimePageLink; | |
57 | 62 | import org.thingsboard.server.common.data.relation.EntityRelation; |
58 | 63 | import org.thingsboard.server.common.data.relation.EntitySearchDirection; |
59 | 64 | import org.thingsboard.server.common.data.relation.RelationTypeGroup; |
60 | 65 | import org.thingsboard.server.common.data.rule.RuleChain; |
66 | +import org.thingsboard.server.common.data.rule.RuleChainConnectionInfo; | |
61 | 67 | import org.thingsboard.server.dao.customer.CustomerDao; |
62 | 68 | import org.thingsboard.server.dao.entity.AbstractEntityService; |
63 | 69 | import org.thingsboard.server.dao.exception.DataValidationException; |
... | ... | @@ -100,6 +106,8 @@ public class EdgeServiceImpl extends AbstractEntityService implements EdgeServic |
100 | 106 | public static final String INCORRECT_CUSTOMER_ID = "Incorrect customerId "; |
101 | 107 | public static final String INCORRECT_EDGE_ID = "Incorrect edgeId "; |
102 | 108 | |
109 | + private static final ObjectMapper mapper = new ObjectMapper(); | |
110 | + | |
103 | 111 | private static final int DEFAULT_LIMIT = 100; |
104 | 112 | |
105 | 113 | private RestTemplate restTemplate; |
... | ... | @@ -340,7 +348,7 @@ public class EdgeServiceImpl extends AbstractEntityService implements EdgeServic |
340 | 348 | @Override |
341 | 349 | public void assignDefaultRuleChainsToEdge(TenantId tenantId, EdgeId edgeId) { |
342 | 350 | log.trace("Executing assignDefaultRuleChainsToEdge, tenantId [{}], edgeId [{}]", tenantId, edgeId); |
343 | - ListenableFuture<List<RuleChain>> future = ruleChainService.findDefaultEdgeRuleChainsByTenantId(tenantId); | |
351 | + ListenableFuture<List<RuleChain>> future = ruleChainService.findAutoAssignToEdgeRuleChainsByTenantId(tenantId); | |
344 | 352 | Futures.addCallback(future, new FutureCallback<List<RuleChain>>() { |
345 | 353 | @Override |
346 | 354 | public void onSuccess(List<RuleChain> ruleChains) { |
... | ... | @@ -575,6 +583,56 @@ public class EdgeServiceImpl extends AbstractEntityService implements EdgeServic |
575 | 583 | return this.restTemplate.postForEntity(EDGE_LICENSE_SERVER_ENDPOINT + "/api/license/activateInstance?licenseSecret={licenseSecret}&releaseDate={releaseDate}", (Object) null, Object.class, params); |
576 | 584 | } |
577 | 585 | |
586 | + @Override | |
587 | + public String findMissingToRelatedRuleChains(TenantId tenantId, EdgeId edgeId) { | |
588 | + List<RuleChain> edgeRuleChains = findEdgeRuleChains(tenantId, edgeId); | |
589 | + List<RuleChainId> edgeRuleChainIds = edgeRuleChains.stream().map(IdBased::getId).collect(Collectors.toList()); | |
590 | + ObjectNode result = mapper.createObjectNode(); | |
591 | + for (RuleChain edgeRuleChain : edgeRuleChains) { | |
592 | + List<RuleChainConnectionInfo> connectionInfos = | |
593 | + ruleChainService.loadRuleChainMetaData(edgeRuleChain.getTenantId(), edgeRuleChain.getId()).getRuleChainConnections(); | |
594 | + if (connectionInfos != null && !connectionInfos.isEmpty()) { | |
595 | + List<RuleChainId> connectedRuleChains = | |
596 | + connectionInfos.stream().map(RuleChainConnectionInfo::getTargetRuleChainId).collect(Collectors.toList()); | |
597 | + List<String> missingRuleChains = new ArrayList<>(); | |
598 | + for (RuleChainId connectedRuleChain : connectedRuleChains) { | |
599 | + if (!edgeRuleChainIds.contains(connectedRuleChain)) { | |
600 | + RuleChain ruleChainById = ruleChainService.findRuleChainById(tenantId, connectedRuleChain); | |
601 | + missingRuleChains.add(ruleChainById.getName()); | |
602 | + } | |
603 | + } | |
604 | + if (!missingRuleChains.isEmpty()) { | |
605 | + ArrayNode array = mapper.createArrayNode(); | |
606 | + for (String missingRuleChain : missingRuleChains) { | |
607 | + array.add(missingRuleChain); | |
608 | + } | |
609 | + result.set(edgeRuleChain.getName(), array); | |
610 | + } | |
611 | + } | |
612 | + } | |
613 | + return result.toString(); | |
614 | + } | |
615 | + | |
616 | + private List<RuleChain> findEdgeRuleChains(TenantId tenantId, EdgeId edgeId) { | |
617 | + List<RuleChain> result = new ArrayList<>(); | |
618 | + TimePageLink pageLink = new TimePageLink(DEFAULT_LIMIT); | |
619 | + TimePageData<RuleChain> pageData; | |
620 | + try { | |
621 | + do { | |
622 | + pageData = ruleChainService.findRuleChainsByTenantIdAndEdgeId(tenantId, edgeId, pageLink).get(); | |
623 | + if (pageData != null && pageData.getData() != null && !pageData.getData().isEmpty()) { | |
624 | + result.addAll(pageData.getData()); | |
625 | + if (pageData.hasNext()) { | |
626 | + pageLink = pageData.getNextPageLink(); | |
627 | + } | |
628 | + } | |
629 | + } while (pageData != null && pageData.hasNext()); | |
630 | + } catch (Exception e) { | |
631 | + log.error("[{}] Can't find edge rule chains [{}]", tenantId, edgeId, e); | |
632 | + } | |
633 | + return result; | |
634 | + } | |
635 | + | |
578 | 636 | private void initRestTemplate() { |
579 | 637 | boolean jdkHttpClientEnabled = isNotEmpty(System.getProperty("tb.proxy.jdk")) && System.getProperty("tb.proxy.jdk").equalsIgnoreCase("true"); |
580 | 638 | boolean systemProxyEnabled = isNotEmpty(System.getProperty("tb.proxy.system")) && System.getProperty("tb.proxy.system").equalsIgnoreCase("true"); | ... | ... |
... | ... | @@ -484,21 +484,21 @@ public class BaseRuleChainService extends AbstractEntityService implements RuleC |
484 | 484 | } |
485 | 485 | |
486 | 486 | @Override |
487 | - public RuleChain getDefaultRootEdgeRuleChain(TenantId tenantId) { | |
487 | + public RuleChain getEdgeTemplateRootRuleChain(TenantId tenantId) { | |
488 | 488 | return getRootRuleChainByType(tenantId, RuleChainType.EDGE); |
489 | 489 | } |
490 | 490 | |
491 | 491 | @Override |
492 | - public boolean setDefaultRootEdgeRuleChain(TenantId tenantId, RuleChainId ruleChainId) { | |
492 | + public boolean setEdgeTemplateRootRuleChain(TenantId tenantId, RuleChainId ruleChainId) { | |
493 | 493 | RuleChain ruleChain = ruleChainDao.findById(tenantId, ruleChainId.getId()); |
494 | - RuleChain previousDefaultRootEdgeRuleChain = getDefaultRootEdgeRuleChain(ruleChain.getTenantId()); | |
495 | - if (previousDefaultRootEdgeRuleChain == null || !previousDefaultRootEdgeRuleChain.getId().equals(ruleChain.getId())) { | |
494 | + RuleChain previousEdgeTemplateRootRuleChain = getEdgeTemplateRootRuleChain(ruleChain.getTenantId()); | |
495 | + if (previousEdgeTemplateRootRuleChain == null || !previousEdgeTemplateRootRuleChain.getId().equals(ruleChain.getId())) { | |
496 | 496 | try { |
497 | - if (previousDefaultRootEdgeRuleChain != null) { | |
498 | - deleteRelation(tenantId, new EntityRelation(previousDefaultRootEdgeRuleChain.getTenantId(), previousDefaultRootEdgeRuleChain.getId(), | |
497 | + if (previousEdgeTemplateRootRuleChain != null) { | |
498 | + deleteRelation(tenantId, new EntityRelation(previousEdgeTemplateRootRuleChain.getTenantId(), previousEdgeTemplateRootRuleChain.getId(), | |
499 | 499 | EntityRelation.CONTAINS_TYPE, RelationTypeGroup.RULE_CHAIN)); |
500 | - previousDefaultRootEdgeRuleChain.setRoot(false); | |
501 | - ruleChainDao.save(tenantId, previousDefaultRootEdgeRuleChain); | |
500 | + previousEdgeTemplateRootRuleChain.setRoot(false); | |
501 | + ruleChainDao.save(tenantId, previousEdgeTemplateRootRuleChain); | |
502 | 502 | } |
503 | 503 | createRelation(tenantId, new EntityRelation(ruleChain.getTenantId(), ruleChain.getId(), |
504 | 504 | EntityRelation.CONTAINS_TYPE, RelationTypeGroup.RULE_CHAIN)); |
... | ... | @@ -506,7 +506,7 @@ public class BaseRuleChainService extends AbstractEntityService implements RuleC |
506 | 506 | ruleChainDao.save(tenantId, ruleChain); |
507 | 507 | return true; |
508 | 508 | } catch (Exception e) { |
509 | - log.warn("Failed to set default root edge rule chain, ruleChainId: [{}]", ruleChainId, e); | |
509 | + log.warn("Failed to set edge template root rule chain, ruleChainId: [{}]", ruleChainId, e); | |
510 | 510 | throw new RuntimeException(e); |
511 | 511 | } |
512 | 512 | } |
... | ... | @@ -514,34 +514,34 @@ public class BaseRuleChainService extends AbstractEntityService implements RuleC |
514 | 514 | } |
515 | 515 | |
516 | 516 | @Override |
517 | - public boolean addDefaultEdgeRuleChain(TenantId tenantId, RuleChainId ruleChainId) { | |
517 | + public boolean setAutoAssignToEdgeRuleChain(TenantId tenantId, RuleChainId ruleChainId) { | |
518 | 518 | try { |
519 | 519 | createRelation(tenantId, new EntityRelation(tenantId, ruleChainId, |
520 | - EntityRelation.CONTAINS_TYPE, RelationTypeGroup.EDGE_DEFAULT_RULE_CHAIN)); | |
520 | + EntityRelation.CONTAINS_TYPE, RelationTypeGroup.EDGE_AUTO_ASSIGN_RULE_CHAIN)); | |
521 | 521 | return true; |
522 | 522 | } catch (Exception e) { |
523 | - log.warn("Failed to add default edge rule chain, ruleChainId: [{}]", ruleChainId, e); | |
523 | + log.warn("Failed to set auto assign to edge rule chain, ruleChainId: [{}]", ruleChainId, e); | |
524 | 524 | throw new RuntimeException(e); |
525 | 525 | } |
526 | 526 | } |
527 | 527 | |
528 | 528 | @Override |
529 | - public boolean removeDefaultEdgeRuleChain(TenantId tenantId, RuleChainId ruleChainId) { | |
529 | + public boolean unsetAutoAssignToEdgeRuleChain(TenantId tenantId, RuleChainId ruleChainId) { | |
530 | 530 | try { |
531 | 531 | deleteRelation(tenantId, new EntityRelation(tenantId, ruleChainId, |
532 | - EntityRelation.CONTAINS_TYPE, RelationTypeGroup.EDGE_DEFAULT_RULE_CHAIN)); | |
532 | + EntityRelation.CONTAINS_TYPE, RelationTypeGroup.EDGE_AUTO_ASSIGN_RULE_CHAIN)); | |
533 | 533 | return true; |
534 | 534 | } catch (Exception e) { |
535 | - log.warn("Failed to remove default edge rule chain, ruleChainId: [{}]", ruleChainId, e); | |
535 | + log.warn("Failed to unset auto assign to edge rule chain, ruleChainId: [{}]", ruleChainId, e); | |
536 | 536 | throw new RuntimeException(e); |
537 | 537 | } |
538 | 538 | } |
539 | 539 | |
540 | 540 | @Override |
541 | - public ListenableFuture<List<RuleChain>> findDefaultEdgeRuleChainsByTenantId(TenantId tenantId) { | |
542 | - log.trace("Executing findDefaultEdgeRuleChainsByTenantId, tenantId [{}]", tenantId); | |
541 | + public ListenableFuture<List<RuleChain>> findAutoAssignToEdgeRuleChainsByTenantId(TenantId tenantId) { | |
542 | + log.trace("Executing findAutoAssignToEdgeRuleChainsByTenantId, tenantId [{}]", tenantId); | |
543 | 543 | validateId(tenantId, INCORRECT_TENANT_ID + tenantId); |
544 | - return ruleChainDao.findDefaultEdgeRuleChainsByTenantId(tenantId.getId()); | |
544 | + return ruleChainDao.findAutoAssignToEdgeRuleChainsByTenantId(tenantId.getId()); | |
545 | 545 | } |
546 | 546 | |
547 | 547 | |
... | ... | @@ -592,9 +592,9 @@ public class BaseRuleChainService extends AbstractEntityService implements RuleC |
592 | 592 | } |
593 | 593 | } |
594 | 594 | if (ruleChain.isRoot() && RuleChainType.EDGE.equals(ruleChain.getType())) { |
595 | - RuleChain defaultRootEdgeRuleChain = getDefaultRootEdgeRuleChain(ruleChain.getTenantId()); | |
596 | - if (defaultRootEdgeRuleChain != null && !defaultRootEdgeRuleChain.getId().equals(ruleChain.getId())) { | |
597 | - throw new DataValidationException("Another default root edge rule chain is present in scope of current tenant!"); | |
595 | + RuleChain edgeTemplateRootRuleChain = getEdgeTemplateRootRuleChain(ruleChain.getTenantId()); | |
596 | + if (edgeTemplateRootRuleChain != null && !edgeTemplateRootRuleChain.getId().equals(ruleChain.getId())) { | |
597 | + throw new DataValidationException("Another edge template root rule chain is present in scope of current tenant!"); | |
598 | 598 | } |
599 | 599 | } |
600 | 600 | } | ... | ... |
... | ... | @@ -103,9 +103,10 @@ public class CassandraRuleChainDao extends CassandraAbstractSearchTextDao<RuleCh |
103 | 103 | } |
104 | 104 | |
105 | 105 | @Override |
106 | - public ListenableFuture<List<RuleChain>> findDefaultEdgeRuleChainsByTenantId(UUID tenantId) { | |
107 | - log.debug("Try to find default edge rule chains by tenantId [{}]", tenantId); | |
108 | - ListenableFuture<List<EntityRelation>> relations = relationDao.findAllByFromAndType(new TenantId(tenantId), new TenantId(tenantId), EntityRelation.CONTAINS_TYPE, RelationTypeGroup.EDGE_DEFAULT_RULE_CHAIN); | |
106 | + public ListenableFuture<List<RuleChain>> findAutoAssignToEdgeRuleChainsByTenantId(UUID tenantId) { | |
107 | + log.debug("Try to find auto assign to edge rule chains by tenantId [{}]", tenantId); | |
108 | + ListenableFuture<List<EntityRelation>> relations = | |
109 | + relationDao.findAllByFromAndType(new TenantId(tenantId), new TenantId(tenantId), EntityRelation.CONTAINS_TYPE, RelationTypeGroup.EDGE_AUTO_ASSIGN_RULE_CHAIN); | |
109 | 110 | return Futures.transformAsync(relations, input -> { |
110 | 111 | List<ListenableFuture<RuleChain>> ruleChainFutures = new ArrayList<>(input.size()); |
111 | 112 | for (EntityRelation relation : input) { | ... | ... |
... | ... | @@ -60,10 +60,10 @@ public interface RuleChainDao extends Dao<RuleChain> { |
60 | 60 | ListenableFuture<List<RuleChain>> findRuleChainsByTenantIdAndEdgeId(UUID tenantId, UUID edgeId, TimePageLink pageLink); |
61 | 61 | |
62 | 62 | /** |
63 | - * Find default edge rule chains by tenantId. | |
63 | + * Find auto assign to edge rule chains by tenantId. | |
64 | 64 | * |
65 | 65 | * @param tenantId the tenantId |
66 | 66 | * @return the list of rule chain objects |
67 | 67 | */ |
68 | - ListenableFuture<List<RuleChain>> findDefaultEdgeRuleChainsByTenantId(UUID tenantId); | |
68 | + ListenableFuture<List<RuleChain>> findAutoAssignToEdgeRuleChainsByTenantId(UUID tenantId); | |
69 | 69 | } | ... | ... |
... | ... | @@ -25,9 +25,7 @@ import org.springframework.data.repository.CrudRepository; |
25 | 25 | import org.springframework.stereotype.Component; |
26 | 26 | import org.thingsboard.server.common.data.EntityType; |
27 | 27 | import org.thingsboard.server.common.data.UUIDConverter; |
28 | -import org.thingsboard.server.common.data.edge.Edge; | |
29 | 28 | import org.thingsboard.server.common.data.id.EdgeId; |
30 | -import org.thingsboard.server.common.data.id.RuleChainId; | |
31 | 29 | import org.thingsboard.server.common.data.id.TenantId; |
32 | 30 | import org.thingsboard.server.common.data.page.TextPageLink; |
33 | 31 | import org.thingsboard.server.common.data.page.TimePageLink; |
... | ... | @@ -107,9 +105,10 @@ public class JpaRuleChainDao extends JpaAbstractSearchTextDao<RuleChainEntity, R |
107 | 105 | } |
108 | 106 | |
109 | 107 | @Override |
110 | - public ListenableFuture<List<RuleChain>> findDefaultEdgeRuleChainsByTenantId(UUID tenantId) { | |
111 | - log.debug("Try to find default edge rule chains by tenantId [{}]", tenantId); | |
112 | - ListenableFuture<List<EntityRelation>> relations = relationDao.findAllByFromAndType(new TenantId(tenantId), new TenantId(tenantId), EntityRelation.CONTAINS_TYPE, RelationTypeGroup.EDGE_DEFAULT_RULE_CHAIN); | |
108 | + public ListenableFuture<List<RuleChain>> findAutoAssignToEdgeRuleChainsByTenantId(UUID tenantId) { | |
109 | + log.debug("Try to find auto assign to edge rule chains by tenantId [{}]", tenantId); | |
110 | + ListenableFuture<List<EntityRelation>> relations = | |
111 | + relationDao.findAllByFromAndType(new TenantId(tenantId), new TenantId(tenantId), EntityRelation.CONTAINS_TYPE, RelationTypeGroup.EDGE_AUTO_ASSIGN_RULE_CHAIN); | |
113 | 112 | return Futures.transformAsync(relations, input -> { |
114 | 113 | List<ListenableFuture<RuleChain>> ruleChainsFutures = new ArrayList<>(input.size()); |
115 | 114 | for (EntityRelation relation : input) { | ... | ... |
... | ... | @@ -331,24 +331,24 @@ public abstract class BaseRuleChainServiceTest extends AbstractServiceTest { |
331 | 331 | |
332 | 332 | @Test |
333 | 333 | public void testGetDefaultEdgeRuleChains() throws Exception { |
334 | - RuleChainId ruleChainId = saveRuleChainAndSetDefaultEdge("Default Edge Rule Chain 1"); | |
335 | - saveRuleChainAndSetDefaultEdge("Default Edge Rule Chain 2"); | |
336 | - List<RuleChain> result = ruleChainService.findDefaultEdgeRuleChainsByTenantId(tenantId).get(); | |
334 | + RuleChainId ruleChainId = saveRuleChainAndSetAutoAssignToEdge("Default Edge Rule Chain 1"); | |
335 | + saveRuleChainAndSetAutoAssignToEdge("Default Edge Rule Chain 2"); | |
336 | + List<RuleChain> result = ruleChainService.findAutoAssignToEdgeRuleChainsByTenantId(tenantId).get(); | |
337 | 337 | Assert.assertEquals(2, result.size()); |
338 | 338 | |
339 | - ruleChainService.removeDefaultEdgeRuleChain(tenantId, ruleChainId); | |
339 | + ruleChainService.unsetAutoAssignToEdgeRuleChain(tenantId, ruleChainId); | |
340 | 340 | |
341 | - result = ruleChainService.findDefaultEdgeRuleChainsByTenantId(tenantId).get(); | |
341 | + result = ruleChainService.findAutoAssignToEdgeRuleChainsByTenantId(tenantId).get(); | |
342 | 342 | Assert.assertEquals(1, result.size()); |
343 | 343 | } |
344 | 344 | |
345 | 345 | @Test |
346 | - public void setDefaultRootEdgeRuleChain() throws Exception { | |
347 | - RuleChainId ruleChainId1 = saveRuleChainAndSetDefaultEdge("Default Edge Rule Chain 1"); | |
348 | - RuleChainId ruleChainId2 = saveRuleChainAndSetDefaultEdge("Default Edge Rule Chain 2"); | |
346 | + public void setEdgeTemplateRootRuleChain() throws Exception { | |
347 | + RuleChainId ruleChainId1 = saveRuleChainAndSetAutoAssignToEdge("Default Edge Rule Chain 1"); | |
348 | + RuleChainId ruleChainId2 = saveRuleChainAndSetAutoAssignToEdge("Default Edge Rule Chain 2"); | |
349 | 349 | |
350 | - ruleChainService.setDefaultRootEdgeRuleChain(tenantId, ruleChainId1); | |
351 | - ruleChainService.setDefaultRootEdgeRuleChain(tenantId, ruleChainId2); | |
350 | + ruleChainService.setEdgeTemplateRootRuleChain(tenantId, ruleChainId1); | |
351 | + ruleChainService.setEdgeTemplateRootRuleChain(tenantId, ruleChainId2); | |
352 | 352 | |
353 | 353 | RuleChain ruleChainById = ruleChainService.findRuleChainById(tenantId, ruleChainId1); |
354 | 354 | Assert.assertFalse(ruleChainById.isRoot()); |
... | ... | @@ -357,13 +357,13 @@ public abstract class BaseRuleChainServiceTest extends AbstractServiceTest { |
357 | 357 | Assert.assertTrue(ruleChainById.isRoot()); |
358 | 358 | } |
359 | 359 | |
360 | - private RuleChainId saveRuleChainAndSetDefaultEdge(String name) { | |
360 | + private RuleChainId saveRuleChainAndSetAutoAssignToEdge(String name) { | |
361 | 361 | RuleChain edgeRuleChain = new RuleChain(); |
362 | 362 | edgeRuleChain.setTenantId(tenantId); |
363 | 363 | edgeRuleChain.setType(RuleChainType.EDGE); |
364 | 364 | edgeRuleChain.setName(name); |
365 | 365 | RuleChain savedEdgeRuleChain = ruleChainService.saveRuleChain(edgeRuleChain); |
366 | - ruleChainService.addDefaultEdgeRuleChain(tenantId, savedEdgeRuleChain.getId()); | |
366 | + ruleChainService.setAutoAssignToEdgeRuleChain(tenantId, savedEdgeRuleChain.getId()); | |
367 | 367 | return savedEdgeRuleChain.getId(); |
368 | 368 | } |
369 | 369 | ... | ... |
... | ... | @@ -2262,9 +2262,9 @@ public class RestClient implements ClientHttpRequestInterceptor, Closeable { |
2262 | 2262 | }, params).getBody(); |
2263 | 2263 | } |
2264 | 2264 | |
2265 | - public Optional<RuleChain> addDefaultEdgeRuleChain(RuleChainId ruleChainId) { | |
2265 | + public Optional<RuleChain> setAutoAssignToEdgeRuleChain(RuleChainId ruleChainId) { | |
2266 | 2266 | try { |
2267 | - ResponseEntity<RuleChain> ruleChain = restTemplate.postForEntity(baseURL + "/api/ruleChain/{ruleChainId}/defaultEdge", null, RuleChain.class, ruleChainId.getId()); | |
2267 | + ResponseEntity<RuleChain> ruleChain = restTemplate.postForEntity(baseURL + "/api/ruleChain/{ruleChainId}/autoAssignToEdge", null, RuleChain.class, ruleChainId.getId()); | |
2268 | 2268 | return Optional.ofNullable(ruleChain.getBody()); |
2269 | 2269 | } catch (HttpClientErrorException exception) { |
2270 | 2270 | if (exception.getStatusCode() == HttpStatus.NOT_FOUND) { |
... | ... | @@ -2275,9 +2275,9 @@ public class RestClient implements ClientHttpRequestInterceptor, Closeable { |
2275 | 2275 | } |
2276 | 2276 | } |
2277 | 2277 | |
2278 | - public Optional<RuleChain> removeDefaultEdgeRuleChain(RuleChainId ruleChainId) { | |
2278 | + public Optional<RuleChain> unsetAutoAssignToEdgeRuleChain(RuleChainId ruleChainId) { | |
2279 | 2279 | try { |
2280 | - ResponseEntity<RuleChain> ruleChain = restTemplate.exchange(baseURL + "/api/ruleChain/{ruleChainId}/defaultEdge", HttpMethod.DELETE, HttpEntity.EMPTY, RuleChain.class, ruleChainId.getId()); | |
2280 | + ResponseEntity<RuleChain> ruleChain = restTemplate.exchange(baseURL + "/api/ruleChain/{ruleChainId}/autoAssignToEdge", HttpMethod.DELETE, HttpEntity.EMPTY, RuleChain.class, ruleChainId.getId()); | |
2281 | 2281 | return Optional.ofNullable(ruleChain.getBody()); |
2282 | 2282 | } catch (HttpClientErrorException exception) { |
2283 | 2283 | if (exception.getStatusCode() == HttpStatus.NOT_FOUND) { |
... | ... | @@ -2288,17 +2288,17 @@ public class RestClient implements ClientHttpRequestInterceptor, Closeable { |
2288 | 2288 | } |
2289 | 2289 | } |
2290 | 2290 | |
2291 | - public List<RuleChain> getDefaultEdgeRuleChains() { | |
2292 | - return restTemplate.exchange(baseURL + "/api/ruleChain/defaultEdgeRuleChains", | |
2291 | + public List<RuleChain> getAutoAssignToEdgeRuleChains() { | |
2292 | + return restTemplate.exchange(baseURL + "/api/ruleChain/autoAssignToEdgeRuleChains", | |
2293 | 2293 | HttpMethod.GET, |
2294 | 2294 | HttpEntity.EMPTY, |
2295 | 2295 | new ParameterizedTypeReference<List<RuleChain>>() { |
2296 | 2296 | }).getBody(); |
2297 | 2297 | } |
2298 | 2298 | |
2299 | - public Optional<RuleChain> setDefaultRootEdgeRuleChain(RuleChainId ruleChainId) { | |
2299 | + public Optional<RuleChain> setRootEdgeTemplateRuleChain(RuleChainId ruleChainId) { | |
2300 | 2300 | try { |
2301 | - ResponseEntity<RuleChain> ruleChain = restTemplate.postForEntity(baseURL + "/api/ruleChain/{ruleChainId}/defaultRootEdge", null, RuleChain.class, ruleChainId.getId()); | |
2301 | + ResponseEntity<RuleChain> ruleChain = restTemplate.postForEntity(baseURL + "/api/ruleChain/{ruleChainId}/edgeTemplateRoot", null, RuleChain.class, ruleChainId.getId()); | |
2302 | 2302 | return Optional.ofNullable(ruleChain.getBody()); |
2303 | 2303 | } catch (HttpClientErrorException exception) { |
2304 | 2304 | if (exception.getStatusCode() == HttpStatus.NOT_FOUND) { |
... | ... | @@ -2384,7 +2384,9 @@ public class RestClient implements ClientHttpRequestInterceptor, Closeable { |
2384 | 2384 | } |
2385 | 2385 | |
2386 | 2386 | public void syncEdge(EdgeId edgeId) { |
2387 | - restTemplate.postForEntity(baseURL + "/api/edge/sync", edgeId, EdgeId.class); | |
2387 | + Map<String, String> params = new HashMap<>(); | |
2388 | + params.put("edgeId", edgeId.toString()); | |
2389 | + restTemplate.postForEntity(baseURL + "/api/edge/sync/{edgeId}", null, EdgeId.class, params); | |
2388 | 2390 | } |
2389 | 2391 | |
2390 | 2392 | @Deprecated | ... | ... |
... | ... | @@ -297,8 +297,8 @@ function EdgeService($http, $q, customerService) { |
297 | 297 | |
298 | 298 | function syncEdge(edgeId) { |
299 | 299 | var deferred = $q.defer(); |
300 | - var url = '/api/edge/sync'; | |
301 | - $http.post(url, edgeId).then(function success(response) { | |
300 | + var url = '/api/edge/sync/' + edgeId; | |
301 | + $http.post(url, null).then(function success(response) { | |
302 | 302 | deferred.resolve(response); |
303 | 303 | }, function fail(response) { |
304 | 304 | deferred.reject(response.data); | ... | ... |
... | ... | @@ -40,10 +40,10 @@ function RuleChainService($http, $q, $filter, $ocLazyLoad, $translate, types, co |
40 | 40 | getEdgesRuleChains: getEdgesRuleChains, |
41 | 41 | assignRuleChainToEdge: assignRuleChainToEdge, |
42 | 42 | unassignRuleChainFromEdge: unassignRuleChainFromEdge, |
43 | - setDefaultRootEdgeRuleChain: setDefaultRootEdgeRuleChain, | |
44 | - addDefaultEdgeRuleChain: addDefaultEdgeRuleChain, | |
45 | - removeDefaultEdgeRuleChain: removeDefaultEdgeRuleChain, | |
46 | - getDefaultEdgeRuleChains: getDefaultEdgeRuleChains | |
43 | + setEdgeTemplateRootRuleChain: setEdgeTemplateRootRuleChain, | |
44 | + setAutoAssignToEdgeRuleChain: setAutoAssignToEdgeRuleChain, | |
45 | + unsetAutoAssignToEdgeRuleChain: unsetAutoAssignToEdgeRuleChain, | |
46 | + getAutoAssignToEdgeRuleChains: getAutoAssignToEdgeRuleChains | |
47 | 47 | }; |
48 | 48 | |
49 | 49 | return service; |
... | ... | @@ -350,9 +350,9 @@ function RuleChainService($http, $q, $filter, $ocLazyLoad, $translate, types, co |
350 | 350 | return deferred.promise; |
351 | 351 | } |
352 | 352 | |
353 | - function setDefaultRootEdgeRuleChain(ruleChainId) { | |
353 | + function setEdgeTemplateRootRuleChain(ruleChainId) { | |
354 | 354 | var deferred = $q.defer(); |
355 | - var url = '/api/ruleChain/' + ruleChainId + '/defaultRootEdge'; | |
355 | + var url = '/api/ruleChain/' + ruleChainId + '/edgeTemplateRoot'; | |
356 | 356 | $http.post(url).then(function success(response) { |
357 | 357 | deferred.resolve(response.data); |
358 | 358 | }, function fail() { |
... | ... | @@ -361,9 +361,9 @@ function RuleChainService($http, $q, $filter, $ocLazyLoad, $translate, types, co |
361 | 361 | return deferred.promise; |
362 | 362 | } |
363 | 363 | |
364 | - function addDefaultEdgeRuleChain(ruleChainId) { | |
364 | + function setAutoAssignToEdgeRuleChain(ruleChainId) { | |
365 | 365 | var deferred = $q.defer(); |
366 | - var url = '/api/ruleChain/' + ruleChainId + '/defaultEdge'; | |
366 | + var url = '/api/ruleChain/' + ruleChainId + '/autoAssignToEdge'; | |
367 | 367 | $http.post(url, null).then(function success(response) { |
368 | 368 | deferred.resolve(response.data); |
369 | 369 | }, function fail() { |
... | ... | @@ -372,9 +372,9 @@ function RuleChainService($http, $q, $filter, $ocLazyLoad, $translate, types, co |
372 | 372 | return deferred.promise; |
373 | 373 | } |
374 | 374 | |
375 | - function removeDefaultEdgeRuleChain(ruleChainId) { | |
375 | + function unsetAutoAssignToEdgeRuleChain(ruleChainId) { | |
376 | 376 | var deferred = $q.defer(); |
377 | - var url = '/api/ruleChain/' + ruleChainId + '/defaultEdge'; | |
377 | + var url = '/api/ruleChain/' + ruleChainId + '/autoAssignToEdge'; | |
378 | 378 | $http.delete(url).then(function success(response) { |
379 | 379 | deferred.resolve(response.data); |
380 | 380 | }, function fail() { |
... | ... | @@ -383,9 +383,9 @@ function RuleChainService($http, $q, $filter, $ocLazyLoad, $translate, types, co |
383 | 383 | return deferred.promise; |
384 | 384 | } |
385 | 385 | |
386 | - function getDefaultEdgeRuleChains(config) { | |
386 | + function getAutoAssignToEdgeRuleChains(config) { | |
387 | 387 | var deferred = $q.defer(); |
388 | - var url = '/api/ruleChain/defaultEdgeRuleChains'; | |
388 | + var url = '/api/ruleChain/autoAssignToEdgeRuleChains'; | |
389 | 389 | $http.get(url, config).then(function success(response) { |
390 | 390 | deferred.resolve(response.data); |
391 | 391 | }, function fail() { | ... | ... |
... | ... | @@ -71,7 +71,7 @@ export default function EdgeDirective($compile, $templateCache, $translate, $mdD |
71 | 71 | }; |
72 | 72 | |
73 | 73 | scope.onEdgeSync = function (edgeId) { |
74 | - edgeService.syncEdge(edgeId).then( | |
74 | + edgeService.syncEdge(edgeId.id).then( | |
75 | 75 | function success() { |
76 | 76 | toast.showSuccess($translate.instant('edge.sync-message'), 750, angular.element(element).parent().parent(), 'bottom left'); |
77 | 77 | }, | ... | ... |
... | ... | @@ -97,8 +97,8 @@ export default function RuleChainsController(ruleChainService, userService, impo |
97 | 97 | |
98 | 98 | vm.exportRuleChain = exportRuleChain; |
99 | 99 | vm.setRootRuleChain = setRootRuleChain; |
100 | - vm.setAutoAssignToEdgeRuleChain = setAutoAssignToEdgeRuleChain; | |
101 | - vm.removeDefaultEdgeRuleChain = removeDefaultEdgeRuleChain; | |
100 | + vm.setDefaultEdgeRuleChain = setDefaultEdgeRuleChain; | |
101 | + vm.unsetAutoAssignToEdgeRuleChain = unsetAutoAssignToEdgeRuleChain; | |
102 | 102 | |
103 | 103 | initController(); |
104 | 104 | |
... | ... | @@ -185,27 +185,27 @@ export default function RuleChainsController(ruleChainService, userService, impo |
185 | 185 | |
186 | 186 | ruleChainActionsList.push({ |
187 | 187 | onAction: function ($event, item) { |
188 | - setAutoAssignToEdgeRuleChain($event, item); | |
188 | + setDefaultEdgeRuleChain($event, item); | |
189 | 189 | }, |
190 | - name: function() { return $translate.instant('rulechain.set-auto-assign-to-edge') }, | |
191 | - details: function() { return $translate.instant('rulechain.set-auto-assign-to-edge') }, | |
190 | + name: function() { return $translate.instant('rulechain.set-default-edge') }, | |
191 | + details: function() { return $translate.instant('rulechain.set-default-edge') }, | |
192 | 192 | icon: "bookmark_outline", |
193 | 193 | isEnabled: isNonDefaultEdgeRuleChain |
194 | 194 | }); |
195 | 195 | |
196 | 196 | ruleChainActionsList.push({ |
197 | 197 | onAction: function ($event, item) { |
198 | - removeDefaultEdgeRuleChain($event, item); | |
198 | + unsetAutoAssignToEdgeRuleChain($event, item); | |
199 | 199 | }, |
200 | - name: function() { return $translate.instant('rulechain.remove-auto-assign-to-edge') }, | |
201 | - details: function() { return $translate.instant('rulechain.remove-auto-assign-to-edge') }, | |
200 | + name: function() { return $translate.instant('rulechain.remove-default-edge') }, | |
201 | + details: function() { return $translate.instant('rulechain.remove-default-edge') }, | |
202 | 202 | icon: "bookmark", |
203 | 203 | isEnabled: isDefaultEdgeRuleChain |
204 | 204 | }); |
205 | 205 | |
206 | 206 | ruleChainActionsList.push({ |
207 | 207 | onAction: function ($event, item) { |
208 | - setDefaultRootEdgeRuleChain($event, item); | |
208 | + setEdgeTemplateRootRuleChain($event, item); | |
209 | 209 | }, |
210 | 210 | name: function() { return $translate.instant('rulechain.set-default-root-edge') }, |
211 | 211 | details: function() { return $translate.instant('rulechain.set-default-root-edge') }, |
... | ... | @@ -339,7 +339,7 @@ export default function RuleChainsController(ruleChainService, userService, impo |
339 | 339 | |
340 | 340 | function mapRuleChainsWithDefaultEdges(ruleChains) { |
341 | 341 | var deferred = $q.defer(); |
342 | - ruleChainService.getDefaultEdgeRuleChains(null).then( | |
342 | + ruleChainService.getAutoAssignToEdgeRuleChains(null).then( | |
343 | 343 | function success(response) { |
344 | 344 | let defaultEdgeRuleChainIds = []; |
345 | 345 | response.map(function (ruleChain) { |
... | ... | @@ -471,17 +471,17 @@ export default function RuleChainsController(ruleChainService, userService, impo |
471 | 471 | }); |
472 | 472 | } |
473 | 473 | |
474 | - function setAutoAssignToEdgeRuleChain($event, ruleChain) { | |
474 | + function setDefaultEdgeRuleChain($event, ruleChain) { | |
475 | 475 | $event.stopPropagation(); |
476 | 476 | var confirm = $mdDialog.confirm() |
477 | 477 | .targetEvent($event) |
478 | - .title($translate.instant('rulechain.set-auto-assign-to-edge-title', {ruleChainName: ruleChain.name})) | |
479 | - .htmlContent($translate.instant('rulechain.set-auto-assign-to-edge-text')) | |
480 | - .ariaLabel($translate.instant('rulechain.set-auto-assign-to-edge')) | |
478 | + .title($translate.instant('rulechain.set-default-edge-title', {ruleChainName: ruleChain.name})) | |
479 | + .htmlContent($translate.instant('rulechain.set-default-edge-text')) | |
480 | + .ariaLabel($translate.instant('rulechain.set-default-edge')) | |
481 | 481 | .cancel($translate.instant('action.no')) |
482 | 482 | .ok($translate.instant('action.yes')); |
483 | 483 | $mdDialog.show(confirm).then(function () { |
484 | - ruleChainService.addDefaultEdgeRuleChain(ruleChain.id.id).then( | |
484 | + ruleChainService.setAutoAssignToEdgeRuleChain(ruleChain.id.id).then( | |
485 | 485 | () => { |
486 | 486 | vm.grid.refreshList(); |
487 | 487 | } |
... | ... | @@ -489,17 +489,17 @@ export default function RuleChainsController(ruleChainService, userService, impo |
489 | 489 | }); |
490 | 490 | } |
491 | 491 | |
492 | - function removeDefaultEdgeRuleChain($event, ruleChain) { | |
492 | + function unsetAutoAssignToEdgeRuleChain($event, ruleChain) { | |
493 | 493 | $event.stopPropagation(); |
494 | 494 | var confirm = $mdDialog.confirm() |
495 | 495 | .targetEvent($event) |
496 | - .title($translate.instant('rulechain.remove-auto-assign-to-edge-title', {ruleChainName: ruleChain.name})) | |
497 | - .htmlContent($translate.instant('rulechain.remove-auto-assign-to-edge-text')) | |
498 | - .ariaLabel($translate.instant('rulechain.remove-auto-assign-to-edge')) | |
496 | + .title($translate.instant('rulechain.remove-default-edge-title', {ruleChainName: ruleChain.name})) | |
497 | + .htmlContent($translate.instant('rulechain.remove-default-edge-text')) | |
498 | + .ariaLabel($translate.instant('rulechain.remove-default-edge')) | |
499 | 499 | .cancel($translate.instant('action.no')) |
500 | 500 | .ok($translate.instant('action.yes')); |
501 | 501 | $mdDialog.show(confirm).then(function () { |
502 | - ruleChainService.removeDefaultEdgeRuleChain(ruleChain.id.id).then( | |
502 | + ruleChainService.unsetAutoAssignToEdgeRuleChain(ruleChain.id.id).then( | |
503 | 503 | () => { |
504 | 504 | vm.grid.refreshList(); |
505 | 505 | } |
... | ... | @@ -507,7 +507,7 @@ export default function RuleChainsController(ruleChainService, userService, impo |
507 | 507 | }); |
508 | 508 | } |
509 | 509 | |
510 | - function setDefaultRootEdgeRuleChain($event, ruleChain) { | |
510 | + function setEdgeTemplateRootRuleChain($event, ruleChain) { | |
511 | 511 | $event.stopPropagation(); |
512 | 512 | var confirm = $mdDialog.confirm() |
513 | 513 | .targetEvent($event) |
... | ... | @@ -517,7 +517,7 @@ export default function RuleChainsController(ruleChainService, userService, impo |
517 | 517 | .cancel($translate.instant('action.no')) |
518 | 518 | .ok($translate.instant('action.yes')); |
519 | 519 | $mdDialog.show(confirm).then(function () { |
520 | - ruleChainService.setDefaultRootEdgeRuleChain(ruleChain.id.id).then( | |
520 | + ruleChainService.setEdgeTemplateRootRuleChain(ruleChain.id.id).then( | |
521 | 521 | () => { |
522 | 522 | vm.grid.refreshList(); |
523 | 523 | } | ... | ... |
... | ... | @@ -28,8 +28,8 @@ |
28 | 28 | the-form="vm.grid.detailsForm" |
29 | 29 | rule-chains-scope="vm.ruleChainsScope" |
30 | 30 | edge="vm.edge" |
31 | - on-set-auto-assign-to-edge-rule-chain="vm.setAutoAssignToEdgeRuleChain(event, vm.grid.detailsConfig.currentItem)" | |
32 | - on-remove-auto-assign-to-edge-rule-chain="vm.removeAutoAssignToEdgeRuleChain(event, vm.grid.detailsConfig.currentItem)" | |
31 | + on-set-default-edge-rule-chain="vm.setDefaultEdgeRuleChain(event, vm.grid.detailsConfig.currentItem)" | |
32 | + on-remove-default-edge-rule-chain="vm.unsetAutoAssignToEdgeRuleChain(event, vm.grid.detailsConfig.currentItem)" | |
33 | 33 | on-set-root-rule-chain="vm.setRootRuleChain(event, vm.grid.detailsConfig.currentItem)" |
34 | 34 | on-export-rule-chain="vm.exportRuleChain(event, vm.grid.detailsConfig.currentItem)" |
35 | 35 | on-delete-rule-chain="vm.grid.deleteItem(event, vm.grid.detailsConfig.currentItem)"> | ... | ... |