Enable Cisco Nexus and UCSM plugins

This enables support for the Cisco UCS Manager and Cisco
Nexus plugins

Change-Id: I1bc28a4768d5d6857a0504ca1f77dd71259570b8
This commit is contained in:
Robert Pothier 2015-09-09 11:08:37 -04:00 committed by Rob Pothier
parent 55d7c4ff33
commit 773324a6d0
5 changed files with 184 additions and 0 deletions

View File

@ -0,0 +1,26 @@
# A Heat environment file which can be used to enable a
# a Cisco Neutron plugin.
resource_registry:
OS::TripleO::ControllerExtraConfigPre: ../puppet/extraconfig/pre_deploy/controller/network-cisco.yaml
parameter_defaults:
NetworkUCSMIp: '127.0.0.1'
NetworkUCSMUsername: 'admin'
NetworkUCSMPassword: 'password'
NetworkUCSMHostList: 'host1:profile1, host2:profile2'
NetworkUCSMSupportedPciDevs: ''
NetworkNexusConfig: {}
NetworkNexusManagedPhysicalNetwork: ''
NetworkNexusVlanNamePrefix: 'q-'
NetworkNexusSviRoundRobin: 'false'
NetworkNexusProviderVlanNamePrefix: 'p-'
NetworkNexusPersistentSwitchConfig: 'false'
NetworkNexusSwitchHeartbeatTime: 0
NetworkNexusSwitchReplayCount: 3
NetworkNexusProviderVlanAutoCreate: 'true'
NetworkNexusProviderVlanAutoTrunk: 'true'
NetworkNexusVxlanGlobalConfig: 'true'
NetworkNexusHostKeyChecks: 'false'
NetworkNexusVxlanVniRanges: '0:0'
NetworkNexusVxlanMcastRanges: '0.0.0.0:0.0.0.0'

View File

@ -876,6 +876,7 @@ resources:
- '"%{::osfamily}"'
- common
- cinder_netapp_data # Optionally provided by ControllerExtraConfigPre
- neutron_cisco_data # Optionally provided by ControllerExtraConfigPre
datafiles:
controller_extraconfig:
mapped_data: {get_param: ControllerExtraConfig}

View File

