nova::quota fix correct conf group and rename params

The following commit [1] moved all the config options
regarding quota from the DEFAULT section to its own
[quota] section.

This patch corrects the nova::quota class so it sets
the config options in the correct group and also
deprecates the old naming of the parameters.

[1] de0eff47f2

Depends-On: https://review.openstack.org/#/c/614577/
Change-Id: I2f9d7c25fb8d77000d4e56fdef8646a2ef43981b
This commit is contained in:
Tobias Urdin 2018-10-30 11:53:03 +01:00
parent f2ab2d4783
commit 9197f461d5
3 changed files with 262 additions and 112 deletions

View File

@ -4,60 +4,59 @@
#
# === Parameters:
#
# [*quota_instances*]
# [*instances*]
# (optional) Number of instances
# Defaults to 10
#
# [*quota_cores*]
# [*cores*]
# (optional) Number of cores
# Defaults to 20
#
# [*quota_ram*]
# [*ram*]
# (optional) Ram in MB
# Defaults to 51200
#
# [*quota_floating_ips*]
# [*floating_ips*]
# (optional) Number of floating IPs
# Defaults to 10
#
# [*quota_fixed_ips*]
# [*fixed_ips*]
# (optional) Number of fixed IPs (this should be at least the number of instances allowed)
# Defaults to -1
#
# [*quota_metadata_items*]
# [*metadata_items*]
# (optional) Number of metadata items per instance
# Defaults to 128
#
# [*quota_injected_files*]
# [*injected_files*]
# (optional) Number of files that can be injected per instance
# Defaults to 5
#
# [*quota_injected_file_content_bytes*]
# [*injected_file_content_bytes*]
# (optional) Maximum size in bytes of injected files
# Defaults to 10240
#
#
# [*quota_injected_file_path_length*]
# [*injected_file_path_length*]
# (optional) Maximum size in bytes of injected file path
# Defaults to 255
#
# [*quota_security_groups*]
# [*security_groups*]
# (optional) Number of security groups
# Defaults to 10
#
# [*quota_security_group_rules*]
# [*security_group_rules*]
# (optional) Number of security group rules
# Defaults to 20
#
# [*quota_key_pairs*]
# [*key_pairs*]
# (optional) Number of key pairs
# Defaults to 100
#
# [*quota_server_groups*]
# [*server_groups*]
# (optional) Number of server groups per project
# Defaults to 10
#
# [*quota_server_group_members*]
# [*server_group_members*]
# (optional) Number of servers per server group
# Defaults to 10
#
@ -73,47 +72,134 @@
# (optional) Number of seconds between subsequent usage refreshes
# Defaults to 0
#
#### DEPRECATED PARAMS
#
# [*quota_instances*]
# (optional) Number of instances
# Defaults to undef
#
# [*quota_cores*]
# (optional) Number of cores
# Defaults to undef
#
# [*quota_ram*]
# (optional) Ram in MB
# Defaults to undef
#
# [*quota_floating_ips*]
# (optional) Number of floating IPs
# Defaults to undef
#
# [*quota_fixed_ips*]
# (optional) Number of fixed IPs (this should be at least the number of instances allowed)
# Defaults to undef
#
# [*quota_metadata_items*]
# (optional) Number of metadata items per instance
# Defaults to undef
#
# [*quota_injected_files*]
# (optional) Number of files that can be injected per instance
# Defaults to undef
#
# [*quota_injected_file_content_bytes*]
# (optional) Maximum size in bytes of injected files
# Defaults to undef
#
# [*quota_injected_file_path_length*]
# (optional) Maximum size in bytes of injected file path
# Defaults to undef
#
# [*quota_security_groups*]
# (optional) Number of security groups
# Defaults to undef
#
# [*quota_security_group_rules*]
# (optional) Number of security group rules
# Defaults to undef
#
# [*quota_key_pairs*]
# (optional) Number of key pairs
# Defaults to undef
#
# [*quota_server_groups*]
# (optional) Number of server groups per project
# Defaults to undef
#
# [*quota_server_group_members*]
# (optional) Number of servers per server group
# Defaults to undef
#
class nova::quota(
$quota_instances = 10,
$quota_cores = 20,
$quota_ram = 51200,
$quota_floating_ips = 10,
$quota_fixed_ips = -1,
$quota_metadata_items = 128,
$quota_injected_files = 5,
$quota_injected_file_content_bytes = 10240,
$quota_injected_file_path_length = 255,
$quota_security_groups = 10,
$quota_security_group_rules = 20,
$quota_key_pairs = 100,
$quota_server_groups = 10,
$quota_server_group_members = 10,
$reservation_expire = 86400,
$until_refresh = 0,
$max_age = 0,
$instances = 10,
$cores = 20,
$ram = 51200,
$floating_ips = 10,
$fixed_ips = -1,
$metadata_items = 128,
$injected_files = 5,
$injected_file_content_bytes = 10240,
$injected_file_path_length = 255,
$security_groups = 10,
$security_group_rules = 20,
$key_pairs = 100,
$server_groups = 10,
$server_group_members = 10,
$reservation_expire = 86400,
$until_refresh = 0,
$max_age = 0,
# DEPRECATED PARAMS
$quota_instances = undef,
$quota_cores = undef,
$quota_ram = undef,
$quota_floating_ips = undef,
$quota_fixed_ips = undef,
$quota_metadata_items = undef,
$quota_injected_files = undef,
$quota_injected_file_content_bytes = undef,
$quota_injected_file_path_length = undef,
$quota_security_groups = undef,
$quota_security_group_rules = undef,
$quota_key_pairs = undef,
$quota_server_groups = undef,
$quota_server_group_members = undef,
) {
include ::nova::deps
# TODO(tobias-urdin): Remove these params and picks in the T release.
$instances_real = pick($quota_instances, $instances)
$cores_real = pick($quota_cores, $cores)
$ram_real = pick($quota_ram, $ram)
$floating_ips_real = pick($quota_floating_ips, $floating_ips)
$fixed_ips_real = pick($quota_fixed_ips, $fixed_ips)
$metadata_items_real = pick($quota_metadata_items, $metadata_items)
$injected_files_real = pick($quota_injected_files, $injected_files)
$injected_file_content_bytes_real = pick($quota_injected_file_content_bytes, $injected_file_content_bytes)
$injected_file_path_length_real = pick($quota_injected_file_path_length, $injected_file_path_length)
$security_groups_real = pick($quota_security_groups, $security_groups)
$security_group_rules_real = pick($quota_security_group_rules, $security_group_rules)
$key_pairs_real = pick($quota_key_pairs, $key_pairs)
$server_groups_real = pick($quota_server_groups, $server_groups)
$server_group_members_real = pick($quota_server_group_members, $server_group_members)
nova_config {
'DEFAULT/quota_instances': value => $quota_instances;
'DEFAULT/quota_cores': value => $quota_cores;
'DEFAULT/quota_ram': value => $quota_ram;
'DEFAULT/quota_floating_ips': value => $quota_floating_ips;
'DEFAULT/quota_fixed_ips': value => $quota_fixed_ips;
'DEFAULT/quota_metadata_items': value => $quota_metadata_items;
'DEFAULT/quota_injected_files': value => $quota_injected_files;
'DEFAULT/quota_injected_file_content_bytes': value => $quota_injected_file_content_bytes;
'DEFAULT/quota_injected_file_path_length': value => $quota_injected_file_path_length;
'DEFAULT/quota_security_groups': value => $quota_security_groups;
'DEFAULT/quota_security_group_rules': value => $quota_security_group_rules;
'DEFAULT/quota_key_pairs': value => $quota_key_pairs;
'DEFAULT/quota_server_groups': value => $quota_server_groups;
'DEFAULT/quota_server_group_members': value => $quota_server_group_members;
'DEFAULT/reservation_expire': value => $reservation_expire;
'DEFAULT/until_refresh': value => $until_refresh;
'DEFAULT/max_age': value => $max_age;
'quota/instances': value => $instances_real;
'quota/cores': value => $cores_real;
'quota/ram': value => $ram_real;
'quota/floating_ips': value => $floating_ips_real;
'quota/fixed_ips': value => $fixed_ips_real;
'quota/metadata_items': value => $metadata_items_real;
'quota/injected_files': value => $injected_files_real;
'quota/injected_file_content_bytes': value => $injected_file_content_bytes_real;
'quota/injected_file_path_length': value => $injected_file_path_length_real;
'quota/security_groups': value => $security_groups_real;
'quota/security_group_rules': value => $security_group_rules_real;
'quota/key_pairs': value => $key_pairs_real;
'quota/server_groups': value => $server_groups_real;
'quota/server_group_members': value => $server_group_members_real;
'quota/reservation_expire': value => $reservation_expire;
'quota/until_refresh': value => $until_refresh;
'quota/max_age': value => $max_age;
}
}

