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