]> git.donarmstrong.com Git - dsa-puppet.git/blobdiff - 3rdparty/modules/neutron/manifests/plugins/midonet.pp
try again, with puppetforge modules, correctly included now
[dsa-puppet.git] / 3rdparty / modules / neutron / manifests / plugins / midonet.pp
diff --git a/3rdparty/modules/neutron/manifests/plugins/midonet.pp b/3rdparty/modules/neutron/manifests/plugins/midonet.pp
new file mode 100644 (file)
index 0000000..54b7c8f
--- /dev/null
@@ -0,0 +1,144 @@
+# == Class: midonet::neutron_plugin
+#
+# Install and configure Midonet Neutron Plugin. Please note that this manifest
+# does not install the 'python-neutron-midonet-plugin' package, it only
+# configures Neutron to do so needed for this deployment.  Check out the
+# MidoNet module to do so.
+#
+# === Parameters
+#
+# [*midonet_api_ip*]
+#   IP address of the MidoNet api service
+# [*midonet_api_port*]
+#   IP address of the MidoNet port service. MidoNet runs in a Tomcat, so 8080
+#   is used by default.
+# [*keystone_username*]
+#   Username from which midonet api will authenticate against Keystone (neutron
+#   service is desirable and defaulted)
+# [*keystone_password*]
+#   Password from which midonet api will authenticate against Keystone
+# [*keystone_tenant*]
+#   Tenant from which midonet api will authenticate against Keystone (services
+#   tenant is desirable and defaulted)
+# [*sync_db*]
+#   Whether 'midonet-db-manage' should run to create and/or syncrhonize the database
+#   with MidoNet specific tables. Defaults to false
+#
+# === Examples
+#
+# An example call would be:
+#
+#     class {'neutron:plugins::midonet':
+#         midonet_api_ip    => '23.123.5.32',
+#         midonet_api_port  => '8080',
+#         keystone_username => 'neutron',
+#         keystone_password => '32kjaxT0k3na',
+#         keystone_tenant   => 'services',
+#         sync_db           => true
+#     }
+#
+# You can alternatively use the Hiera's yaml style:
+#     neutron::plugin::midonet::midonet_api_ip: '23.213.5.32'
+#     neutron::plugin::midonet::port: '8080'
+#     neutron::plugin::midonet::keystone_username: 'neutron'
+#     neutron::plugin::midonet::keystone_password: '32.kjaxT0k3na'
+#     neutron::plugin::midonet::keystone_tenant: 'services'
+#     neutron::plugin::midonet::sync_db: true
+#
+# === Authors
+#
+# Midonet (http://MidoNet.org)
+#
+# === Copyright
+#
+# Copyright (c) 2015 Midokura SARL, All Rights Reserved.
+#
+# Licensed under the Apache License, Version 2.0 (the "License");
+# you may not use this file except in compliance with the License.
+# You may obtain a copy of the License at
+#
+#    http://www.apache.org/licenses/LICENSE-2.0
+#
+# Unless required by applicable law or agreed to in writing, software
+# distributed under the License is distributed on an "AS IS" BASIS,
+# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+# See the License for the specific language governing permissions and
+# limitations under the License.
+#
+class neutron::plugins::midonet (
+  $midonet_api_ip    = '127.0.0.1',
+  $midonet_api_port  = '8080',
+  $keystone_username = 'neutron',
+  $keystone_password = undef,
+  $keystone_tenant   = 'services',
+  $sync_db           = false
+) {
+
+  include ::neutron::params
+
+  Neutron_plugin_midonet<||> ~> Service['neutron-server']
+
+  ensure_resource('file', '/etc/neutron/plugins/midonet', {
+    ensure => directory,
+    owner  => 'root',
+    group  => 'neutron',
+    mode   => '0640'}
+  )
+
+  # Ensure the neutron package is installed before config is set
+  # under both RHEL and Ubuntu
+  if ($::neutron::params::server_package) {
+    Package['neutron-server'] -> Neutron_plugin_midonet<||>
+  } else {
+    Package['neutron'] -> Neutron_plugin_midonet<||>
+  }
+
+  # Although this manifest does not install midonet plugin package because it
+  # is not available in common distro repos, this statement forces you to
+  # have an orchestrator/wrapper manifest that does that job.
+  Package[$::neutron::params::midonet_server_package] -> Neutron_plugin_midonet<||>
+
+  neutron_plugin_midonet {
+    'MIDONET/midonet_uri':  value => "http://${midonet_api_ip}:${midonet_api_port}/midonet-api";
+    'MIDONET/username':     value => $keystone_username;
+    'MIDONET/password':     value => $keystone_password, secret =>true;
+    'MIDONET/project_id':   value => $keystone_tenant;
+  }
+
+  if $::osfamily == 'Debian' {
+    file_line { '/etc/default/neutron-server:NEUTRON_PLUGIN_CONFIG':
+      path    => '/etc/default/neutron-server',
+      match   => '^NEUTRON_PLUGIN_CONFIG=(.*)$',
+      line    => "NEUTRON_PLUGIN_CONFIG=${::neutron::params::midonet_config_file}",
+      require => [ Package['neutron-server'], Package[$::neutron::params::midonet_server_package] ],
+      notify  => Service['neutron-server'],
+    }
+  }
+
+  # In RH, this link is used to start Neutron process but in Debian, it's used only
+  # to manage database synchronization.
+  if defined(File['/etc/neutron/plugin.ini']) {
+    File <| path == '/etc/neutron/plugin.ini' |> { target => $::neutron::params::midonet_config_file }
+  }
+  else {
+    file {'/etc/neutron/plugin.ini':
+      ensure  => link,
+      target  => $::neutron::params::midonet_config_file,
+      require => Package[$::neutron::params::midonet_server_package]
+    }
+  }
+
+  if $sync_db {
+
+    Package<| title == $::neutron::params::midonet_server_package |> ~> Exec['midonet-db-sync']
+
+    exec { 'midonet-db-sync':
+      command     => 'midonet-db-manage --config-file /etc/neutron/neutron.conf --config-file /etc/neutron/plugin.ini upgrade head',
+      path        => '/usr/bin',
+      before      => Service['neutron-server'],
+      subscribe   => Neutron_config['database/connection'],
+      refreshonly => true
+    }
+  }
+}
+