View File

@ -0,0 +1,24 @@
---
issues:
- |
The nova::quota class now properly sets the config options in the [quota]
section and not the [DEFAULT] section which is deprecated.
deprecations:
- |
The following parameters in nova::quota class has been deprecated and has
changed name:
- ``quota_instances`` (now ``instances``)
- ``quota_cores`` (now ``cores``)
- ``quota_ram`` (now ``ram``)
- ``quota_floating_ips`` (now ``floating_ips``)
- ``quota_fixed_ips`` (now ``fixed_ips``)
- ``quota_metadata_items`` (now ``metadata_items``)
- ``quota_injected_files`` (now ``injected_files``)
- ``quota_injected_file_content_bytes`` (now ``injected_file_content_bytes``)
- ``quota_injected_file_path_length`` (now ``injected_file_path_length``)
- ``quota_security_groups`` (now ``security_groups``)
- ``quota_security_group_rules`` (now ``security_group_rules``)
- ``quota_key_pairs`` (now ``key_pairs``)
- ``quota_server_groups`` (now ``server_groups``)
- ``quota_server_group_members`` (now ``server_group_members``)

View File

@ -1,83 +1,123 @@
require 'spec_helper'
describe 'nova::quota' do
let :params do
{}
end
let :default_params do
{ :quota_instances => 10,
:quota_cores => 20,
:quota_ram => 51200,
:quota_floating_ips => 10,
:quota_fixed_ips => -1,
:quota_metadata_items => 128,
:quota_injected_files => 5,
:quota_injected_file_content_bytes => 10240,
:quota_injected_file_path_length => 255,
:quota_security_groups => 10,
:quota_security_group_rules => 20,
:quota_key_pairs => 100,
:quota_server_groups => 10,
:quota_server_group_members => 10,
:reservation_expire => 86400,
:until_refresh => 0,
:max_age => 0 }
{
:instances => 10,
:cores => 20,
:ram => 51200,
:floating_ips => 10,
:fixed_ips => -1,
:metadata_items => 128,
:injected_files => 5,
:injected_file_content_bytes => 10240,
:injected_file_path_length => 255,
:security_groups => 10,
:security_group_rules => 20,
:key_pairs => 100,
:server_groups => 10,
:server_group_members => 10,
:reservation_expire => 86400,
:until_refresh => 0,
:max_age => 0
}
end
shared_examples_for 'nova quota' do
shared_examples 'nova::quota config options' do
let :params_hash do
default_params.merge(params)
default_params.merge!(params)
end
it 'configures quota in nova.conf' do
params_hash.each_pair do |config,value|
is_expected.to contain_nova_config("DEFAULT/#{config}").with_value( value )
it {
params_hash.each_pair do |config, value|
should contain_nova_config("quota/#{config}").with_value(value)
end
}
end
shared_examples 'nova::quota' do
context 'with default parameters' do
it_behaves_like 'nova::quota config options'
end
context 'with provided parameters' do
before do
params.merge!({
:instances => 20,
:cores => 40,
:ram => 102400,
:floating_ips => 20,
:fixed_ips => 512,
:metadata_items => 256,
:injected_files => 10,
:injected_file_content_bytes => 20480,
:injected_file_path_length => 254,
:security_groups => 20,
:security_group_rules => 40,
:key_pairs => 200,
:server_groups => 20,
:server_group_members => 20,
:reservation_expire => 6400,
:until_refresh => 30,
:max_age => 60
})
end
it_behaves_like 'nova::quota config options'
end
context 'with deprecated parameters' do
before do
params.merge!({
:quota_instances => 20,
:quota_cores => 40,
:quota_ram => 102400,
:quota_floating_ips => 20,
:quota_fixed_ips => 512,
:quota_metadata_items => 256,
:quota_injected_files => 10,
:quota_injected_file_content_bytes => 20480,
:quota_injected_file_path_length => 254,
:quota_security_groups => 20,
:quota_security_group_rules => 40,
:quota_key_pairs => 200,
:quota_server_groups => 20,
:quota_server_group_members => 20
})
end
it {
should contain_nova_config('quota/instances').with_value(params[:quota_instances])
should contain_nova_config('quota/cores').with_value(params[:quota_cores])
should contain_nova_config('quota/ram').with_value(params[:quota_ram])
should contain_nova_config('quota/floating_ips').with_value(params[:quota_floating_ips])
should contain_nova_config('quota/fixed_ips').with_value(params[:quota_fixed_ips])
should contain_nova_config('quota/metadata_items').with_value(params[:quota_metadata_items])
should contain_nova_config('quota/injected_files').with_value(params[:quota_injected_files])
should contain_nova_config('quota/injected_file_content_bytes').with_value(params[:quota_injected_file_content_bytes])
should contain_nova_config('quota/injected_file_path_length').with_value(params[:quota_injected_file_path_length])
should contain_nova_config('quota/security_groups').with_value(params[:quota_security_groups])
should contain_nova_config('quota/security_group_rules').with_value(params[:quota_security_group_rules])
should contain_nova_config('quota/key_pairs').with_value(params[:quota_key_pairs])
should contain_nova_config('quota/server_groups').with_value(params[:quota_server_groups])
should contain_nova_config('quota/server_group_members').with_value(params[:quota_server_group_members])
}
end
end
context 'with default parameters' do
it_configures 'nova quota'
end
on_supported_os({
:supported_os => OSDefaults.get_supported_os
}).each do |os,facts|
context "on #{os}" do
let (:facts) do
facts.merge!(OSDefaults.get_facts())
end
context 'with provided parameters' do
before do
params.merge!({
:quota_instances => 20,
:quota_cores => 40,
:quota_ram => 102400,
:quota_floating_ips => 20,
:quota_fixed_ips => 512,
:quota_metadata_items => 256,
:quota_injected_files => 10,
:quota_injected_file_content_bytes => 20480,
:quota_injected_file_path_length => 254,
:quota_security_groups => 20,
:quota_security_group_rules => 40,
:quota_key_pairs => 200,
:quota_server_groups => 20,
:quota_server_group_members => 20,
:reservation_expire => 6400,
:until_refresh => 30,
:max_age => 60
})
it_behaves_like 'nova::quota'
end
it_configures 'nova quota'
end
it { is_expected.to contain_nova_config('DEFAULT/quota_ram').with_value('51200') }
describe 'when overriding params' do
let :params do
{:quota_ram => '1'}
end
it { is_expected.to contain_nova_config('DEFAULT/quota_ram').with_value('1') }
end
end