]> git.donarmstrong.com Git - dsa-puppet.git/blobdiff - 3rdparty/modules/neutron/manifests/plugins/cisco.pp
try again, with puppetforge modules, correctly included now
[dsa-puppet.git] / 3rdparty / modules / neutron / manifests / plugins / cisco.pp
diff --git a/3rdparty/modules/neutron/manifests/plugins/cisco.pp b/3rdparty/modules/neutron/manifests/plugins/cisco.pp
new file mode 100644 (file)
index 0000000..7ebea6b
--- /dev/null
@@ -0,0 +1,184 @@
+
+#
+# Configure the cisco neutron plugin
+# More info available here:
+# https://wiki.openstack.org/wiki/Cisco-neutron
+#
+# === Parameters
+#
+# [*database_pass*]
+# The password that will be used to connect to the db
+#
+# [*keystone_password*]
+# The password for the supplied username
+#
+# [*database_name*]
+# The name of the db table to use
+# Defaults to neutron
+#
+# [*database_user*]
+# The user that will be used to connect to the db
+# Defaults to neutron
+#
+# [*database_host*]
+# The address or hostname of the database
+# Defaults to 127.0.0.1
+#
+# [*keystone_username*]
+# The admin username for the plugin to use
+# Defaults to neutron
+#
+# [*keystone_auth_url*]
+# The url against which to authenticate
+# Defaults to http://127.0.0.1:35357/v2.0/
+#
+# [*keystone_tenant*]
+# The tenant the supplied user has admin privs in
+# Defaults to services
+#
+# [*vswitch_plugin*]
+# (optional) The openvswitch plugin to use
+# Defaults to ovs_neutron_plugin.OVSNeutronPluginV2
+#
+# [*nexus_plugin*]
+# (optional) The nexus plugin to use
+# Defaults to undef. This will not set a nexus plugin to use
+# Can be set to neutron.plugins.cisco.nexus.cisco_nexus_plugin_v2.NexusPlugin
+#
+# Other parameters are currently not used by the plugin and
+# can be left unchanged, but in grizzly the plugin will fail
+# to launch if they are not there. The config for Havana will
+# move to a single config file and this will be simplified.
+
+class neutron::plugins::cisco(
+  $keystone_password,
+  $database_pass,
+
+  # Database connection
+  $database_name     = 'neutron',
+  $database_user     = 'neutron',
+  $database_host     = '127.0.0.1',
+
+  # Keystone connection
+  $keystone_username = 'neutron',
+  $keystone_tenant   = 'services',
+  $keystone_auth_url = 'http://127.0.0.1:35357/v2.0/',
+
+  $vswitch_plugin = 'neutron.plugins.openvswitch.ovs_neutron_plugin.OVSNeutronPluginV2',
+  $nexus_plugin   = undef,
+
+  # Plugin minimum configuration
+  $vlan_start        = '100',
+  $vlan_end          = '3000',
+  $vlan_name_prefix  = 'q-',
+  $model_class       = 'neutron.plugins.cisco.models.virt_phy_sw_v2.VirtualPhysicalSwitchModelV2',
+  $max_ports         = '100',
+  $max_port_profiles = '65568',
+  $manager_class     = 'neutron.plugins.cisco.segmentation.l2network_vlan_mgr_v2.L2NetworkVLANMgr',
+  $max_networks      = '65568',
+  $package_ensure    = 'present'
+)
+{
+  Neutron_plugin_cisco<||> ~> Service['neutron-server']
+  Neutron_plugin_cisco_db_conn<||> ~> Service['neutron-server']
+  Neutron_plugin_cisco_l2network<||> ~> Service['neutron-server']
+
+  ensure_resource('file', '/etc/neutron/plugins', {
+    ensure => directory,
+    owner  => 'root',
+    group  => 'neutron',
+    mode   => '0640'}
+  )
+
+  ensure_resource('file', '/etc/neutron/plugins/cisco', {
+    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_cisco<||>
+    Package['neutron-server'] -> Neutron_plugin_cisco_db_conn<||>
+    Package['neutron-server'] -> Neutron_plugin_cisco_l2network<||>
+  } else {
+    Package['neutron'] -> Neutron_plugin_cisco<||>
+    Package['neutron'] -> Neutron_plugin_cisco_db_conn<||>
+    Package['neutron'] -> Neutron_plugin_cisco_l2network<||>
+  }
+
+  if $::operatingsystem == 'Ubuntu' {
+    file_line { '/etc/default/neutron-server:NEUTRON_PLUGIN_CONFIG':
+      path    => '/etc/default/neutron-server',
+      match   => '^NEUTRON_PLUGIN_CONFIG=(.*)$',
+      line    => "NEUTRON_PLUGIN_CONFIG=${::neutron::params::cisco_config_file}",
+      require => [ Package['neutron-server'], Package['neutron-plugin-cisco'] ],
+      notify  => Service['neutron-server'],
+    }
+  }
+
+  package { 'neutron-plugin-cisco':
+    ensure => $package_ensure,
+    name   => $::neutron::params::cisco_server_package,
+  }
+
+
+  if $nexus_plugin {
+    neutron_plugin_cisco {
+      'PLUGINS/nexus_plugin' : value => $nexus_plugin;
+    }
+  }
+
+  if $vswitch_plugin {
+    neutron_plugin_cisco {
+      'PLUGINS/vswitch_plugin' : value => $vswitch_plugin;
+    }
+  }
+
+  # neutron-server will crash if the inventory section is empty.
+  # this is usually used for specifying which physical nexus
+  # devices are to be used.
+  neutron_plugin_cisco {
+    'INVENTORY/dummy' : value => 'dummy';
+  }
+
+  neutron_plugin_cisco_db_conn {
+    'DATABASE/name': value => $database_name;
+    'DATABASE/user': value => $database_user;
+    'DATABASE/pass': value => $database_pass;
+    'DATABASE/host': value => $database_host;
+  }
+
+  neutron_plugin_cisco_l2network {
+    'VLANS/vlan_start':               value => $vlan_start;
+    'VLANS/vlan_end':                 value => $vlan_end;
+    'VLANS/vlan_name_prefix':         value => $vlan_name_prefix;
+    'MODEL/model_class':              value => $model_class;
+    'PORTS/max_ports':                value => $max_ports;
+    'PORTPROFILES/max_port_profiles': value => $max_port_profiles;
+    'NETWORKS/max_networks':          value => $max_networks;
+    'SEGMENTATION/manager_class':     value => $manager_class;
+  }
+
+  neutron_plugin_cisco_credentials {
+    'keystone/username': value => $keystone_username;
+    'keystone/password': value => $keystone_password, secret => true;
+    'keystone/auth_url': value => $keystone_auth_url;
+    'keystone/tenant'  : value => $keystone_tenant;
+  }
+
+  # 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 => '/etc/neutron/plugins/cisco/cisco_plugins.ini' }
+  }
+  else {
+    file {'/etc/neutron/plugin.ini':
+      ensure  => link,
+      target  => '/etc/neutron/plugins/cisco/cisco_plugins.ini',
+      require => Package['neutron-plugin-cisco'],
+    }
+  }
+}