--- /dev/null
+# == Class: neutron::agents::linuxbridge
+#
+# Setups linuxbridge neutron agent.
+#
+# === Parameters
+#
+# [*physical_interface_mappings*]
+# (required) Comma-separated list of <physical_network>:<physical_interface>
+# tuples mapping physical network names to agent's node-specific physical
+# network interfaces.
+#
+# [*firewall_driver*]
+# (optional) Firewall driver for realizing neutron security group function.
+# Defaults to 'neutron.agent.linux.iptables_firewall.IptablesFirewallDriver'.
+#
+# [*package_ensure*]
+# (optional) Ensure state for package. Defaults to 'present'.
+#
+# [*enable*]
+# (optional) Enable state for service. Defaults to 'true'.
+#
+# [*manage_service*]
+# (optional) Whether to start/stop the service
+# Defaults to true
+#
+class neutron::agents::linuxbridge (
+ $physical_interface_mappings,
+ $firewall_driver = 'neutron.agent.linux.iptables_firewall.IptablesFirewallDriver',
+ $package_ensure = 'present',
+ $enable = true,
+ $manage_service = true
+) {
+
+ include neutron::params
+
+ Neutron_config<||> ~> Service['neutron-plugin-linuxbridge-service']
+ Neutron_plugin_linuxbridge<||> ~> Service<| title == 'neutron-plugin-linuxbridge-service' |>
+
+ if $::neutron::params::linuxbridge_agent_package {
+ Package['neutron'] -> Package['neutron-plugin-linuxbridge-agent']
+ Package['neutron-plugin-linuxbridge-agent'] -> Neutron_plugin_linuxbridge<||>
+ Package['neutron-plugin-linuxbridge-agent'] -> Service['neutron-plugin-linuxbridge-service']
+ package { 'neutron-plugin-linuxbridge-agent':
+ ensure => $package_ensure,
+ name => $::neutron::params::linuxbridge_agent_package,
+ }
+ } else {
+ # Some platforms (RedHat) do not provide a separate neutron plugin
+ # linuxbridge agent package. The configuration file for the linuxbridge
+ # agent is provided by the neutron linuxbridge plugin package.
+ Package['neutron-plugin-linuxbridge'] -> Neutron_plugin_linuxbridge<||>
+
+ if ! defined(Package['neutron-plugin-linuxbridge']) {
+ package { 'neutron-plugin-linuxbridge':
+ ensure => $package_ensure,
+ name => $::neutron::params::linuxbridge_server_package,
+ }
+ }
+ }
+
+ neutron_plugin_linuxbridge {
+ 'LINUX_BRIDGE/physical_interface_mappings': value => $physical_interface_mappings;
+ 'SECURITYGROUP/firewall_driver': value => $firewall_driver;
+ }
+
+ if $manage_service {
+ if $enable {
+ $service_ensure = 'running'
+ } else {
+ $service_ensure = 'stopped'
+ }
+ }
+
+ service { 'neutron-plugin-linuxbridge-service':
+ ensure => $service_ensure,
+ name => $::neutron::params::linuxbridge_agent_service,
+ enable => $enable,
+ }
+}