@@ -44,13 +44,11 @@ defmodule Astarte.RealmManagement.Engine do
4444 def get_health ( ) do
4545 _ = Logger . debug ( "Get health." )
4646
47- with { :ok , client } <- Database . connect ( ) ,
48- :ok <- Queries . check_astarte_health ( client , :quorum ) do
47+ with :ok <- Queries . check_astarte_health ( :quorum ) do
4948 { :ok , % { status: :ready } }
5049 else
5150 { :error , :health_check_bad } ->
52- with { :ok , client } <- Database . connect ( ) ,
53- :ok <- Queries . check_astarte_health ( client , :one ) do
51+ with :ok <- Queries . check_astarte_health ( :one ) do
5452 { :ok , % { status: :degraded } }
5553 else
5654 { :error , :health_check_bad } ->
@@ -76,8 +74,8 @@ defmodule Astarte.RealmManagement.Engine do
7674 interface_descriptor <- InterfaceDescriptor . from_interface ( interface_doc ) ,
7775 % InterfaceDescriptor { name: name , major_version: major } <- interface_descriptor ,
7876 { :interface_avail , { :ok , false } } <-
79- { :interface_avail , Queries . is_interface_major_available? ( client , name , major ) } ,
80- :ok <- Queries . check_interface_name_collision ( client , name ) ,
77+ { :interface_avail , Queries . is_interface_major_available? ( realm_name , name , major ) } ,
78+ :ok <- Queries . check_interface_name_collision ( realm_name , name ) ,
8179 { :ok , automaton } <- EndpointsAutomaton . build ( interface_doc . mappings ) do
8280 _ =
8381 Logger . info ( "Installing interface." ,
@@ -142,7 +140,7 @@ defmodule Astarte.RealmManagement.Engine do
142140 interface_descriptor <- InterfaceDescriptor . from_interface ( interface_doc ) ,
143141 % InterfaceDescriptor { name: name , major_version: major } <- interface_descriptor ,
144142 { :interface_avail , { :ok , true } } <-
145- { :interface_avail , Queries . is_interface_major_available? ( client , name , major ) } ,
143+ { :interface_avail , Queries . is_interface_major_available? ( realm_name , name , major ) } ,
146144 { :ok , installed_interface } <-
147145 Interface . fetch_interface_descriptor ( realm_name , name , major ) ,
148146 :ok <- error_on_incompatible_descriptor ( installed_interface , interface_descriptor ) ,
@@ -379,12 +377,12 @@ defmodule Astarte.RealmManagement.Engine do
379377 with { :major , 0 } <- { :major , major } ,
380378 { :ok , client } <- Database . connect ( realm: realm_name ) ,
381379 { :major_is_avail , { :ok , true } } <-
382- { :major_is_avail , Queries . is_interface_major_available? ( client , name , 0 ) } ,
380+ { :major_is_avail , Queries . is_interface_major_available? ( realm_name , name , 0 ) } ,
383381 { :devices , { :ok , false } } <-
384- { :devices , Queries . is_any_device_using_interface? ( client , name ) } ,
382+ { :devices , Queries . is_any_device_using_interface? ( realm_name , name ) } ,
385383 interface_id = CQLUtils . interface_id ( name , major ) ,
386384 { :triggers , { :ok , false } } <-
387- { :triggers , Queries . has_interface_simple_triggers? ( client , interface_id ) } do
385+ { :triggers , Queries . has_interface_simple_triggers? ( realm_name , interface_id ) } do
388386 if opts [ :async ] do
389387 # TODO: add _ = Logger.metadata(realm: realm_name)
390388 Task . start_link ( Engine , :execute_interface_deletion , [ client , realm_name , name , major ] )
@@ -417,7 +415,7 @@ defmodule Astarte.RealmManagement.Engine do
417415 def execute_interface_deletion ( client , realm_name , name , major ) do
418416 with { :ok , interface_row } <- Interface . retrieve_interface_row ( realm_name , name , major ) ,
419417 { :ok , descriptor } <- InterfaceDescriptor . from_db_result ( interface_row ) ,
420- :ok <- Queries . delete_interface_storage ( client , descriptor ) ,
418+ :ok <- Queries . delete_interface_storage ( client , descriptor , realm_name ) ,
421419 :ok <- Queries . delete_devices_with_data_on_interface ( client , name ) do
422420 _ =
423421 Logger . info ( "Interface deletion started." ,
@@ -437,38 +435,21 @@ defmodule Astarte.RealmManagement.Engine do
437435 interface_major: major_version
438436 )
439437
440- with { :ok , client } <- Database . connect ( realm: realm_name ) ,
441- { :ok , interface } <- Queries . fetch_interface ( client , interface_name , major_version ) do
438+ with { :ok , interface } <- Queries . fetch_interface ( realm_name , interface_name , major_version ) do
442439 Jason . encode ( interface )
443440 end
444441 end
445442
446443 def list_interface_versions ( realm_name , interface_name ) do
447444 _ = Logger . debug ( "List interface versions." , interface: interface_name )
448445
449- with { :ok , client } <- Database . connect ( realm: realm_name ) do
450- Queries . interface_available_versions ( client , interface_name )
451- else
452- { :error , :database_connection_error } ->
453- { :error , :realm_not_found }
454-
455- { :error , reason } ->
456- { :error , reason }
457- end
446+ Queries . interface_available_versions ( realm_name , interface_name )
458447 end
459448
460449 def get_interfaces_list ( realm_name ) do
461450 _ = Logger . debug ( "Get interfaces list." )
462451
463- with { :ok , client } <- Database . connect ( realm: realm_name ) do
464- Queries . get_interfaces_list ( client )
465- else
466- { :error , :database_connection_error } ->
467- { :error , :realm_not_found }
468-
469- { :error , reason } ->
470- { :error , reason }
471- end
452+ Queries . get_interfaces_list ( realm_name )
472453 end
473454
474455 def get_jwt_public_key_pem ( realm_name ) do
@@ -516,14 +497,14 @@ defmodule Astarte.RealmManagement.Engine do
516497
517498 with { :ok , client } <- get_database_client ( realm_name ) ,
518499 { :exists? , { :error , :trigger_not_found } } <-
519- { :exists? , Queries . retrieve_trigger_uuid ( client , trigger_name ) } ,
500+ { :exists? , Queries . retrieve_trigger_uuid ( realm_name , trigger_name ) } ,
520501 simple_trigger_maps = build_simple_trigger_maps ( serialized_tagged_simple_triggers ) ,
521502 trigger = build_trigger ( trigger_name , trigger_policy_name , simple_trigger_maps , action ) ,
522503 % Trigger { trigger_uuid: trigger_uuid } = trigger ,
523504 { :ok , action_map } <- Jason . decode ( action ) ,
524505 trigger_target = target_from_action ( action_map , trigger_uuid ) ,
525506 t_container = build_trigger_target_container ( trigger_target ) ,
526- :ok <- validate_simple_triggers ( client , simple_trigger_maps ) ,
507+ :ok <- validate_simple_triggers ( realm_name , simple_trigger_maps ) ,
527508 # TODO: these should be batched together
528509 :ok <- install_simple_triggers ( client , simple_trigger_maps , trigger_uuid , t_container ) ,
529510 :ok <- install_trigger_policy_link ( client , trigger_uuid , trigger_policy_name ) do
@@ -617,12 +598,12 @@ defmodule Astarte.RealmManagement.Engine do
617598 }
618599 end
619600
620- defp validate_simple_triggers ( client , simple_trigger_maps ) do
601+ defp validate_simple_triggers ( realm_name , simple_trigger_maps ) do
621602 Enum . reduce_while ( simple_trigger_maps , :ok , fn
622603 % { simple_trigger: simple_trigger_container } , _acc ->
623604 % SimpleTriggerContainer { simple_trigger: { _tag , simple_trigger } } = simple_trigger_container
624605
625- case validate_simple_trigger ( client , simple_trigger ) do
606+ case validate_simple_trigger ( realm_name , simple_trigger ) do
626607 :ok ->
627608 { :cont , :ok }
628609
@@ -637,7 +618,7 @@ defmodule Astarte.RealmManagement.Engine do
637618 :ok
638619 end
639620
640- defp validate_simple_trigger ( client , % DataTrigger { } = data_trigger ) do
621+ defp validate_simple_trigger ( realm_name , % DataTrigger { } = data_trigger ) do
641622 % DataTrigger {
642623 interface_name: interface_name ,
643624 interface_major: interface_major ,
@@ -646,8 +627,9 @@ defmodule Astarte.RealmManagement.Engine do
646627 data_trigger_type: data_trigger_type
647628 } = data_trigger
648629
649- # This will fail with {:error, :interface_not_found} if the interface does not exist
650- with { :ok , interface } <- Queries . fetch_interface ( client , interface_name , interface_major ) do
630+ # This should fail with {:error, :interface_not_found} if the interface does not exist
631+ with { :ok , interface } <-
632+ Queries . fetch_interface ( realm_name , interface_name , interface_major ) do
651633 case interface . aggregation do
652634 :individual ->
653635 cond do
@@ -734,7 +716,7 @@ defmodule Astarte.RealmManagement.Engine do
734716 _ = Logger . debug ( "Get trigger." , trigger_name: trigger_name )
735717
736718 with { :ok , client } <- get_database_client ( realm_name ) ,
737- { :ok , % Trigger { } = trigger } <- Queries . retrieve_trigger ( client , trigger_name ) do
719+ { :ok , % Trigger { } = trigger } <- Queries . retrieve_trigger ( client , trigger_name , realm_name ) do
738720 % Trigger {
739721 trigger_uuid: parent_uuid ,
740722 simple_triggers_uuids: simple_triggers_uuids
@@ -779,16 +761,14 @@ defmodule Astarte.RealmManagement.Engine do
779761 def get_triggers_list ( realm_name ) do
780762 _ = Logger . debug ( "Get triggers list." )
781763
782- with { :ok , client } <- get_database_client ( realm_name ) do
783- Queries . get_triggers_list ( client )
784- end
764+ Queries . get_triggers_list ( realm_name )
785765 end
786766
787767 def delete_trigger ( realm_name , trigger_name ) do
788768 _ = Logger . info ( "Going to delete trigger." , trigger_name: trigger_name , tag: "delete_trigger" )
789769
790770 with { :ok , client } <- get_database_client ( realm_name ) ,
791- { :ok , trigger } <- Queries . retrieve_trigger ( client , trigger_name ) do
771+ { :ok , trigger } <- Queries . retrieve_trigger ( client , trigger_name , realm_name ) do
792772 _ =
793773 Logger . info ( "Deleting trigger." ,
794774 trigger_name: trigger_name ,
@@ -804,7 +784,7 @@ defmodule Astarte.RealmManagement.Engine do
804784 Queries . delete_trigger_policy_link ( client , trigger . trigger_uuid , trigger . policy ) == :ok
805785
806786 if delete_all_simple_triggers_succeeded and delete_policy_link_succeeded do
807- Queries . delete_trigger ( client , trigger_name )
787+ Queries . delete_trigger ( client , trigger_name , realm_name )
808788 else
809789 Logger . warning ( "Failed to delete trigger." ,
810790 trigger_name: trigger_name ,
0 commit comments