Module: Pvectl::Commands::Get::ResourceHandler Abstract

Overview

This module is abstract.

Include in handler class and implement required methods.

Interface module for resource handlers.

Each resource type (nodes, vms, containers, storage) implements this interface to provide listing capabilities.

Minimal interface with two methods:

  • #list - fetches and returns model objects

  • #presenter - returns presenter for formatting

Examples:

Implementing a handler

class NodesHandler
  include ResourceHandler

  def list(node: nil, name: nil)
    # Fetch and return array of Node models
    repository.list.select { |n| name.nil? || n.name == name }
  end

  def presenter
    Presenters::Node.new
  end
end

Instance Method Summary collapse

Instance Method Details

#list(node: nil, name: nil, **_options) ⇒ Array<Object>

Lists resources, optionally filtered by node and name.

Parameters:

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

    filter by node name (for VMs/containers)

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

    filter by resource name

  • _options (Hash)

    additional options passed through from CLI (e.g., limit, since, type_filter)

Returns:

  • (Array<Object>)

    collection of model objects

Raises:

  • (NotImplementedError)

    if not implemented by including class



39
40
41
# File 'lib/pvectl/commands/get/resource_handler.rb', line 39

def list(node: nil, name: nil, **_options)
  raise NotImplementedError, "#{self.class}#list must be implemented"
end

#presenterPresenters::Base

Returns the presenter for this resource type.

Returns:

Raises:

  • (NotImplementedError)

    if not implemented by including class



47
48
49
# File 'lib/pvectl/commands/get/resource_handler.rb', line 47

def presenter
  raise NotImplementedError, "#{self.class}#presenter must be implemented"
end

#selector_classClass?

Returns the selector class for client-side filtering.

Handlers that support selector-based filtering (e.g., -l status=running) should override this to return their selector class.

Returns:

  • (Class, nil)

    selector class (e.g., Selectors::Vm) or nil if not supported



57
58
59
# File 'lib/pvectl/commands/get/resource_handler.rb', line 57

def selector_class
  nil
end