Class: Puppet::Provider::NetworkVlan::CiscoNexus

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

Overview

Implementation for the network_vlan type using the Resource API.

Instance Method Summary collapse

Instance Method Details

#canonicalize(_context, resources) ⇒ Object



18
19
20
# File 'lib/puppet/provider/network_vlan/cisco_nexus.rb', line 18

def canonicalize(_context, resources)
  resources
end

#create(context, name, should) ⇒ Object



59
60
61
62
# File 'lib/puppet/provider/network_vlan/cisco_nexus.rb', line 59

def create(context, name, should)
  context.notice("Creating '#{name}' with #{should.inspect}")
  create_update(name, should, true)
end

#create_update(name, should, create_bool) ⇒ Object

Raises:

  • (Puppet::ResourceError)


49
50
51
52
53
54
55
56
57
# File 'lib/puppet/provider/network_vlan/cisco_nexus.rb', line 49

def create_update(name, should, create_bool)
  raise Puppet::ResourceError,
        'Invalid value(non-numeric Vlan id)' unless name[/^\d+$/]
  @vlan = Cisco::Vlan.new(name, create_bool)
  # Send shutdown= should[shutdown] if shutdown (get) is not already set
  # to should[shutdown]
  @vlan.shutdown = should[:shutdown] if @vlan.shutdown != should[:shutdown]
  @vlan.vlan_name = should[:vlan_name] if should[:vlan_name] && @vlan.vlan_name != should[:vlan_name]
end

#delete(context, name) ⇒ Object



69
70
71
72
73
74
# File 'lib/puppet/provider/network_vlan/cisco_nexus.rb', line 69

def delete(context, name)
  context.notice("Deleting '#{name}'")
  @vlan = Cisco::Vlan.new(name, false)
  @vlan.destroy
  @vlan = nil
end

#get(_context, vlans = nil) ⇒ Object



22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
# File 'lib/puppet/provider/network_vlan/cisco_nexus.rb', line 22

def get(_context, vlans=nil)
  require 'cisco_node_utils'
  vlan_instances = []
  @vlans = Cisco::Vlan.vlans
  if vlans.nil? || vlans.empty?
    @vlans.each do |vlan_id, v|
      vlan_instances << get_current_state(vlan_id, v)
    end
  else
    vlans.each do |vlan|
      individual_vlan = @vlans[vlan]
      next if individual_vlan.nil?
      vlan_instances << get_current_state(vlan, individual_vlan)
    end
  end
  vlan_instances
end

#get_current_state(name, instance) ⇒ Object



40
41
42
43
44
45
46
47
# File 'lib/puppet/provider/network_vlan/cisco_nexus.rb', line 40

def get_current_state(name, instance)
  {
    ensure:    'present',
    id:        name,
    vlan_name: instance.send(:vlan_name),
    shutdown:  instance.shutdown,
  }
end

#update(context, name, should) ⇒ Object



64
65
66
67
# File 'lib/puppet/provider/network_vlan/cisco_nexus.rb', line 64

def update(context, name, should)
  context.notice("Updating '#{name}' with #{should.inspect}")
  create_update(name, should, false)
end