I nodi cloud restano in provisioning finché :9997 risponde; retry su create_path e 503 retryable se l’ingest è ancora irraggiungibile. Co-authored-by: Cursor <cursoragent@cursor.com>
28 lines
703 B
Ruby
28 lines
703 B
Ruby
# frozen_string_literal: true
|
|
|
|
module Streams
|
|
# Probe reachability of MediaMTX API on a stream node (:9997).
|
|
class NodeHealth
|
|
def self.mediamtx_up?(node, timeout: 2)
|
|
new(node, timeout: timeout).mediamtx_up?
|
|
end
|
|
|
|
def self.promote_if_healthy!(node, timeout: 2)
|
|
return false unless node.status == "provisioning"
|
|
return false unless mediamtx_up?(node, timeout: timeout)
|
|
|
|
node.update!(status: "ready", last_health_at: Time.current)
|
|
true
|
|
end
|
|
|
|
def initialize(node, timeout: 2)
|
|
@node = node
|
|
@timeout = timeout
|
|
end
|
|
|
|
def mediamtx_up?
|
|
Mediamtx::Client.new(base_url: @node.api_base_url).reachable?(timeout: @timeout)
|
|
end
|
|
end
|
|
end
|