--- /dev/null
+#
+# Configure the Nicira NVP plugin for neutron.
+#
+# === Parameters
+#
+# [*nvp_controllers*]
+# The password for connection to VMware vCenter server.
+#
+# [*nvp_user*]
+# The user name for NVP controller.
+#
+# [*nvp_password*]
+# The password for NVP controller
+#
+# [*default_tz_uuid*]
+# UUID of the pre-existing default NVP Transport zone to be used for creating
+# tunneled isolated "Neutron" networks. This option MUST be specified.
+#
+# [*default_l3_gw_service_uuid*]
+# (Optional) UUID for the default l3 gateway service to use with this cluster.
+# To be specified if planning to use logical routers with external gateways.
+# Defaults to None.
+#
+class neutron::plugins::nvp (
+ $default_tz_uuid,
+ $nvp_controllers,
+ $nvp_user,
+ $nvp_password,
+ $default_l3_gw_service_uuid = undef,
+ $package_ensure = 'present'
+) {
+
+ include neutron::params
+
+ Package['neutron'] -> Package['neutron-plugin-nvp']
+ Package['neutron-plugin-nvp'] -> Neutron_plugin_nvp<||>
+ Neutron_plugin_nvp<||> ~> Service<| title == 'neutron-server' |>
+ Package['neutron-plugin-nvp'] -> Service<| title == 'neutron-server' |>
+
+ package { 'neutron-plugin-nvp':
+ ensure => $package_ensure,
+ name => $::neutron::params::nvp_server_package
+ }
+
+ validate_array($nvp_controllers)
+
+ neutron_plugin_nvp {
+ 'DEFAULT/default_tz_uuid': value => $default_tz_uuid;
+ 'DEFAULT/nvp_controllers': value => join($nvp_controllers, ',');
+ 'DEFAULT/nvp_user': value => $nvp_user;
+ 'DEFAULT/nvp_password': value => $nvp_password, secret => true;
+ 'nvp/metadata_mode': value => 'access_network';
+ }
+
+ if($default_l3_gw_service_uuid) {
+ neutron_plugin_nvp {
+ 'DEFAULT/default_l3_gw_service_uuid': value => $default_l3_gw_service_uuid;
+ }
+ }
+
+ if $::neutron::core_plugin != 'neutron.plugins.nicira.NeutronPlugin.NvpPluginV2' {
+ fail('nvp plugin should be the core_plugin in neutron.conf')
+ }
+
+ # In RH, this link is used to start Neutron process but in Debian, it's used only
+ # to manage database synchronization.
+ file {'/etc/neutron/plugin.ini':
+ ensure => link,
+ target => '/etc/neutron/plugins/nicira/nvp.ini',
+ require => Package['neutron-plugin-nvp']
+ }
+
+}