From 02e1f4f784d3ba72e97ae47be52cb60405efa347 Mon Sep 17 00:00:00 2001 From: danehans Date: Fri, 12 Jul 2013 22:16:48 +0000 Subject: [PATCH] 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 --- manifests/controller.pp | 32 +++++++++++++++++++++-- manifests/quantum.pp | 15 ++++++++++- spec/classes/openstack_controller_spec.rb | 3 +++ spec/classes/openstack_quantum_spec.rb | 3 ++- 4 files changed, 49 insertions(+), 4 deletions(-) diff --git a/manifests/controller.pp b/manifests/controller.pp index ff5c1bd..0dd37fd 100644 --- a/manifests/controller.pp +++ b/manifests/controller.pp @@ -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. # 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 +# +# [ovs_enable_tunneling] +# Enable/disable the Quantum OVS GRE tunneling networking mode. +# Optional. Defaults to true. +# # [metadata_shared_secret] # Shared secret used by nova and quantum to authenticate metadata. # (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 [::] +# 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] # Driver used to implement firewall rules. # (optional) Defaults to 'quantum.agent.linux.iptables_firewall.OVSHybridIptablesFirewallDriver'. @@ -182,6 +203,11 @@ class openstack::controller ( $cinder_bind_address = '0.0.0.0', # Quantum $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, $external_bridge_name = 'br-ex', $enable_ovs_agent = true, @@ -194,7 +220,6 @@ class openstack::controller ( $quantum_db_name = 'quantum', $quantum_auth_url = 'http://127.0.0.1:35357/v2.0', $enable_quantum_server = true, - $ovs_local_ip = false, # swift $swift = false, $swift_public_address = false, @@ -393,9 +418,12 @@ class openstack::controller ( rabbit_password => $rabbit_password, rabbit_virtual_host => $rabbit_virtual_host, # 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, 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, firewall_driver => $firewall_driver, # Database diff --git a/manifests/quantum.pp b/manifests/quantum.pp index 6079a05..b0ef5fe 100644 --- a/manifests/quantum.pp +++ b/manifests/quantum.pp @@ -74,6 +74,16 @@ # Whether ovs tunnels should be enabled. # (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 [::] +# 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 to use. # (optional) Defaults to undef. @@ -153,6 +163,8 @@ class openstack::quantum ( $enable_metadata_agent = false, $enable_ovs_agent = false, # OVS settings + $tenant_network_type = 'gre', + $network_vlan_ranges = 'physnet1:1000:2000', $ovs_local_ip = false, $ovs_enable_tunneling = true, $bridge_uplinks = [], @@ -212,7 +224,8 @@ class openstack::quantum ( class { 'quantum::plugins::ovs': sql_connection => $sql_connection, sql_idle_timeout => $sql_idle_timeout, - tenant_network_type => 'gre', + tenant_network_type => $tenant_network_type, + network_vlan_ranges => $network_vlan_ranges, } } diff --git a/spec/classes/openstack_controller_spec.rb b/spec/classes/openstack_controller_spec.rb index 6939623..fbb499d 100644 --- a/spec/classes/openstack_controller_spec.rb +++ b/spec/classes/openstack_controller_spec.rb @@ -551,6 +551,9 @@ describe 'openstack::controller' do :rabbit_user => 'openstack', :rabbit_password => 'rabbit_pw', :rabbit_virtual_host => '/', + :tenant_network_type => 'gre', + :network_vlan_ranges => 'physnet1:1000:2000', + :ovs_enable_tunneling => true, :ovs_local_ip => '10.0.0.3', :bridge_uplinks => ["br-ex:eth_27"], :bridge_mappings => ["default:br-ex"], diff --git a/spec/classes/openstack_quantum_spec.rb b/spec/classes/openstack_quantum_spec.rb index 5feb982..8a92cbe 100644 --- a/spec/classes/openstack_quantum_spec.rb +++ b/spec/classes/openstack_quantum_spec.rb @@ -44,7 +44,8 @@ describe 'openstack::quantum' do ) should contain_class('quantum::plugins::ovs').with( :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