Improve various network modes

Add support for VlanManager
Add support for multi_host networking in nova::controller
Improve support for FlatDHCP and Flat network modes in nova::controller
This commit is contained in:
François Charlier 2012-04-11 19:49:02 +02:00
parent 2ea253f694
commit d8b53c5597
3 changed files with 73 additions and 17 deletions

View File

@ -19,7 +19,15 @@ class nova::controller(
$flat_network_bridge_ip = '11.0.0.1',
$flat_network_bridge_netmask = '255.255.255.0',
$flat_interface = undef,
$flat_dhcp_start = undef,
$flat_injected = undef,
$vlan_interface = 'eth1',
$vlan_start = 1000,
$network_manager = undef,
$multi_host_networking = false,
$nova_network = '11.0.0.0/24',
$floating_network = '10.128.0.0/24',
$available_ips = '256',
@ -37,27 +45,56 @@ class nova::controller(
class { "nova":
verbose => $verbose,
sql_connection => "mysql://${db_user}:${db_password}@${db_host}/${db_name}",
image_service => $image_service,
glance_api_servers => $glance_api_servers,
rabbit_host => $rabbit_host,
rabbit_port => $rabbit_port,
rabbit_userid => $rabbit_userid,
rabbit_password => $rabbit_password,
rabbit_virtual_host => $rabbit_virtual_host,
lock_path => $lock_path,
network_manager => $network_manager,
verbose => $verbose,
sql_connection => "mysql://${db_user}:${db_password}@${db_host}/${db_name}",
image_service => $image_service,
glance_api_servers => $glance_api_servers,
rabbit_host => $rabbit_host,
rabbit_port => $rabbit_port,
rabbit_userid => $rabbit_userid,
rabbit_password => $rabbit_password,
rabbit_virtual_host => $rabbit_virtual_host,
lock_path => $lock_path,
network_manager => $network_manager,
multi_host_networking => $multi_host_networking,
flat_network_bridge => $flat_network_bridge,
vlan_interface => $vlan_interface,
vlan_start => $vlan_start,
}
class { "nova::api": enabled => true }
class { "nova::network::flat":
enabled => true,
flat_network_bridge => $flat_network_bridge,
flat_network_bridge_ip => $flat_network_bridge_ip,
flat_network_bridge_netmask => $flat_network_bridge_netmask,
configure_bridge => false,
# in multi_host networking mode nova-network does not run on the controller
if !$multi_host_networking {
case $network_manager {
'nova.network.manager.FlatManager': {
class { "nova::network::flat":
enabled => true,
flat_network_bridge => $flat_network_bridge,
flat_network_bridge_ip => $flat_network_bridge_ip,
flat_network_bridge_netmask => $flat_network_bridge_netmask,
configure_bridge => false,
}
}
'nova.network.manager.FlatDHCPManager': {
class { "nova::network::flatdhcp":
enabled => true,
flat_interface => $flat_interface,
flat_dhcp_start => $flat_dhcp_start,
flat_injected => $flat_injected,
flat_network_bridge_netmask => $flat_network_bridge_netmask,
configure_bridge => false,
}
}
'nova.network.manager.VlanManger': {
class { "nova::network::vlan":
enabled => true,
}
}
default: {
fail("Unsupported network manager: ${network_manager} The supported network managers are nova.network.manager.FlatManager, nova.network.FlatDHCPManager and nova.network.manager.VlanManager")
}
}
}
class { "nova::objectstore":

View File

@ -14,7 +14,10 @@ class nova(
$rabbit_userid='guest',
$rabbit_virtual_host='/',
$network_manager = 'nova.network.manager.FlatManager',
multi_host_networking = false,
$flat_network_bridge = 'br100',
$vlan_interface = 'eth1',
$vlan_start = 1000,
$service_down_time = 60,
$logdir = '/var/log/nova',
$state_path = '/var/lib/nova',
@ -139,6 +142,7 @@ class nova(
# config b/c they have to be set by both compute
# as well as controller.
'network_manager': value => $network_manager;
'multi_host': value => $multi_host_networking;
'root_helper': value => $root_helper;
'auth_strategy': value => $auth_strategy;
}
@ -167,6 +171,13 @@ class nova(
}
}
if $network_manager == 'nova.network.manager.VlanManager' {
nova_config {
'vlan_interface': value => $vlan_interface;
'vlan_start': value => $vlan_start;
}
}
if $image_service == 'nova.image.glance.GlanceImageService' {
nova_config {
'glance_api_servers': value => $glance_api_servers;

View File

@ -0,0 +1,8 @@
#vlan.pp
class nova::network::vlan (
$enabled = true
) {
class { 'nova::network':
enabled => $enabled,
}
}