Class: Puppet::Provider::NetworkDns::CiscoNexus

Inherits:
ResourceApi::SimpleProvider
  • Object
show all
Defined in:
lib/puppet/provider/network_dns/cisco_nexus.rb

Overview

Implementation for the network_dns type using the Resource API.

Instance Method Summary collapse

Instance Method Details

#canonicalize(_context, resources) ⇒ Object



18
19
20
21
22
23
24
25
# File 'lib/puppet/provider/network_dns/cisco_nexus.rb', line 18

def canonicalize(_context, resources)
  require 'cisco_node_utils'
  resources.each do |resource|
    resource[:search] = resource[:search].sort if resource[:search]
    resource[:servers] = resource[:servers].sort if resource[:servers]
  end
  resources
end

#delete(_context, _name) ⇒ Object

Raises:

  • (Puppet::ResourceError)


61
62
63
# File 'lib/puppet/provider/network_dns/cisco_nexus.rb', line 61

def delete(_context, _name)
  raise Puppet::ResourceError, 'This provider does not support ensure => absent'
end

#get(_context, vrf = nil) ⇒ Object



27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
# File 'lib/puppet/provider/network_dns/cisco_nexus.rb', line 27

def get(_context, vrf=nil)
  require 'cisco_node_utils'
  @domain = Cisco::DomainName.domainnames
  @searches = Cisco::DnsDomain.dnsdomains || {}
  @servers = Cisco::NameServer.nameservers || {}
  @hostname = Cisco::HostName.hostname || {}

  current_state = {
    name:     (vrf.nil? || vrf.empty?) ? 'settings' : vrf.first,
    ensure:   'present',
    domain:   @domain.keys.first,
    hostname: @hostname.keys.first,
    search:   @searches.keys.sort,
    servers:  @servers.keys.sort,
  }

  [current_state]
end

#handle_domain(value) ⇒ Object

handle the domain, i.e. if ” then destroy all domains and do not create one



103
104
105
106
107
108
109
110
111
# File 'lib/puppet/provider/network_dns/cisco_nexus.rb', line 103

def handle_domain(value)
  @domain = Cisco::DomainName.domainnames
  if value == ''
    @domain[@domain.keys.first].destroy if @domain[@domain.keys.first]
  else
    @domain[value].destroy if @domain[value]
    Cisco::DomainName.new(value)
  end
end

#handle_hostname(value) ⇒ Object

handle the hostname, i.e. if ” then destroy all hostnames and do not create one



91
92
93
94
95
96
97
98
99
# File 'lib/puppet/provider/network_dns/cisco_nexus.rb', line 91

def handle_hostname(value)
  @hostname = Cisco::HostName.hostname || {}
  if value == ''
    @hostname[@hostname.keys.first].destroy if @hostname[@hostname.keys.first]
  else
    @hostname[value].destroy if @hostname[value]
    Cisco::HostName.new(value)
  end
end

#handle_searches(values) ⇒ Object



77
78
79
80
81
82
83
84
85
86
87
# File 'lib/puppet/provider/network_dns/cisco_nexus.rb', line 77

def handle_searches(values)
  @searches = Cisco::DnsDomain.dnsdomains || {}
  to_remove = @searches.keys - values
  to_create = values - @searches.keys
  to_remove.each do |search|
    @searches[search].destroy
  end
  to_create.each do |search|
    Cisco::DnsDomain.new(search)
  end
end

#handle_servers(values) ⇒ Object



65
66
67
68
69
70
71
72
73
74
75
# File 'lib/puppet/provider/network_dns/cisco_nexus.rb', line 65

def handle_servers(values)
  @servers = Cisco::NameServer.nameservers || {}
  to_remove = @servers.keys - values
  to_create = values - @servers.keys
  to_remove.each do |server|
    @servers[server].destroy
  end
  to_create.each do |server|
    Cisco::NameServer.new(server)
  end
end

#update(context, name, should) ⇒ Object



46
47
48
49
50
51
52
53
54
55
56
57
58
59
# File 'lib/puppet/provider/network_dns/cisco_nexus.rb', line 46

def update(context, name, should)
  validate_name(name)

  context.notice("Updating '#{name}' with #{should.inspect}")
  @domain = Cisco::DomainName.domainnames
  @searches = Cisco::DnsDomain.dnsdomains || {}
  @servers = Cisco::NameServer.nameservers || {}
  @hostname = Cisco::HostName.hostname || {}

  handle_hostname(should[:hostname]) if should[:hostname]
  handle_domain(should[:domain]) if should[:domain]
  handle_servers(should[:servers]) if should[:servers]
  handle_searches(should[:search]) if should[:search]
end

#validate_name(name) ⇒ Object

Raises:

  • (Puppet::ResourceError)


113
114
115
# File 'lib/puppet/provider/network_dns/cisco_nexus.rb', line 113

def validate_name(name)
  raise Puppet::ResourceError, '`name` must be `settings`' if name != 'settings'
end