Class: Pvectl::Repositories::Capabilities
- Defined in:
- lib/pvectl/repositories/capabilities.rb,
sig/pvectl/repositories/capabilities.rbs
Overview
Repository for Proxmox node capabilities.
Aggregates feature information from the two most useful capability endpoints — QEMU CPU models and QEMU machine types — into a flat collection of Capability models. The cpu-flags and migration capability endpoints are intentionally out of scope for the initial implementation (YAGNI); they can be added when there is a concrete consumer need.
Constant Summary collapse
- CPU_ENDPOINT =
CPU capability endpoint path (without leading slash).
"capabilities/qemu/cpu"- MACHINES_ENDPOINT =
Machine type capability endpoint path (without leading slash).
"capabilities/qemu/machines"
Instance Attribute Summary
Attributes inherited from Base
Instance Method Summary collapse
-
#build_cpu(data, node) ⇒ Models::Capability
Builds a CPU capability model.
-
#build_machine(data, node) ⇒ Models::Capability
Builds a machine type capability model.
-
#cpus(node) ⇒ Array<Models::Capability>
Fetches CPU model capabilities.
-
#list(node:) ⇒ Array<Models::Capability>
Lists capabilities for a node.
-
#machines(node) ⇒ Array<Models::Capability>
Fetches machine type capabilities.
Methods inherited from Base
#build_model, #extract_data, #get, #initialize, #models_from, #unwrap
Constructor Details
This class inherits a constructor from Pvectl::Repositories::Base
Instance Method Details
#build_cpu(data, node) ⇒ Models::Capability
Builds a CPU capability model.
69 70 71 72 73 74 75 76 77 |
# File 'lib/pvectl/repositories/capabilities.rb', line 69 def build_cpu(data, node) Models::Capability.new( node_name: node, kind: :cpu, name: data[:name], vendor: data[:vendor], custom: data[:custom] || false ) end |
#build_machine(data, node) ⇒ Models::Capability
Builds a machine type capability model.
84 85 86 87 88 89 90 91 92 93 |
# File 'lib/pvectl/repositories/capabilities.rb', line 84 def build_machine(data, node) Models::Capability.new( node_name: node, kind: :machine, name: data[:id], machine_type: data[:type], version: data[:version], changes: data[:changes] ) end |
#cpus(node) ⇒ Array<Models::Capability>
Fetches CPU model capabilities.
50 51 52 53 |
# File 'lib/pvectl/repositories/capabilities.rb', line 50 def cpus(node) response = connection.client["nodes/#{node}/#{CPU_ENDPOINT}"].get unwrap(response).map { |data| build_cpu(data, node) } end |
#list(node:) ⇒ Array<Models::Capability>
Lists capabilities for a node.
Combines GET /nodes/{node}/capabilities/qemu/cpu and
GET /nodes/{node}/capabilities/qemu/machines. Each entry becomes
a Capability instance — CPU models first, then machine types.
38 39 40 41 42 |
# File 'lib/pvectl/repositories/capabilities.rb', line 38 def list(node:) raise ArgumentError, "node is required" if node.nil? || node.to_s.empty? cpus(node) + machines(node) end |
#machines(node) ⇒ Array<Models::Capability>
Fetches machine type capabilities.
59 60 61 62 |
# File 'lib/pvectl/repositories/capabilities.rb', line 59 def machines(node) response = connection.client["nodes/#{node}/#{MACHINES_ENDPOINT}"].get unwrap(response).map { |data| build_machine(data, node) } end |