Class: Pvectl::Repositories::Hosts
- Defined in:
- lib/pvectl/repositories/hosts.rb
Overview
Repository for per-node /etc/hosts file contents.
Uses the ‘/nodes/node/hosts` endpoint to fetch and update the raw contents of /etc/hosts on a single node.
The Proxmox API returns a digest pair. The digest is used for optimistic concurrency control — the same digest must be sent back with the POST update.
Instance Method Summary collapse
-
#fetch(node_name) ⇒ Models::HostsFile
Fetches the /etc/hosts contents for a node.
-
#update(node_name, data, digest = nil) ⇒ void
Updates the /etc/hosts contents for a node.
Methods inherited from Base
Constructor Details
This class inherits a constructor from Pvectl::Repositories::Base
Instance Method Details
#fetch(node_name) ⇒ Models::HostsFile
Fetches the /etc/hosts contents for a node.
30 31 32 33 34 |
# File 'lib/pvectl/repositories/hosts.rb', line 30 def fetch(node_name) response = connection.client["nodes/#{node_name}/hosts"].get data = extract_data(response) || {} build_model(data.merge(node: node_name)) end |
#update(node_name, data, digest = nil) ⇒ void
This method returns an undefined value.
Updates the /etc/hosts contents for a node.
The Proxmox POST endpoint requires ‘data` and optionally accepts `digest` for optimistic locking. If the on-server digest no longer matches, Proxmox returns an error which is propagated verbatim.
46 47 48 49 50 |
# File 'lib/pvectl/repositories/hosts.rb', line 46 def update(node_name, data, digest = nil) params = { data: data } params[:digest] = digest if digest && !digest.empty? connection.client["nodes/#{node_name}/hosts"].post(params) end |