aboutsummaryrefslogtreecommitdiffstats
path: root/lib/puppet/type/vpp_service.rb
diff options
context:
space:
mode:
Diffstat (limited to 'lib/puppet/type/vpp_service.rb')
-rw-r--r--lib/puppet/type/vpp_service.rb46
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