Class: Pvectl::Repositories::Dns

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

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 Attribute Summary

Attributes inherited from Base

#connection

Instance Method Summary collapse

Methods inherited from Base

#extract_data, #get, #initialize, #list, #models_from, #unwrap

Constructor Details

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

Instance Method Details

#build_model(data) ⇒ Models::DnsConfig

Builds DnsConfig model from API data.

Parameters:

  • API response hash (must include :node key for context)

Returns:

  • DNS configuration model



49
50
51
# File 'lib/pvectl/repositories/dns.rb', line 49

def build_model(data)
  Models::DnsConfig.new(data)
end

#fetch(node_name) ⇒ Models::DnsConfig

Fetches the DNS configuration for a node.

Parameters:

  • node name

Returns:

  • DNS configuration model



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

  • (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