summaryrefslogtreecommitdiffstats
path: root/lib/puppet/provider/vlan/cisco.rb
blob: 46e172c73892db05ed46bdb4fa591e9f5005ed68 (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
require 'puppet/util/network_device/cisco/device'
require 'puppet/provider/network_device'

Puppet::Type.type(:vlan).provide :cisco, :parent => Puppet::Provider::NetworkDevice do

  desc "Cisco switch/router provider for vlans."

  mk_resource_methods

  def self.lookup(url, id)
    vlans = {}
    device = Puppet::Util::NetworkDevice::Cisco::Device.new(url)
    device.command do |d|
      vlans = d.parse_vlans || {}
    end
    vlans[id]
  end

  def initialize(*args)
    super
  end

  # Clear out the cached values.
  def flush
    device.command do |device|
      device.update_vlan(resource[:name], former_properties, properties)
    end
    super
  end

  def device
    @device ||= Puppet::Util::NetworkDevice::Cisco::Device.new(resource[:device_url])
  end
end