Class: Pvectl::Utils::ResourceResolver
- Inherits:
-
Object
- Object
- Pvectl::Utils::ResourceResolver
- Defined in:
- lib/pvectl/utils/resource_resolver.rb,
sig/pvectl/utils/resource_resolver.rbs
Overview
Utility for resolving VMID to VM/container type and node.
ResourceResolver auto-detects whether a given VMID belongs to a QEMU virtual machine or LXC container and retrieves its node location. Results are cached for efficiency when resolving multiple VMIDs.
Instance Method Summary collapse
-
#initialize(connection) ⇒ ResourceResolver
constructor
Creates a new ResourceResolver.
-
#load_resources ⇒ void
Loads and caches cluster resources.
-
#resolve(vmid) ⇒ Hash?
Resolves a VMID to its resource information.
-
#resolve_all ⇒ Array<Hash>
Returns all resources in the cluster.
-
#resolve_multiple(vmids) ⇒ Array<Hash>
Resolves multiple VMIDs to their resource information.
Constructor Details
#initialize(connection) ⇒ ResourceResolver
Creates a new ResourceResolver.
25 26 27 28 |
# File 'lib/pvectl/utils/resource_resolver.rb', line 25 def initialize(connection) @connection = connection @cache = nil end |
Instance Method Details
#load_resources ⇒ void
This method returns an undefined value.
Loads and caches cluster resources.
63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 |
# File 'lib/pvectl/utils/resource_resolver.rb', line 63 def load_resources return if @cache response = @connection.client["cluster/resources"].get(type: "vm") @cache = {} response.each do |r| @cache[r[:vmid]] = { vmid: r[:vmid], node: r[:node], type: r[:type] == "lxc" ? :lxc : :qemu, name: r[:name] } end end |
#resolve(vmid) ⇒ Hash?
Resolves a VMID to its resource information.
35 36 37 38 39 |
# File 'lib/pvectl/utils/resource_resolver.rb', line 35 def resolve(vmid) vmid = vmid.to_i load_resources @cache[vmid] end |
#resolve_all ⇒ Array<Hash>
Returns all resources in the cluster.
53 54 55 56 |
# File 'lib/pvectl/utils/resource_resolver.rb', line 53 def resolve_all load_resources @cache.values end |
#resolve_multiple(vmids) ⇒ Array<Hash>
Resolves multiple VMIDs to their resource information.
45 46 47 48 |
# File 'lib/pvectl/utils/resource_resolver.rb', line 45 def resolve_multiple(vmids) load_resources vmids.map { |id| @cache[id.to_i] }.compact end |