From a887994258d056c85760d69ff911f2fd8d3c3939 Mon Sep 17 00:00:00 2001 From: Xingchao Yu Date: Mon, 7 May 2018 12:06:25 +1200 Subject: [PATCH] Add octavia::quota class This patch add a new class octavia::quota to manage the quota settings in Octavia services. Change-Id: Ibd7d87ae1b7df0884b4b7a6f89ba79cefea2a9cc --- manifests/quota.pp | 44 ++++++++++++++ ...-octavia-quota-class-7d786b98740f85a8.yaml | 4 ++ spec/classes/octavia_quota_spec.rb | 59 +++++++++++++++++++ 3 files changed, 107 insertions(+) create mode 100644 manifests/quota.pp create mode 100644 releasenotes/notes/add-octavia-quota-class-7d786b98740f85a8.yaml create mode 100644 spec/classes/octavia_quota_spec.rb diff --git a/manifests/quota.pp b/manifests/quota.pp new file mode 100644 index 00000000..78b6e90a --- /dev/null +++ b/manifests/quota.pp @@ -0,0 +1,44 @@ +# == Class: octavia::quota +# +# Setup and configure octavia quotas. +# +# === Parameters: +# +# [*load_balancer_quota*] +# (optional) Default per project load balancer quota +# Defaults to $::os_service_default +# +# [*listener_quota*] +# (optional) Default per project listener quota. +# Defaults to $::os_service_default +# +# [*member_quota*] +# (optional) Default per project member quota. +# Defaults to $::os_service_default +# +# [*pool_quota*] +# (optional) Default per project pool quota. +# Defaults to $::os_service_default +# +# [*health_monitor_quota*] +# (optional) Default per project health monitor quota. +# Defaults to $::os_service_default +# +class octavia::quota ( + $load_balancer_quota = $::os_service_default, + $listener_quota = $::os_service_default, + $member_quota = $::os_service_default, + $pool_quota = $::os_service_default, + $health_monitor_quota = $::os_service_default, +) { + + include ::octavia::deps + + octavia_config { + 'quotas/default_load_balancer_quota': value => $load_balancer_quota; + 'quotas/default_listener_quota': value => $listener_quota; + 'quotas/default_member_quota': value => $member_quota; + 'quotas/default_pool_quota': value => $pool_quota; + 'quotas/default_health_monitor_quota': value => $health_monitor_quota; + } +} diff --git a/releasenotes/notes/add-octavia-quota-class-7d786b98740f85a8.yaml b/releasenotes/notes/add-octavia-quota-class-7d786b98740f85a8.yaml new file mode 100644 index 00000000..27a246a4 --- /dev/null +++ b/releasenotes/notes/add-octavia-quota-class-7d786b98740f85a8.yaml @@ -0,0 +1,4 @@ +--- +features: + - | + Add a new class octavia::quota to manage the quota settings in Octavia. diff --git a/spec/classes/octavia_quota_spec.rb b/spec/classes/octavia_quota_spec.rb new file mode 100644 index 00000000..0964de54 --- /dev/null +++ b/spec/classes/octavia_quota_spec.rb @@ -0,0 +1,59 @@ +require 'spec_helper' + +describe 'octavia::quota' do + let :default_params do + { :load_balancer_quota => '', + :listener_quota => '', + :member_quota => '', + :pool_quota => '', + :health_monitor_quota => '' } + end + + let :params do + {} + end + + shared_examples_for 'octavia quota' do + + let :p do + default_params.merge(params) + end + + it 'contains default values' do + is_expected.to contain_octavia_config('quotas/default_load_balancer_quota').with_value(p[:load_balancer_quota]) + is_expected.to contain_octavia_config('quotas/default_listener_quota').with_value(p[:listener_quota]) + is_expected.to contain_octavia_config('quotas/default_member_quota').with_value(p[:member_quota]) + is_expected.to contain_octavia_config('quotas/default_pool_quota').with_value(p[:pool_quota]) + is_expected.to contain_octavia_config('quotas/default_health_monitor_quota').with_value(p[:health_monitor_quota]) + end + + context 'configure quota with parameters' do + before :each do + params.merge!({ :load_balancer_quota => 10, + :listener_quota => 100, + :member_quota => 100 }) + end + + it 'contains overrided values' do + is_expected.to contain_octavia_config('quotas/default_load_balancer_quota').with_value(p[:load_balancer_quota]) + is_expected.to contain_octavia_config('quotas/default_listener_quota').with_value(p[:listener_quota]) + is_expected.to contain_octavia_config('quotas/default_member_quota').with_value(p[:member_quota]) + is_expected.to contain_octavia_config('quotas/default_pool_quota').with_value(p[:pool_quota]) + is_expected.to contain_octavia_config('quotas/default_health_monitor_quota').with_value(p[:health_monitor_quota]) + 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({:os_workers => 8})) + end + + it_configures 'octavia quota' + end + end + +end