Support allow_start and allow_end parameters
The new nova version added this parameters that allow users to set a range of allowed ip's for instances. Change-Id: Ic0eae504f462d198e5f38d1d8ad596f49411506f
This commit is contained in:

committed by
Gael Chamoulaud

parent
895e057abb
commit
9eaf5d74a5
@@ -2,7 +2,7 @@ Puppet::Type.type(:nova_network).provide(:nova_manage) do
|
||||
|
||||
desc "Manage nova network"
|
||||
|
||||
optional_commands :nova_manage => 'nova-manage'
|
||||
optional_commands :nova_manage => 'nova-manage', :nova => 'nova'
|
||||
|
||||
# I need to setup caching and what-not to make this lookup performance not suck
|
||||
def self.instances
|
||||
@@ -30,18 +30,19 @@ Puppet::Type.type(:nova_network).provide(:nova_manage) do
|
||||
:dns2 => '--dns2',
|
||||
:gateway => '--gateway',
|
||||
:bridge => '--bridge',
|
||||
:vlan_start => '--vlan_start'
|
||||
:vlan_start => '--vlan-start',
|
||||
:allowed_start => '--allowed-start',
|
||||
:allowed_end => '--allowed-end',
|
||||
}.each do |param, opt|
|
||||
if resource[param]
|
||||
optional_opts.push(opt).push(resource[param])
|
||||
end
|
||||
end
|
||||
|
||||
nova_manage('network', 'create',
|
||||
nova('network-create',
|
||||
resource[:label],
|
||||
'--fixed-range-v4',
|
||||
resource[:name],
|
||||
resource[:num_networks],
|
||||
resource[:network_size],
|
||||
optional_opts
|
||||
)
|
||||
end
|
||||
|
@@ -37,6 +37,16 @@ Puppet::Type.newtype(:nova_network) do
|
||||
newparam(:dns2) do
|
||||
end
|
||||
|
||||
newparam(:allowed_start) do
|
||||
desc 'Start of allowed addresses for instances'
|
||||
newvalues(/^(([0-9]|[1-9][0-9]|1[0-9]{2}|2[0-4][0-9]|25[0-5])\.){3}([0-9]|[1-9][0-9]|1[0-9]{2}|2[0-4][0-9]|25[0-5])$/)
|
||||
end
|
||||
|
||||
newparam(:allowed_end) do
|
||||
desc 'End of allowed addresses for instances'
|
||||
newvalues(/^(([0-9]|[1-9][0-9]|1[0-9]{2}|2[0-4][0-9]|25[0-5])\.){3}([0-9]|[1-9][0-9]|1[0-9]{2}|2[0-4][0-9]|25[0-5])$/)
|
||||
end
|
||||
|
||||
newparam(:vlan_start) do
|
||||
end
|
||||
|
||||
|
@@ -19,30 +19,42 @@
|
||||
# (optional) The vlan number to use if in vlan mode
|
||||
# Defaults to undef
|
||||
#
|
||||
# [*allowed_start*]
|
||||
# (optional) Start of allowed addresses for instances
|
||||
# Defaults to undef
|
||||
#
|
||||
# [*allowed_end*]
|
||||
# (optional) End of allowed addresses for instances
|
||||
# Defaults to undef
|
||||
#
|
||||
# [*project*]
|
||||
# (optional) Project that network should be associated with
|
||||
# Defaults to undef
|
||||
#
|
||||
define nova::manage::network (
|
||||
$network,
|
||||
$label = 'novanetwork',
|
||||
$num_networks = 1,
|
||||
$network_size = 255,
|
||||
$vlan_start = undef,
|
||||
$project = undef
|
||||
$label = 'novanetwork',
|
||||
$num_networks = 1,
|
||||
$network_size = 255,
|
||||
$vlan_start = undef,
|
||||
$project = undef,
|
||||
$allowed_start = undef,
|
||||
$allowed_end = undef,
|
||||
) {
|
||||
|
||||
File['/etc/nova/nova.conf'] -> Nova_network[$name]
|
||||
Exec<| title == 'nova-db-sync' |> -> Nova_network[$name]
|
||||
|
||||
nova_network { $name:
|
||||
ensure => present,
|
||||
network => $network,
|
||||
label => $label,
|
||||
num_networks => $num_networks,
|
||||
network_size => $network_size,
|
||||
project => $project,
|
||||
vlan_start => $vlan_start,
|
||||
ensure => present,
|
||||
network => $network,
|
||||
label => $label,
|
||||
num_networks => $num_networks,
|
||||
network_size => $network_size,
|
||||
project => $project,
|
||||
vlan_start => $vlan_start,
|
||||
allowed_start => $allowed_start,
|
||||
allowed_end => $allowed_end,
|
||||
}
|
||||
|
||||
}
|
||||
|
@@ -59,6 +59,15 @@
|
||||
# (optional) Whether to install and enable the service
|
||||
# Defaults to true
|
||||
#
|
||||
# [*allowed_start*]
|
||||
# (optional) Start of allowed addresses for instances
|
||||
# Defaults to undef
|
||||
#
|
||||
# [*allowed_end*]
|
||||
# (optional) End of allowed addresses for instances
|
||||
# Defaults to undef
|
||||
#
|
||||
|
||||
class nova::network(
|
||||
$private_interface = undef,
|
||||
$fixed_range = '10.0.0.0/8',
|
||||
@@ -71,7 +80,9 @@ class nova::network(
|
||||
$config_overrides = {},
|
||||
$create_networks = true,
|
||||
$ensure_package = 'present',
|
||||
$install_service = true
|
||||
$install_service = true,
|
||||
$allowed_start = undef,
|
||||
$allowed_end = undef,
|
||||
) {
|
||||
|
||||
include ::nova::params
|
||||
@@ -107,10 +118,12 @@ class nova::network(
|
||||
|
||||
if $create_networks {
|
||||
nova::manage::network { 'nova-vm-net':
|
||||
network => $fixed_range,
|
||||
num_networks => $num_networks,
|
||||
network_size => $network_size,
|
||||
vlan_start => $vlan_start,
|
||||
network => $fixed_range,
|
||||
num_networks => $num_networks,
|
||||
network_size => $network_size,
|
||||
vlan_start => $vlan_start,
|
||||
allowed_start => $allowed_start,
|
||||
allowed_end => $allowed_end,
|
||||
}
|
||||
if $floating_range {
|
||||
nova::manage::floating { 'nova-vm-floating':
|
||||
|
@@ -21,11 +21,13 @@ describe 'nova::manage::network' do
|
||||
}
|
||||
end
|
||||
it { is_expected.to contain_nova_network('foo').with(
|
||||
:ensure => 'present',
|
||||
:network => '10.0.0.0/24',
|
||||
:label => 'novanetwork',
|
||||
:num_networks => 1,
|
||||
:project => nil
|
||||
:ensure => 'present',
|
||||
:network => '10.0.0.0/24',
|
||||
:label => 'novanetwork',
|
||||
:num_networks => 1,
|
||||
:project => nil,
|
||||
:allowed_start => nil,
|
||||
:allowed_end => nil,
|
||||
) }
|
||||
end
|
||||
describe 'when overriding num networks' do
|
||||
@@ -53,4 +55,20 @@ describe 'nova::manage::network' do
|
||||
:project => 'foo'
|
||||
) }
|
||||
end
|
||||
|
||||
describe 'when overriding allowed range' do
|
||||
let :params do
|
||||
{
|
||||
:network => '10.0.0.0/20',
|
||||
:allowed_start => '10.0.0.1',
|
||||
:allowed_end => '10.0.0.5'
|
||||
}
|
||||
end
|
||||
it { is_expected.to contain_nova_network('foo').with(
|
||||
:network => '10.0.0.0/20',
|
||||
:allowed_start => '10.0.0.1',
|
||||
:allowed_end => '10.0.0.5'
|
||||
) }
|
||||
end
|
||||
|
||||
end
|
||||
|
Reference in New Issue
Block a user