diff options
Diffstat (limited to 'lib/puppet/type/vpp_service.rb')
-rw-r--r-- | lib/puppet/type/vpp_service.rb | 46 |
1 files changed, 46 insertions, 0 deletions
diff --git a/lib/puppet/type/vpp_service.rb b/lib/puppet/type/vpp_service.rb new file mode 100644 index 0000000..c1c818f --- /dev/null +++ b/lib/puppet/type/vpp_service.rb @@ -0,0 +1,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 |