Class: Pvectl::Repositories::Dns

Inherits:
Base
  • Object
show all
Defined in:
lib/pvectl/repositories/dns.rb

Overview

Repository for per-node DNS resolver settings.

Uses the ‘/nodes/node/dns` endpoint to fetch and update the DNS configuration of a single node.

Examples:

Fetching DNS config

repo = Dns.new(connection)
dns = repo.fetch("pve1")
dns.servers #=> ["8.8.8.8"]

Updating DNS config

repo.update("pve1", search: "example.com", dns1: "8.8.8.8")

See Also:

Instance Method Summary collapse

Methods inherited from Base

#get, #initialize, #list

Constructor Details

This class inherits a constructor from Pvectl::Repositories::Base

Instance Method Details

#fetch(node_name) ⇒ Models::DnsConfig

Fetches the DNS configuration for a node.

Parameters:

  • node_name (String)

    node name

Returns:



25
26
27
28
29
# File 'lib/pvectl/repositories/dns.rb', line 25

def fetch(node_name)
  response = connection.client["nodes/#{node_name}/dns"].get
  data = extract_data(response) || {}
  build_model(data.merge(node: node_name))
end

#update(node_name, params = {}) ⇒ void

This method returns an undefined value.

Updates the DNS configuration for a node.

The Proxmox PUT endpoint requires ‘search` and accepts optional `dns1`, `dns2`, `dns3`. Only provided keys are sent.

Parameters:

  • node_name (String)

    node name

  • params (Hash) (defaults to: {})

    update parameters (:search, :dns1, :dns2, :dns3)



39
40
41
# File 'lib/pvectl/repositories/dns.rb', line 39

def update(node_name, params = {})
  connection.client["nodes/#{node_name}/dns"].put(params)
end