Class: Pvectl::Services::TaskListing

Inherits:
Object
  • Object
show all
Defined in:
lib/pvectl/services/task_listing.rb

Overview

Service for listing tasks across one or all cluster nodes.

Encapsulates multi-node iteration, merge, sort, and limit logic. Used by both Get::Handlers::Tasks and Logs::Handlers::TaskLogs.

Examples:

List all tasks cluster-wide

service = TaskListing.new(task_list_repository: repo, node_repository: node_repo)
tasks = service.list(limit: 20)

List tasks on a specific node

tasks = service.list(node: "pve1", type_filter: "vzdump")

Instance Method Summary collapse

Constructor Details

#initialize(task_list_repository:, node_repository:) ⇒ TaskListing

Creates a new TaskListing service.

Parameters:



22
23
24
25
# File 'lib/pvectl/services/task_listing.rb', line 22

def initialize(task_list_repository:, node_repository:)
  @task_list_repository = task_list_repository
  @node_repository = node_repository
end

Instance Method Details

#list(node: nil, vmid: nil, limit: 50, since: nil, until_time: nil, type_filter: nil, status_filter: nil) ⇒ Array<Models::TaskEntry>

Lists tasks, optionally filtered.

When node is nil, iterates all cluster nodes and merges results sorted by starttime descending.

Parameters:

  • node (String, nil) (defaults to: nil)

    specific node or nil for all nodes

  • vmid (Integer, nil) (defaults to: nil)

    filter by VMID

  • limit (Integer) (defaults to: 50)

    max entries (default 50)

  • since (String, nil) (defaults to: nil)

    start time filter

  • until_time (String, nil) (defaults to: nil)

    end time filter

  • type_filter (String, nil) (defaults to: nil)

    task type filter

  • status_filter (String, nil) (defaults to: nil)

    status filter

Returns:



40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
# File 'lib/pvectl/services/task_listing.rb', line 40

def list(node: nil, vmid: nil, limit: 50, since: nil, until_time: nil,
         type_filter: nil, status_filter: nil)
  if node
    @task_list_repository.list(
      node: node, vmid: vmid, limit: limit, since: since,
      until_time: until_time, type_filter: type_filter,
      status_filter: status_filter
    )
  else
    list_all_nodes(
      vmid: vmid, limit: limit, since: since,
      until_time: until_time, type_filter: type_filter,
      status_filter: status_filter
    )
  end
end