Class: SolidObjects::Administration

Inherits:
Object
  • Object
show all
Defined in:
lib/solid_objects/administration.rb,
sig/generated/lib/solid_objects/administration.rbs

Instance Method Summary collapse

Instance Method Details

#authorize!(authorization_context: nil) ⇒ void

This method returns an undefined value.

RBS:

  • (?authorization_context: untyped) -> void

Parameters:

  • authorization_context: (Object) (defaults to: nil)


32
33
34
35
36
37
38
39
40
41
42
# File 'lib/solid_objects/administration.rb', line 32

def authorize!(authorization_context: nil)
  authorized = SolidObjects.configuration.authorize_administration.call(
    action: :inspect,
    resource: "processes",
    resource_id: nil,
    authorization_context:
  )
  return if authorized

  raise Unauthorized, "actor administration is not authorized"
end

#processes(authorization_context: nil) ⇒ Array[Hash[Symbol, untyped]]

RBS:

  • (?authorization_context: untyped) -> Array[Hash[Symbol, untyped]]

Parameters:

  • authorization_context: (Object) (defaults to: nil)

Returns:

  • (Array[Hash[Symbol, untyped]])


6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
# File 'lib/solid_objects/administration.rb', line 6

def processes(authorization_context: nil)
  authorize!(authorization_context:)
  now = SolidObjects.database_adapter.database_now
  stale_at = now - SolidObjects.configuration.process_alive_threshold

  Process.order(:kind, :started_at).map do |process_record|
    {
      id: process_record.id,
      kind: process_record.kind,
      hostname: process_record.hostname,
      pid: process_record.pid,
      metadata: Serialization.readonly_copy(process_record.),
      shutdown_state: process_record.shutdown_state,
      shutdown_requested_at: process_record.shutdown_requested_at,
      started_at: process_record.started_at,
      last_heartbeat_at: process_record.last_heartbeat_at,
      stopped_at: process_record.stopped_at,
      stale: process_record.shutdown_state != "stopped" &&
        process_record.last_heartbeat_at <= stale_at
    }.freeze
  end.freeze
end