Add designate::quota class to manage quota options

Change-Id: I8dbab6049e61888ed4c133263a37fa288f569eec
This commit is contained in:
Sam Morrison 2016-12-02 15:17:30 +11:00
parent 0acc44976d
commit b4ede1207d
3 changed files with 116 additions and 0 deletions

50
manifests/quota.pp Normal file
View File

@ -0,0 +1,50 @@
# == Class designate::quota
#
# Configure designate quotas
#
# == Parameters
#
# [*quota_api_export_size*]
# (optional) size of api export
# Defaults to $::os_service_default
#
# [*quota_zone_records*]
# (optional) records per zone
# Defaults to $::os_service_default
#
# [*quota_zone_recordsets*]
# (optional) recordsets per zone
# Defaults to $::os_service_default
#
# [*quota_zones*]
# (optional) zones per project
# Defaults to $::os_service_default
#
# [*quota_driver*]
# (optional) storage driver to use
# Defaults to $::os_service_default
#
# [*quota_recordset_records*]
# (optional) recordsets per record
# Defaults to $::os_service_default
#
class designate::quota (
$quota_api_export_size = $::os_service_default,
$quota_zone_records = $::os_service_default,
$quota_zone_recordsets = $::os_service_default,
$quota_zones = $::os_service_default,
$quota_driver = $::os_service_default,
$quota_recordset_records = $::os_service_default,
) {
include ::designate::deps
designate_config {
'DEFAULT/quota_api_export_size': value => $quota_api_export_size;
'DEFAULT/quota_zone_records': value => $quota_zone_records;
'DEFAULT/quota_zone_recordsets': value => $quota_zone_recordsets;
'DEFAULT/quota_zones': value => $quota_zones;
'DEFAULT/quota_driver': value => $quota_driver;
'DEFAULT/quota_recordset_records': value => $quota_recordset_records;
}
}

View File

@ -0,0 +1,11 @@
---
features:
- Configure quota for designate via following options
designate::quota::quota_api_export_size
designate::quota::quota_domain_records
designate::quota::quota_domain_recordsets
designate::quota::quota_domains
designate::quota::quota_recordset_records
You can also set the quota driver via
designate::quota::quota_driver

View File

@ -0,0 +1,55 @@
#
# Unit tests for designate::quota
#
require 'spec_helper'
describe 'designate::quota' do
let :params do
{}
end
shared_examples 'designate-quota' do
context 'with default parameters' do
it 'configures designate-quota with default parameters' do
is_expected.to contain_designate_config('DEFAULT/quota_api_export_size').with_value('<SERVICE DEFAULT>')
is_expected.to contain_designate_config('DEFAULT/quota_zone_records').with_value('<SERVICE DEFAULT>')
is_expected.to contain_designate_config('DEFAULT/quota_zone_recordsets').with_value('<SERVICE DEFAULT>')
is_expected.to contain_designate_config('DEFAULT/quota_zones').with_value('<SERVICE DEFAULT>')
is_expected.to contain_designate_config('DEFAULT/quota_driver').with_value('<SERVICE DEFAULT>')
is_expected.to contain_designate_config('DEFAULT/quota_recordset_records').with_value('<SERVICE DEFAULT>')
end
context 'when using custom options' do
before { params.merge!(:quota_api_export_size => '20',
:quota_zone_records => '20',
:quota_zone_recordsets => '20',
:quota_zones => '20',
:quota_driver => 'dummy',
:quota_recordset_records => '20',
)}
it 'configures designate-quota with custom options' do
is_expected.to contain_designate_config('DEFAULT/quota_api_export_size').with_value('20')
is_expected.to contain_designate_config('DEFAULT/quota_zone_records').with_value('20')
is_expected.to contain_designate_config('DEFAULT/quota_zone_recordsets').with_value('20')
is_expected.to contain_designate_config('DEFAULT/quota_zones').with_value('20')
is_expected.to contain_designate_config('DEFAULT/quota_driver').with_value('dummy')
is_expected.to contain_designate_config('DEFAULT/quota_recordset_records').with_value('20')
end
end
end
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
it_behaves_like 'designate-quota'
end
end
end