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:
Ivan Chavero
2014-11-17 16:39:54 -07:00
committed by Gael Chamoulaud
parent 895e057abb
commit 9eaf5d74a5
5 changed files with 81 additions and 27 deletions

View File

@@ -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

View File

@@ -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

View File

@@ -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,
}
}

View File

@@ -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':

View File

@@ -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