Files
puppet-neutron/manifests/plugins/ml2/cisco/nexus.pp
root 6dc74ac0e6 Remove use of template based config from cisco ml2 nexus plugin.
Change to modify the cisco ml2 nexus section to remove the use
of the erb template for configuring the per-nexus switch ML2
config sections.  The change adds 2 new defined types which
wrap neutron_plugin_ml2 resource usage.

Change-Id: I401371c9e5176de7ce19d4d4e878e9f2e69aab80
Closes-bug: #1495537
2015-09-15 12:00:18 -04:00

132 lines
5.5 KiB
Puppet

# == Class: neutron::plugins::ml2::cisco::nexus
#
# Configure the Mech Driver for cisco neutron plugin
# More info available here:
# https://wiki.openstack.org/wiki/Neutron/ML2/MechCiscoNexus
#
# === Parameters:
#
# [*nexus_config*]
# (required) Nexus switch configuration for ml2_cisco_conf.ini
# Example nexus config format:
# { 'switch_hostname' => {'username' => 'admin',
# 'ssh_port' => 22,
# 'password' => "password",
# 'ip_address' => "172.18.117.28",
# 'nve_src_intf' => 1,
# 'physnet' => "physnet1",
# 'servers' => {
# 'control01' => {"ports" => "portchannel:20"},
# 'control02' => {"ports" => "portchannel:10"}
# }}}
#
# [*managed_physical_network*]
# (required) The name of the physical_network managed via the Cisco
# Nexus Switch. This string value must be present in the ml2_conf.ini
# network_vlan_ranges variable.
#
# [*vlan_name_prefix*]
# (optional) A short prefix to prepend to the VLAN number when creating a
# VLAN interface. For example, if an interface is being created for
# VLAN 2001 it will be named 'q-2001' using the default prefix.
# The total length allowed for the prefix name and VLAN is 32 characters,
# the prefix will be truncated if the total length is greater than 32.
# Defaults to 'q-'
#
# [*svi_round_robin*]
# (optional) A flag to enable round robin scheduling of routers for SVI.
# Defaults to false
#
# [*provider_vlan_name_prefix*]
# (optional) A short prefix to prepend to the VLAN number when creating a
# provider VLAN interface. For example, if an interface is being created
# for provider VLAN 3003 it will be named 'p-3003' using the default prefix.
# The total length allowed for the prefix name and VLAN is 32 characters,
# the prefix will be truncated if the total length is greater than 32.
# Defaults to 'p-'
#
# [*persistent_switch_config*]
# (optional) To make Nexus device persistent by running the Nexus
# CLI 'copy run start' after applying successful configurations.
# (default) This flag defaults to False keep consistent with
# existing functionality.
# Defaults to false
#
# [*switch_heartbeat_time*]
# (optional) Time interval to check the state of the Nexus device.
# (default) This value defaults to 0 seconds which disables this
# functionality. When enabled, 30 seconds is suggested.
# Defaults to 0
#
# [*switch_replay_count*]
# (optional) Number of times to attempt config replay with switch.
# This variable depends on switch_heartbeat_time being enabled.
# Defaults to 3
#
# [*provider_vlan_auto_create*]
# (optional) A flag indicating whether OpenStack networking should manage the
# creation and removal of VLANs for provider networks on the Nexus
# switches. If the flag is set to False then OpenStack will not create or
# remove VLANs for provider networks, and the administrator needs to
# manage these interfaces manually or by external orchestration.
# Defaults to true
#
# [*provider_vlan_auto_trunk*]
# (optional) A flag indicating whether OpenStack networking should manage
# the adding and removing of provider VLANs from trunk ports on the Nexus
# switches. If the flag is set to False then OpenStack will not add or
# remove provider VLANs from trunk ports, and the administrator needs to
# manage these operations manually or by external orchestration.
# Defaults to true
#
# [*vxlan_global_config*]
# (optional) A flag indicating whether OpenStack networking should manage the
# creating and removing of the Nexus switch VXLAN global settings of 'feature
# nv overlay', 'feature vn-segment-vlan-based', 'interface nve 1' and the NVE
# subcommand 'source-interface loopback #'. If the flag is set to False
# (default) then OpenStack will not add or remove these VXLAN settings, and
# the administrator needs to manage these operations manually or by external
# orchestration.
# Defaults to true
#
# [*host_key_checks*]
# (optional) A flag indicating whether or not to enable strict host key checks
# when connecting to Nexus switches.
# Defaults to false
#
class neutron::plugins::ml2::cisco::nexus (
$nexus_config,
$managed_physical_network,
$vlan_name_prefix = 'q-',
$svi_round_robin = false,
$provider_vlan_name_prefix = 'p-',
$persistent_switch_config = false,
$switch_heartbeat_time = 0,
$switch_replay_count = 3,
$provider_vlan_auto_create = true,
$provider_vlan_auto_trunk = true,
$vxlan_global_config = true,
$host_key_checks = false
) {
include ::neutron::plugins::ml2::cisco
neutron_plugin_ml2 {
'ml2_cisco/managed_physical_network' : value => $managed_physical_network;
'ml2_cisco/vlan_name_prefix' : value => $vlan_name_prefix;
'ml2_cisco/svi_round_robin' : value => $svi_round_robin;
'ml2_cisco/provider_vlan_name_prefix' : value => $provider_vlan_name_prefix;
'ml2_cisco/persistent_switch_config' : value => $persistent_switch_config;
'ml2_cisco/switch_heartbeat_time' : value => $switch_heartbeat_time;
'ml2_cisco/switch_replay_count' : value => $switch_replay_count;
'ml2_cisco/provider_vlan_auto_create' : value => $provider_vlan_auto_create;
'ml2_cisco/provider_vlan_auto_trunk' : value => $provider_vlan_auto_trunk;
'ml2_cisco/vxlan_global_config' : value => $vxlan_global_config;
'ml2_cisco/host_key_checks' : value => $host_key_checks;
}
create_resources(neutron::plugins::ml2::cisco::nexus_switch, $nexus_config)
create_resources(neutron::plugins::ml2::cisco::nexus_creds, $nexus_config)
}