@ -0,0 +1,141 @@
heat_template_version: 2015-04-30
description: Configure hieradata for Network Cisco configuration
parameters:
server:
description: ID of the controller node to apply this config to
type: string
NetworkUCSMIp:
type: string
description: Cisco UCSM IP
default: 127.0.0.1
NetworkUCSMUsername:
type: string
description: Cisco UCSM username
default: admin
NetworkUCSMPassword:
type: string
description: Cisco UCSM password
default: password
NetworkUCSMHostList:
type: string
description: Cisco UCSM hostname
default: 127.0.0.1
NetworkUCSMSupportedPciDevs:
type: string
description: Cisco UCSM SR-IOV and VM-FEX vendors supported
default: ''
NetworkNexusConfig:
type: json
description: Nexus switch configuration
default: {}
NetworkNexusManagedPhysicalNetwork:
type: string
description: The name of the physical_network
default: ''
NetworkNexusVlanNamePrefix:
type: string
description: A short prefix to prepend to the VLAN name
default: 'q-'
NetworkNexusSviRoundRobin:
type: boolean
description: A flag to enable round robin scheduling
default: false
NetworkNexusProviderVlanNamePrefix:
type: string
description: A short prefix to prepend to the VLAN name
default: 'p-'
NetworkNexusPersistentSwitchConfig:
type: string
description: To make Nexus device persistent
default: false
NetworkNexusSwitchHeartbeatTime:
type: number
description: Time interval to check the state of the Nexus device
default: 0
NetworkNexusSwitchReplayCount:
type: number
description: Number of times to attempt config replay
default: 3
NetworkNexusProviderVlanAutoCreate:
type: boolean
description: A flag whether to manage the creation and removal of VLANs
default: true
NetworkNexusProviderVlanAutoTrunk:
type: boolean
description: A flag whether to manage the trunk ports on the Nexus
default: true
NetworkNexusVxlanGlobalConfig:
type: boolean
description: A flag whether to manage the VXLAN global settings
default: true
NetworkNexusHostKeyChecks:
type: boolean
description: enable strict host key checks when connecting to Nexus switches
default: false
NetworkNexusVxlanVniRanges:
type: string
description: VXLAN Network IDs that are available for tenant network
default: ''
NetworkNexusVxlanMcastRanges:
type: string
description: Multicast groups for the VXLAN interface.
default: ''
resources:
NetworkCiscoConfig:
type: OS::Heat::StructuredConfig
properties:
group: os-apply-config
config:
hiera:
datafiles:
neutron_cisco_data:
mapped_data:
neutron::plugins::ml2::cisco::ucsm::ucsm_ip: {get_input: UCSM_ip}
neutron::plugins::ml2::cisco::ucsm::ucsm_username: {get_input: UCSM_username}
neutron::plugins::ml2::cisco::ucsm::ucsm_password: {get_input: UCSM_password}
neutron::plugins::ml2::cisco::ucsm::ucsm_host_list: {get_input: UCSM_host_list}
neutron::plugins::ml2::cisco::ucsm::supported_pci_devs: {get_input: UCSMSupportedPciDevs}
neutron::plugins::ml2::cisco::nexus::nexus_config: {get_input: NexusConfig}
neutron::plugins::ml2::cisco::nexus::managed_physical_network: {get_input: NexusManagedPhysicalNetwork}
neutron::plugins::ml2::cisco::nexus::vlan_name_prefix: {get_input: NexusVlanNamePrefix}
neutron::plugins::ml2::cisco::nexus::svi_round_robin: {get_input: NexusSviRoundRobin}
neutron::plugins::ml2::cisco::nexus::provider_vlan_name_prefix: {get_input: NexusProviderVlanNamePrefix}
neutron::plugins::ml2::cisco::nexus::persistent_switch_config: {get_input: NexusPersistentSwitchConfig}
neutron::plugins::ml2::cisco::nexus::switch_heartbeat_time: {get_input: NexusSwitchHeartbeatTime}
neutron::plugins::ml2::cisco::nexus::switch_replay_count: {get_input: NexusSwitchReplayCount}
neutron::plugins::ml2::cisco::nexus::provider_vlan_auto_create: {get_input: NexusProviderVlanAutoCreate}
neutron::plugins::ml2::cisco::nexus::provider_vlan_auto_trunk: {get_input: NexusProviderVlanAutoTrunk}
neutron::plugins::ml2::cisco::nexus::vxlan_global_config: {get_input: NexusVxlanGlobalConfig}
neutron::plugins::ml2::cisco::nexus::host_key_checks: {get_input: NexusHostKeyChecks}
neutron::plugins::ml2::cisco::type_nexus_vxlan::vni_ranges: {get_input: NexusVxlanVniRanges}
neutron::plugins::ml2::cisco::type_nexus_vxlan::mcast_ranges: {get_input: NexusVxlanMcastRanges}
NetworkCiscoDeployment:
type: OS::Heat::StructuredDeployment
properties:
config: {get_resource: NetworkCiscoConfig}
server: {get_param: server}
input_values:
UCSM_ip: {get_param: NetworkUCSMIp}
UCSM_username: {get_param: NetworkUCSMUsername}
UCSM_password: {get_param: NetworkUCSMPassword}
UCSM_host_list: {get_param: NetworkUCSMHostList}
UCSMSupportedPciDevs: {get_param: NetworkUCSMSupportedPciDevs}
NexusConfig: {get_param: NetworkNexusConfig}
NexusManagedPhysicalNetwork: {get_param: NetworkNexusManagedPhysicalNetwork}
NexusVlanNamePrefix: {get_param: NetworkNexusVlanNamePrefix}
NexusSviRoundRobin: {get_param: NetworkNexusSviRoundRobin}
NexusProviderVlanNamePrefix: {get_param: NetworkNexusProviderVlanNamePrefix}
NexusPersistentSwitchConfig: {get_param: NetworkNexusPersistentSwitchConfig}
NexusSwitchHeartbeatTime: {get_param: NetworkNexusSwitchHeartbeatTime}
NexusSwitchReplayCount: {get_param: NetworkNexusSwitchReplayCount}
NexusProviderVlanAutoCreate: {get_param: NetworkNexusProviderVlanAutoCreate}
NexusProviderVlanAutoTrunk: {get_param: NetworkNexusProviderVlanAutoTrunk}
NexusVxlanGlobalConfig: {get_param: NetworkNexusVxlanGlobalConfig}
NexusHostKeyChecks: {get_param: NetworkNexusHostKeyChecks}
NexusVxlanVniRanges: {get_param: NetworkNexusVxlanVniRanges}
NexusVxlanMcastRanges: {get_param: NetworkNexusVxlanMcastRanges}

View File

@ -243,6 +243,14 @@ if hiera('step') >= 3 {
tunnel_types => split(hiera('neutron_tunnel_types'), ','),
}
if 'cisco_ucsm' in hiera('neutron_mechanism_drivers') {
include ::neutron::plugins::ml2::cisco::ucsm
}
if 'cisco_nexus' in hiera('neutron_mechanism_drivers') {
include ::neutron::plugins::ml2::cisco::nexus
include ::neutron::plugins::ml2::cisco::type_nexus_vxlan
}
Service['neutron-server'] -> Service['neutron-dhcp-service']
Service['neutron-server'] -> Service['neutron-l3']
Service['neutron-server'] -> Service['neutron-ovs-agent-service']

View File

@ -605,6 +605,14 @@ if hiera('step') >= 3 {
tunnel_types => split(hiera('neutron_tunnel_types'), ','),
}
if 'cisco_ucsm' in hiera('neutron_mechanism_drivers') {
include ::neutron::plugins::ml2::cisco::ucsm
}
if 'cisco_nexus' in hiera('neutron_mechanism_drivers') {
include ::neutron::plugins::ml2::cisco::nexus
include ::neutron::plugins::ml2::cisco::type_nexus_vxlan
}
include ::cinder
class { '::cinder::api':
sync_db => $sync_db,