Class: Pvectl::Services::Get::ResourceService
- Inherits:
-
Object
- Object
- Pvectl::Services::Get::ResourceService
- Defined in:
- lib/pvectl/services/get/resource_service.rb
Overview
Service for fetching and formatting resource data.
Orchestrates the data flow between:
-
ResourceHandler (provides models and presenter)
-
Formatters::Registry (formats output)
This follows ARCHITECTURE.md section 3.4: “Services orchestrate data flow between Repository, Models, and Formatters”
Instance Method Summary collapse
-
#describe(name:, node: nil, args: [], vmid: nil) ⇒ String
Describes and formats a single resource.
-
#initialize(handler:, format: "table", color_enabled: true) ⇒ ResourceService
constructor
Creates a new ResourceService.
-
#list(node: nil, name: nil, args: [], storage: nil, vmid: nil, selector: nil, **options) ⇒ String
Fetches and formats resources.
Constructor Details
#initialize(handler:, format: "table", color_enabled: true) ⇒ ResourceService
Creates a new ResourceService.
27 28 29 30 31 |
# File 'lib/pvectl/services/get/resource_service.rb', line 27 def initialize(handler:, format: "table", color_enabled: true) @handler = handler @format = format @color_enabled = color_enabled end |
Instance Method Details
#describe(name:, node: nil, args: [], vmid: nil) ⇒ String
Describes and formats a single resource.
For local storage with multiple instances, returns list of nodes when no node specified, or full describe when node is specified.
59 60 61 62 63 64 65 66 67 68 69 70 |
# File 'lib/pvectl/services/get/resource_service.rb', line 59 def describe(name:, node: nil, args: [], vmid: nil) result = @handler.describe(name: name, node: node, args: args, vmid: vmid) presenter = @handler.presenter if result.is_a?(Array) # Multiple instances - format as list format_output(result, presenter) else # Single model - format as describe format_output_describe(result, presenter) end end |
#list(node: nil, name: nil, args: [], storage: nil, vmid: nil, selector: nil, **options) ⇒ String
Fetches and formats resources.
43 44 45 46 47 48 |
# File 'lib/pvectl/services/get/resource_service.rb', line 43 def list(node: nil, name: nil, args: [], storage: nil, vmid: nil, selector: nil, **) models = @handler.list(node: node, name: name, args: args, storage: storage, vmid: vmid, **) models = selector.apply(models) if selector && !selector.empty? presenter = @handler.presenter format_output(models, presenter) end |