@@ -14,7 +14,7 @@ defmodule NervesHubWeb.DeviceChannel do
14
14
alias NervesHub.Deployments
15
15
alias NervesHub.Devices
16
16
alias NervesHub.Devices.Device
17
- alias NervesHub.Devices.Metrics
17
+ alias NervesHub.Features
18
18
alias NervesHub.Firmwares
19
19
alias NervesHub.Repo
20
20
alias Phoenix.Socket.Broadcast
@@ -49,13 +49,12 @@ defmodule NervesHubWeb.DeviceChannel do
49
49
subscribe ( "device:#{ device . id } " )
50
50
subscribe ( deployment_channel )
51
51
52
- if device_health_check_enabled? ( ) do
53
- send ( self ( ) , :health_check )
54
- schedule_health_check ( )
55
- end
56
-
57
52
send ( self ( ) , :device_registation )
58
53
54
+ if Features . device_can_use_features? ( device ) do
55
+ push ( socket , "features:get" , % { } )
56
+ end
57
+
59
58
socket =
60
59
socket
61
60
|> assign ( :device , device )
@@ -311,12 +310,6 @@ defmodule NervesHubWeb.DeviceChannel do
311
310
{ :noreply , socket }
312
311
end
313
312
314
- def handle_info ( :health_check , socket ) do
315
- push ( socket , "check_health" , % { } )
316
- schedule_health_check ( )
317
- { :noreply , socket }
318
- end
319
-
320
313
def handle_info ( % Broadcast { event: "connection:heartbeat" } , socket ) do
321
314
# Expected message that is not used here :)
322
315
{ :noreply , socket }
@@ -359,16 +352,6 @@ defmodule NervesHubWeb.DeviceChannel do
359
352
end
360
353
end
361
354
362
- def handle_in ( "location:update" , location , % { assigns: % { device: device } } = socket ) do
363
- metadata = Map . put ( device . connection_metadata , "location" , location )
364
-
365
- { :ok , device } = Devices . update_device ( device , % { connection_metadata: metadata } )
366
-
367
- device_internal_broadcast! ( device , "location:updated" , location )
368
-
369
- { :reply , :ok , assign ( socket , :device , device ) }
370
- end
371
-
372
355
def handle_in ( "connection_types" , % { "values" => types } , % { assigns: % { device: device } } = socket ) do
373
356
{ :ok , device } = Devices . update_device ( device , % { "connection_types" => types } )
374
357
{ :noreply , assign ( socket , :device , device ) }
@@ -407,40 +390,6 @@ defmodule NervesHubWeb.DeviceChannel do
407
390
{ :noreply , socket }
408
391
end
409
392
410
- def handle_in ( "health_check_report" , % { "value" => device_status } , socket ) do
411
- device_meta =
412
- for { key , val } <- Map . from_struct ( socket . assigns . device . firmware_metadata ) ,
413
- into: % { } ,
414
- do: { to_string ( key ) , to_string ( val ) }
415
-
416
- # Separate metrics from health report to store in metrics table
417
- metrics = device_status [ "metrics" ]
418
-
419
- health_report =
420
- device_status
421
- |> Map . delete ( "metrics" )
422
- |> Map . put ( "metadata" , Map . merge ( device_status [ "metadata" ] , device_meta ) )
423
-
424
- device_health = % { "device_id" => socket . assigns . device . id , "data" => health_report }
425
-
426
- with { :health_report , { :ok , _ } } <-
427
- { :health_report , Devices . save_device_health ( device_health ) } ,
428
- { :metrics_report , { _ , _ } } <-
429
- { :metrics_report , Metrics . save_metrics ( socket . assigns . device . id , metrics ) } do
430
- device_internal_broadcast! ( socket . assigns . device , "health_check_report" , % { } )
431
- else
432
- { :health_report , { :error , err } } ->
433
- Logger . warning ( "Failed to save health check data: #{ inspect ( err ) } " )
434
- log_to_sentry ( socket . assigns . device , "[DeviceChannel] Failed to save health check data." )
435
-
436
- { :metrics_report , { :error , err } } ->
437
- Logger . warning ( "Failed to save metrics: #{ inspect ( err ) } " )
438
- log_to_sentry ( socket . assigns . device , "[DeviceChannel] Failed to save metrics." )
439
- end
440
-
441
- { :noreply , socket }
442
- end
443
-
444
393
def handle_in ( msg , params , socket ) do
445
394
# Ignore unhandled messages so that it doesn't crash the link process
446
395
# preventing cascading problems.
@@ -476,7 +425,7 @@ defmodule NervesHubWeb.DeviceChannel do
476
425
:ok
477
426
end
478
427
479
- defp log_to_sentry ( device , message , extra \\ % { } ) do
428
+ defp log_to_sentry ( device , message , extra ) do
480
429
Sentry.Context . set_tags_context ( % {
481
430
device_identifier: device . identifier ,
482
431
device_id: device . id ,
@@ -643,24 +592,6 @@ defmodule NervesHubWeb.DeviceChannel do
643
592
socket
644
593
end
645
594
646
- defp schedule_health_check ( ) do
647
- if device_health_check_enabled? ( ) do
648
- Process . send_after ( self ( ) , :health_check , device_health_check_interval ( ) )
649
- :ok
650
- else
651
- :ok
652
- end
653
- end
654
-
655
- defp device_health_check_enabled? ( ) do
656
- Application . get_env ( :nerves_hub , :device_health_check_enabled )
657
- end
658
-
659
- defp device_health_check_interval ( ) do
660
- Application . get_env ( :nerves_hub , :device_health_check_interval_minutes )
661
- |> :timer . minutes ( )
662
- end
663
-
664
595
defp device_deployment_change_jitter_ms ( ) do
665
596
jitter = Application . get_env ( :nerves_hub , :device_deployment_change_jitter_seconds )
666
597
0 commit comments