11module AIM
22 module HathiTrust
33 class DigitizerSetter
4+ def self . configure
5+ ::Yabeda . configure do
6+ gauge :aim_hathi_trust_set_digitizer_last_success , comment : "Start time of the last Set Digitizer Job that successfully finished."
7+ end
8+ Yabeda . configure!
9+ end
10+
11+ def self . send_metrics ( start_time )
12+ Yabeda . aim_hathi_trust_set_digitizer_last_success . set ( { } , start_time )
13+ begin
14+ Yabeda ::Prometheus . push_gateway . add ( Yabeda ::Prometheus . registry )
15+ rescue
16+ Logger . new ( $stdout) . error ( "Failed to contact the push gateway" )
17+ end
18+ end
19+
420 def initialize ( logger : Logger . new ( $stdout) )
521 @logger = logger
622 end
723
824 def run
25+ @logger . info ( "Fetching digifeeds_metadata set id" )
26+ sets_resp = AlmaRestClient . client . get_all ( url : "/conf/sets" , record_key : "set" , query : { "q" => "name~digifeeds_metadata" } )
27+ if sets_resp . status != 200
28+ @logger . error ( "Failed to fetch set" )
29+ abort
30+ end
31+
32+ set_id = sets_resp
33+ . body [ "set" ]
34+ . filter_map { |x | x [ "id" ] if x [ "name" ] == "digifeeds_metadata" }
35+ . first
36+
37+ @logger . info ( "Set Id: #{ set_id } " )
38+
939 @logger . info ( "Sending Change Physical Item Job to set the Digitizer to Umich for Digifeeds" )
10- resp = AlmaRestClient . client . post ( "/conf/jobs/#{ ENV . fetch ( "CHANGE_PHYSICAL_ITEM_INFORMATION_JOB_ID" ) } ?op=run" , body : body )
40+ resp = AlmaRestClient . client . post ( "/conf/jobs/#{ ENV . fetch ( "CHANGE_PHYSICAL_ITEM_INFORMATION_JOB_ID" ) } ?op=run" , body : body ( set_id : set_id ) )
1141 @logger . info resp . body
1242 if resp . status == 200
1343 @logger . info ( "Finished Sending Change Physical Items job" )
@@ -16,9 +46,9 @@ def run
1646 end
1747 end
1848
19- def body
49+ def body ( set_id : )
2050 {
21- "parameter" => params . map do |name , value |
51+ "parameter" => params ( set_id : set_id ) . map do |name , value |
2252 {
2353 "name" => { "value" => name , "desc" => name } ,
2454 "value" => value
@@ -27,11 +57,11 @@ def body
2757 }
2858 end
2959
30- def params
60+ def params ( set_id : )
3161 {
3262 "STATISTICS_NOTE_1_value" => digitizer ,
3363 "STATISTICS_NOTE_1_selected" => true ,
34- "set_id" => ENV . fetch ( "DIGIFEEDS_SET_ID" ) ,
64+ "set_id" => set_id ,
3565 "job_name" => job_name
3666 }
3767 end
0 commit comments