Add Support for Quantum OVS VLAN Networking

Previously, only the OVS GRE networking model was supported.
This patch exposes the necessary parameters to allow users
to configure OVS VLAN networking.

The module continues to use GRE networking as the default
OVS networking mode for backwards compatibility.

Change-Id: Ib57dfe122b179e586a486e5607f0e0cb6af1324d
This commit is contained in:
danehans
2013-07-12 22:16:48 +00:00
parent ccf17d41dd
commit 02e1f4f784
4 changed files with 49 additions and 4 deletions

View File

@@ -51,10 +51,31 @@
# The next is an array of arrays, that can be used to add call-out links to the dashboard for other apps. # The next is an array of arrays, that can be used to add call-out links to the dashboard for other apps.
# There is no specific requirement for these apps to be for monitoring, that's just the defacto purpose. # There is no specific requirement for these apps to be for monitoring, that's just the defacto purpose.
# Each app is defined in two parts, the display name, and the URI # Each app is defined in two parts, the display name, and the URI
#
# [ovs_enable_tunneling]
# Enable/disable the Quantum OVS GRE tunneling networking mode.
# Optional. Defaults to true.
#
# [metadata_shared_secret] # [metadata_shared_secret]
# Shared secret used by nova and quantum to authenticate metadata. # Shared secret used by nova and quantum to authenticate metadata.
# (optional) Defaults to false. # (optional) Defaults to false.
# #
# [physical_network]
# Unique name of the physical network used by the Quantum OVS Agent.
# All physical networks listed are available for flat and VLAN
# provider network creation.
#
# [tenant_network_type]
# Type of network to allocate for tenant networks
# Optional. Defualts to 'gre'.
#
# [network_vlan_ranges]
# Comma-separated list of <physical_network>[:<vlan_min>:<vlan_max>]
# tuples enumerating ranges of VLAN IDs on named physical networks
# that are available for allocation. Only applicable when tenant_network_type
# parameter is set to 'vlan'.
# Optional. Defaults to 'physnet1:
#
# [firewall_driver] # [firewall_driver]
# Driver used to implement firewall rules. # Driver used to implement firewall rules.
# (optional) Defaults to 'quantum.agent.linux.iptables_firewall.OVSHybridIptablesFirewallDriver'. # (optional) Defaults to 'quantum.agent.linux.iptables_firewall.OVSHybridIptablesFirewallDriver'.
@@ -182,6 +203,11 @@ class openstack::controller (
$cinder_bind_address = '0.0.0.0', $cinder_bind_address = '0.0.0.0',
# Quantum # Quantum
$quantum = true, $quantum = true,
$physical_network = 'default',
$tenant_network_type = 'gre',
$ovs_enable_tunneling = true,
$ovs_local_ip = false,
$network_vlan_ranges = 'physnet1:1000:2000',
$bridge_interface = undef, $bridge_interface = undef,
$external_bridge_name = 'br-ex', $external_bridge_name = 'br-ex',
$enable_ovs_agent = true, $enable_ovs_agent = true,
@@ -194,7 +220,6 @@ class openstack::controller (
$quantum_db_name = 'quantum', $quantum_db_name = 'quantum',
$quantum_auth_url = 'http://127.0.0.1:35357/v2.0', $quantum_auth_url = 'http://127.0.0.1:35357/v2.0',
$enable_quantum_server = true, $enable_quantum_server = true,
$ovs_local_ip = false,
# swift # swift
$swift = false, $swift = false,
$swift_public_address = false, $swift_public_address = false,
@@ -393,9 +418,12 @@ class openstack::controller (
rabbit_password => $rabbit_password, rabbit_password => $rabbit_password,
rabbit_virtual_host => $rabbit_virtual_host, rabbit_virtual_host => $rabbit_virtual_host,
# Quantum OVS # Quantum OVS
tenant_network_type => $tenant_network_type,
network_vlan_ranges => $network_vlan_ranges,
ovs_enable_tunneling => $ovs_enable_tunneling,
ovs_local_ip => $ovs_local_ip_real, ovs_local_ip => $ovs_local_ip_real,
bridge_uplinks => ["${external_bridge_name}:${bridge_interface}"], bridge_uplinks => ["${external_bridge_name}:${bridge_interface}"],
bridge_mappings => ["default:${external_bridge_name}"], bridge_mappings => ["${physical_network}:${external_bridge_name}"],
enable_ovs_agent => $enable_ovs_agent, enable_ovs_agent => $enable_ovs_agent,
firewall_driver => $firewall_driver, firewall_driver => $firewall_driver,
# Database # Database

View File

@@ -74,6 +74,16 @@
# Whether ovs tunnels should be enabled. # Whether ovs tunnels should be enabled.
# (optional) Defaults to true. # (optional) Defaults to true.
# #
# [tenant_network_type]
# Type of network to allocate for tenant networks
# Optional. Defualts to 'gre'.
#
# [network_vlan_ranges]
# Comma-separated list of <physical_network>[:<vlan_min>:<vlan_max>]
# tuples enumerating ranges of VLAN IDs on named physical networks
# that are available for allocation.
# Optional. Defaults to 'physnet1:1000:2000'.
#
# [firewall_driver] # [firewall_driver]
# Firewall driver to use. # Firewall driver to use.
# (optional) Defaults to undef. # (optional) Defaults to undef.
@@ -153,6 +163,8 @@ class openstack::quantum (
$enable_metadata_agent = false, $enable_metadata_agent = false,
$enable_ovs_agent = false, $enable_ovs_agent = false,
# OVS settings # OVS settings
$tenant_network_type = 'gre',
$network_vlan_ranges = 'physnet1:1000:2000',
$ovs_local_ip = false, $ovs_local_ip = false,
$ovs_enable_tunneling = true, $ovs_enable_tunneling = true,
$bridge_uplinks = [], $bridge_uplinks = [],
@@ -212,7 +224,8 @@ class openstack::quantum (
class { 'quantum::plugins::ovs': class { 'quantum::plugins::ovs':
sql_connection => $sql_connection, sql_connection => $sql_connection,
sql_idle_timeout => $sql_idle_timeout, sql_idle_timeout => $sql_idle_timeout,
tenant_network_type => 'gre', tenant_network_type => $tenant_network_type,
network_vlan_ranges => $network_vlan_ranges,
} }
} }

View File

@@ -551,6 +551,9 @@ describe 'openstack::controller' do
:rabbit_user => 'openstack', :rabbit_user => 'openstack',
:rabbit_password => 'rabbit_pw', :rabbit_password => 'rabbit_pw',
:rabbit_virtual_host => '/', :rabbit_virtual_host => '/',
:tenant_network_type => 'gre',
:network_vlan_ranges => 'physnet1:1000:2000',
:ovs_enable_tunneling => true,
:ovs_local_ip => '10.0.0.3', :ovs_local_ip => '10.0.0.3',
:bridge_uplinks => ["br-ex:eth_27"], :bridge_uplinks => ["br-ex:eth_27"],
:bridge_mappings => ["default:br-ex"], :bridge_mappings => ["default:br-ex"],

View File

@@ -44,7 +44,8 @@ describe 'openstack::quantum' do
) )
should contain_class('quantum::plugins::ovs').with( should contain_class('quantum::plugins::ovs').with(
:sql_connection => "mysql://quantum:bar@127.0.0.1/quantum?charset=utf8", :sql_connection => "mysql://quantum:bar@127.0.0.1/quantum?charset=utf8",
:tenant_network_type => 'gre' :tenant_network_type => 'gre',
:network_vlan_ranges => 'physnet1:1000:2000'
) )
end end
end end