aboutsummaryrefslogtreecommitdiffstats
path: root/lib/puppet/type/vpp_service.rb
blob: c1c818feac95a6d0ce4186391805fe417c08fd7a (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
35
36
37
38
39
40
41
42
43
44
45
46
Puppet::Type.newtype(:vpp_service) do

  ensurable

  newparam(:name) do
  end

  newparam(:pci_devs, :array_matching => :all) do
    desc "PCI dev addresses to be bound to VPP"
    def insync?(is)
      is.sort == should.sort
    end

    validate do |values|
      values = [values] unless values.is_a?(Array)
      values.map! do |value|
        if value =~ /\p{XDigit}+:(\p{XDigit}+):(\p{XDigit}+)\.(\p{XDigit}+)/
          value
        else
          raise(Puppet::Error, "Incorrect PCI dev address #{value}")
        end
      end
    end

    munge do |values|
      if values.is_a?(Array)
        values
      else
        [values]
      end
    end
  end

  newproperty(:state) do
    desc "VPP interface state"
    defaultto :up
    newvalues(:up, :down)
  end

  newparam(:copy_kernel_nic_ip) do
    desc "Whether to configure VPP interface with kernel NIC's IP settings"
    defaultto :true
    newvalues(:true, :false)
  end

end