Revision 7d315254
Added by Ewoud Kohl van Wijngaarden over 6 years ago
manifests/pool.pp | ||
---|---|---|
String $mask,
|
||
Optional[String] $gateway = undef,
|
||
Variant[Array[String], Optional[String]] $pool_parameters = undef,
|
||
Variant[Array[String], Optional[String], Boolean] $range = undef,
|
||
Variant[Array[Dhcp::Range], Optional[Dhcp::Range], Enum[''], Boolean] $range = undef,
|
||
Optional[String] $failover = undef,
|
||
Variant[Array[String], Optional[String]] $options = undef,
|
||
Variant[Array[String], Optional[String]] $parameters = undef,
|
spec/aliases/range_spec.rb | ||
---|---|---|
require 'spec_helper'
|
||
|
||
describe 'test_module::range', type: :class do
|
||
describe 'valid handling' do
|
||
[
|
||
'192.0.2.100',
|
||
'192.0.2.100 192.0.2.200',
|
||
'1.1.1.1 255.255.255.255',
|
||
'dynamic-bootp 192.0.2.100 192.0.2.200',
|
||
].each do |value|
|
||
describe value.inspect do
|
||
let(:params) {{ value: value }}
|
||
it { is_expected.to compile }
|
||
end
|
||
end
|
||
end
|
||
|
||
describe 'invalid value handling' do
|
||
context 'garbage inputs' do
|
||
[
|
||
nil,
|
||
"all",
|
||
"all all",
|
||
"1 192.0.2.183",
|
||
"192.0.2.100 1",
|
||
].each do |value|
|
||
describe value.inspect do
|
||
let(:params) {{ value: value }}
|
||
it { is_expected.to compile.and_raise_error(/parameter 'value' expects a match for Dhcp::Range/) }
|
||
end
|
||
end
|
||
end
|
||
|
||
end
|
||
end
|
spec/defines/pool_spec.rb | ||
---|---|---|
let :params do {
|
||
:network => '10.0.0.0',
|
||
:mask => '255.255.255.0',
|
||
:range => '10.0.0.10 - 10.0.0.50',
|
||
:range => '10.0.0.10 10.0.0.50',
|
||
:failover => '10.1.1.20',
|
||
} end
|
||
|
||
... | ... | |
' pool',
|
||
' {',
|
||
' failover peer "10.1.1.20";',
|
||
' range 10.0.0.10 - 10.0.0.50;',
|
||
' range 10.0.0.10 10.0.0.50;',
|
||
' }',
|
||
' option subnet-mask 255.255.255.0;',
|
||
'}',
|
||
... | ... | |
let :params do {
|
||
:network => '10.0.0.0',
|
||
:mask => '255.255.255.0',
|
||
:range => ['10.0.0.10 - 10.0.0.50','10.0.0.100 - 10.0.0.150'],
|
||
:range => ['10.0.0.10 10.0.0.50','10.0.0.100 10.0.0.150'],
|
||
} end
|
||
|
||
it {
|
||
... | ... | |
'subnet 10.0.0.0 netmask 255.255.255.0 {',
|
||
' pool',
|
||
' {',
|
||
' range 10.0.0.10 - 10.0.0.50;',
|
||
' range 10.0.0.100 - 10.0.0.150;',
|
||
' range 10.0.0.10 10.0.0.50;',
|
||
' range 10.0.0.100 10.0.0.150;',
|
||
' }',
|
||
' option subnet-mask 255.255.255.0;',
|
||
'}',
|
||
... | ... | |
:network => '10.0.0.0',
|
||
:mask => '255.255.255.0',
|
||
:pool_parameters => 'allow members of "some-class"',
|
||
:range => '10.0.0.10 - 10.0.0.50',
|
||
:range => '10.0.0.10 10.0.0.50',
|
||
:gateway => '10.0.0.1',
|
||
:options => 'ntp-servers 10.0.0.2',
|
||
:parameters => 'max-lease-time 300',
|
||
... | ... | |
" pool",
|
||
" {",
|
||
" allow members of \"some-class\";",
|
||
" range 10.0.0.10 - 10.0.0.50;",
|
||
" range 10.0.0.10 10.0.0.50;",
|
||
" }",
|
||
" option domain-name \"example.org\";",
|
||
" option subnet-mask 255.255.255.0;",
|
spec/static_fixtures/test_module/manifests/range.pp | ||
---|---|---|
# Class to test the dhcp::Range type
|
||
class test_module::range(
|
||
Dhcp::Range $value,
|
||
) {
|
||
notice('Success')
|
||
}
|
types/range.pp | ||
---|---|---|
type Dhcp::Range= Pattern[/^(dynamic-bootp )?((([0-9](?!\d)|[1-9][0-9](?!\d)|1[0-9]{2}(?!\d)|2[0-4][0-9](?!\d)|25[0-5](?!\d))[.]){3}([0-9](?!\d)|[1-9][0-9](?!\d)|1[0-9]{2}(?!\d)|2[0-4][0-9](?!\d)|25[0-5](?!\d)))(\/((([0-9](?!\d)|[1-9][0-9](?!\d)|1[0-9]{2}(?!\d)|2[0-4][0-9](?!\d)|25[0-5](?!\d))[.]){3}([0-9](?!\d)|[1-9][0-9](?!\d)|1[0-9]{2}(?!\d)|2[0-4][0-9](?!\d)|25[0-5](?!\d))|[0-9]+))?( ((([0-9](?!\d)|[1-9][0-9](?!\d)|1[0-9]{2}(?!\d)|2[0-4][0-9](?!\d)|25[0-5](?!\d))[.]){3}([0-9](?!\d)|[1-9][0-9](?!\d)|1[0-9]{2}(?!\d)|2[0-4][0-9](?!\d)|25[0-5](?!\d)))(\/((([0-9](?!\d)|[1-9][0-9](?!\d)|1[0-9]{2}(?!\d)|2[0-4][0-9](?!\d)|25[0-5](?!\d))[.]){3}([0-9](?!\d)|[1-9][0-9](?!\d)|1[0-9]{2}(?!\d)|2[0-4][0-9](?!\d)|25[0-5](?!\d))|[0-9]+))?)?$/]
|
Also available in: Unified diff
Fixes #16913 - Add validation for the dhcp range