puppet-neutron/manifests/agents/ml2/sriov.pp

89 lines
2.8 KiB
Puppet

#
# Copyright (C) 2014 eNovance SAS <licensing@enovance.com>
#
# Author: Emilien Macchi <emilien.macchi@enovance.com>
#
# 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::agents::ml2::sriov
#
# Setups SR-IOV neutron agent when using ML2 plugin
#
# === Parameters
#
# [*package_ensure*]
# (optional) The state of the package
# Defaults to 'present'
#
# [*enabled*]
# (required) Whether or not to enable the OVS Agent
# Defaults to true
#
# [*physical_device_mappings*]
# (optional) List of <physical_network>:<physical device>
# All physical networks listed in network_vlan_ranges
# on the server should have mappings to appropriate
# interfaces on each agent.
# Defaults to empty list
#
# [*polling_interval*]
# (optional) The number of seconds the agent will wait between
# polling for local device changes.
# Defaults to '2"
#
# [*exclude_devices*]
# (optional) List of <network_device>:<excluded_devices> mapping
# network_device to the agent's node-specific list of virtual functions
# that should not be used for virtual networking. excluded_devices is a
# semicolon separated list of virtual functions to exclude from network_device.
# The network_device in the mapping should appear in the physical_device_mappings list.
class neutron::agents::ml2::sriov (
$package_ensure = 'present',
$enabled = true,
$physical_device_mappings = [],
$polling_interval = 2,
$exclude_devices = [],
) {
include ::neutron::params
Neutron_plugin_ml2<||> ~> Service['neutron-sriov-nic-agent-service']
neutron_plugin_ml2 {
'sriov_nic/polling_interval': value => $polling_interval;
'sriov_nic/exclude_devices': value => join($exclude_devices, ',');
'sriov_nic/physical_device_mappings': value => join($physical_device_mappings, ',');
}
Package['neutron-sriov-nic-agent'] -> Neutron_plugin_ml2<||>
package { 'neutron-sriov-nic-agent':
ensure => $package_ensure,
name => $::neutron::params::sriov_nic_agent_package,
}
if $enabled {
$service_ensure = 'running'
} else {
$service_ensure = 'stopped'
}
service { 'neutron-sriov-nic-agent-service':
ensure => $service_ensure,
name => $::neutron::params::sriov_nic_agent_service,
enable => $enabled,
require => Class['neutron'],
}
}