21b2805ce9
Change-Id: Idcc0edc2287f0c54bb14671255c053e3448f0dd1
104 lines
3.2 KiB
Puppet
104 lines
3.2 KiB
Puppet
# == Class: nova::compute::provider
|
|
#
|
|
# Managing Resource Providers Using Config File
|
|
#
|
|
# === Parameters
|
|
#
|
|
# [*schema_version*]
|
|
# (optional) Version ($Major, $minor) of the schema must successfully
|
|
# parse documents conforming to ($Major, *)
|
|
# Default to '1.0'
|
|
#
|
|
# [*custom_inventories*]
|
|
# Array of hashes describing the custom provider inventory added via
|
|
# the $config_file config file.
|
|
# Format:
|
|
# name/uuid - Resource providers to target can be identified by either
|
|
# UUID or name. In addition, the value $COMPUTE_NODE can be used in
|
|
# the UUID field to identify all nodes managed by the service.
|
|
# Exactly one of uuid or name is mandatory. If neither uuid or name
|
|
# is provided, the special uuid $COMPUTE_NODE gets set in the template
|
|
#
|
|
# inventories - (Optional) Hash of custom provider inventories. 'total' is
|
|
# a mandatory property. Any other optional properties not populated will
|
|
# be given a default value by placement. If overriding a pre-existing
|
|
# provider values will not be preserved from the existing inventory.
|
|
#
|
|
# traits - (Optional) Array of additional traits.
|
|
#
|
|
# Example :
|
|
# [
|
|
# {
|
|
# uuid => '$COMPUTE_NODE',
|
|
# inventories => {
|
|
# 'CUSTOM_EXAMPLE_RESOURCE_CLASS' => {
|
|
# total => '100',
|
|
# reserved => '0',
|
|
# min_unit => '1',
|
|
# max_unit => '10',
|
|
# step_size => '1',
|
|
# allocation_ratio => '1.0'
|
|
# },
|
|
# 'CUSTOM_ANOTHER_EXAMPLE_RESOURCE_CLASS' => {
|
|
# total => '100',
|
|
# },
|
|
# },
|
|
# traits => ['CUSTOM_P_STATE_ENABLED','CUSTOM_C_STATE_ENABLED'],
|
|
# },
|
|
# {
|
|
# name => 'EXAMPLE_RESOURCE_PROVIDER',
|
|
# inventories => {
|
|
# 'CUSTOM_EXAMPLE_RESOURCE_CLASS' => {
|
|
# total => '10000',
|
|
# reserved => '100',
|
|
# },
|
|
# },
|
|
# },
|
|
# ]
|
|
# Defaults to [].
|
|
#
|
|
# [*config_location*]
|
|
# (Optional) Location of YAML files containing resource provider
|
|
# configuration data.
|
|
# Defaults to /etc/nova/provider_config
|
|
#
|
|
# [*config_file*]
|
|
# (Optional) File name of the provider YAML file.
|
|
# Defaults to 'provider.yaml'
|
|
#
|
|
class nova::compute::provider (
|
|
$schema_version = '1.0',
|
|
Array[Hash[String[1], Any]] $custom_inventories = [],
|
|
Stdlib::Absolutepath $config_location = '/etc/nova/provider_config',
|
|
String[1] $config_file = 'provider.yaml',
|
|
) {
|
|
|
|
include nova::deps
|
|
include nova::params
|
|
|
|
nova_config {
|
|
'compute/provider_config_location': value => $config_location;
|
|
}
|
|
|
|
file { "${config_location}":
|
|
ensure => directory,
|
|
mode => '0750',
|
|
owner => $::nova::params::user,
|
|
group => $::nova::params::group,
|
|
require => Anchor['nova::config::begin'],
|
|
before => Anchor['nova::config::end'],
|
|
}
|
|
|
|
if !empty($custom_inventories) {
|
|
file { "${config_location}/${config_file}":
|
|
ensure => file,
|
|
mode => '0640',
|
|
owner => $::nova::params::user,
|
|
group => $::nova::params::group,
|
|
content => template('nova/provider.yaml.erb'),
|
|
require => Anchor['nova::config::begin'],
|
|
notify => Anchor['nova::config::end'],
|
|
}
|
|
}
|
|
}
|