Support to configure memcache.conf
Change-Id: Iab2520403edd47004c3edbeda66b4eb16eed587a
This commit is contained in:
		
							
								
								
									
										10
									
								
								lib/puppet/provider/swift_memcache_config/ini_setting.rb
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										10
									
								
								lib/puppet/provider/swift_memcache_config/ini_setting.rb
									
									
									
									
									
										Normal file
									
								
							@@ -0,0 +1,10 @@
 | 
				
			|||||||
 | 
					Puppet::Type.type(:swift_memcache_config).provide(
 | 
				
			||||||
 | 
					  :ini_setting,
 | 
				
			||||||
 | 
					  :parent => Puppet::Type.type(:openstack_config).provider(:ini_setting)
 | 
				
			||||||
 | 
					) do
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					  def self.file_path
 | 
				
			||||||
 | 
					    '/etc/swift/memcache.conf'
 | 
				
			||||||
 | 
					  end
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					end
 | 
				
			||||||
							
								
								
									
										53
									
								
								lib/puppet/type/swift_memcache_config.rb
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										53
									
								
								lib/puppet/type/swift_memcache_config.rb
									
									
									
									
									
										Normal file
									
								
							@@ -0,0 +1,53 @@
 | 
				
			|||||||
 | 
					Puppet::Type.newtype(:swift_memcache_config) do
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					  ensurable
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					  newparam(:name, :namevar => true) do
 | 
				
			||||||
 | 
					    desc 'Section/setting name to manage from /etc/swift/memcache.conf'
 | 
				
			||||||
 | 
					    newvalues(/\S+\/\S+/)
 | 
				
			||||||
 | 
					  end
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					  newproperty(:value) do
 | 
				
			||||||
 | 
					    desc 'The value of the setting to be defined.'
 | 
				
			||||||
 | 
					    munge do |value|
 | 
				
			||||||
 | 
					      value = value.to_s.strip
 | 
				
			||||||
 | 
					      value.capitalize! if value =~ /^(true|false)$/i
 | 
				
			||||||
 | 
					      value
 | 
				
			||||||
 | 
					    end
 | 
				
			||||||
 | 
					    newvalues(/^[\S ]*$/)
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					    def is_to_s( currentvalue )
 | 
				
			||||||
 | 
					      if resource.secret?
 | 
				
			||||||
 | 
					        return '[old secret redacted]'
 | 
				
			||||||
 | 
					      else
 | 
				
			||||||
 | 
					        return currentvalue
 | 
				
			||||||
 | 
					      end
 | 
				
			||||||
 | 
					    end
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					    def should_to_s( newvalue )
 | 
				
			||||||
 | 
					      if resource.secret?
 | 
				
			||||||
 | 
					        return '[new secret redacted]'
 | 
				
			||||||
 | 
					      else
 | 
				
			||||||
 | 
					        return newvalue
 | 
				
			||||||
 | 
					      end
 | 
				
			||||||
 | 
					    end
 | 
				
			||||||
 | 
					  end
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					  newparam(:secret, :boolean => true) do
 | 
				
			||||||
 | 
					    desc 'Whether to hide the value from Puppet logs. Defaults to `false`.'
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					    newvalues(:true, :false)
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					    defaultto false
 | 
				
			||||||
 | 
					  end
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					  newparam(:ensure_absent_val) do
 | 
				
			||||||
 | 
					    desc 'A value that is specified as the value property will behave as if ensure => absent was specified'
 | 
				
			||||||
 | 
					    defaultto('<SERVICE DEFAULT>')
 | 
				
			||||||
 | 
					  end
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					  autorequire(:package) do
 | 
				
			||||||
 | 
					    'swift'
 | 
				
			||||||
 | 
					  end
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					end
 | 
				
			||||||
							
								
								
									
										92
									
								
								manifests/memcache.pp
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										92
									
								
								manifests/memcache.pp
									
									
									
									
									
										Normal file
									
								
							@@ -0,0 +1,92 @@
 | 
				
			|||||||
 | 
					# 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: swift::memcache
 | 
				
			||||||
 | 
					#
 | 
				
			||||||
 | 
					# This class creates a memcache configuration file
 | 
				
			||||||
 | 
					#
 | 
				
			||||||
 | 
					#
 | 
				
			||||||
 | 
					# === Parameters
 | 
				
			||||||
 | 
					#
 | 
				
			||||||
 | 
					# [*memcache_servers*]
 | 
				
			||||||
 | 
					# You can use this single conf file instead of having memcache_servers set in
 | 
				
			||||||
 | 
					# several other conf files under [filter:cache] for example. You can specify
 | 
				
			||||||
 | 
					# multiple servers separated with commas, as in: 10.1.2.3:11211,10.1.2.4:11211
 | 
				
			||||||
 | 
					# Default to ['127.0.0.1:11211']
 | 
				
			||||||
 | 
					#
 | 
				
			||||||
 | 
					# [*memcache_serialization_support*]
 | 
				
			||||||
 | 
					# Sets how memcache values are serialized and deserialized:
 | 
				
			||||||
 | 
					# 0 = older, insecure pickle serialization
 | 
				
			||||||
 | 
					# 1 = json serialization but pickles can still be read (still insecure)
 | 
				
			||||||
 | 
					# 2 = json serialization only (secure and the default)
 | 
				
			||||||
 | 
					# To avoid an instant full cache flush, existing installations should
 | 
				
			||||||
 | 
					# upgrade with 0, then set to 1 and reload, then after some time (24 hours)
 | 
				
			||||||
 | 
					# set to 2 and reload.
 | 
				
			||||||
 | 
					# In the future, the ability to use pickle serialization will be removed.
 | 
				
			||||||
 | 
					# Default to $::os_service_default
 | 
				
			||||||
 | 
					#
 | 
				
			||||||
 | 
					# [*memcache_max_connections*]
 | 
				
			||||||
 | 
					# Sets the maximum number of connections to each memcached server per worker
 | 
				
			||||||
 | 
					# Default to $::os_service_default
 | 
				
			||||||
 | 
					#
 | 
				
			||||||
 | 
					# [*connect_timeout*]
 | 
				
			||||||
 | 
					# Timeout for connection
 | 
				
			||||||
 | 
					# Default to $::os_service_default
 | 
				
			||||||
 | 
					#
 | 
				
			||||||
 | 
					# [*pool_timeout*]
 | 
				
			||||||
 | 
					# Timeout for pooled connection
 | 
				
			||||||
 | 
					# Default to $::os_service_default
 | 
				
			||||||
 | 
					#
 | 
				
			||||||
 | 
					# [*tries*]
 | 
				
			||||||
 | 
					# number of servers to retry on failures getting a pooled connection
 | 
				
			||||||
 | 
					# Default to $::os_service_default
 | 
				
			||||||
 | 
					#
 | 
				
			||||||
 | 
					# [*io_timeout*]
 | 
				
			||||||
 | 
					# Timeout for read and writes
 | 
				
			||||||
 | 
					# Default to $::os_service_default
 | 
				
			||||||
 | 
					#
 | 
				
			||||||
 | 
					#
 | 
				
			||||||
 | 
					# === Authors
 | 
				
			||||||
 | 
					#
 | 
				
			||||||
 | 
					# shi.yan@ardc.edu.au
 | 
				
			||||||
 | 
					#
 | 
				
			||||||
 | 
					class swift::memcache (
 | 
				
			||||||
 | 
					  $memcache_servers               = ['127.0.0.1:11211'],
 | 
				
			||||||
 | 
					  $memcache_serialization_support = $::os_service_default,
 | 
				
			||||||
 | 
					  $memcache_max_connections       = $::os_service_default,
 | 
				
			||||||
 | 
					  $connect_timeout                = $::os_service_default,
 | 
				
			||||||
 | 
					  $pool_timeout                   = $::os_service_default,
 | 
				
			||||||
 | 
					  $tries                          = $::os_service_default,
 | 
				
			||||||
 | 
					  $io_timeout                     = $::os_service_default,
 | 
				
			||||||
 | 
					) {
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					  include swift::deps
 | 
				
			||||||
 | 
					  include swift::params
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					  file { '/etc/swift/memcache.conf':
 | 
				
			||||||
 | 
					    ensure => file,
 | 
				
			||||||
 | 
					    owner  => 'swift',
 | 
				
			||||||
 | 
					    group  => 'swift',
 | 
				
			||||||
 | 
					    mode   => '0640',
 | 
				
			||||||
 | 
					  }
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					  swift_memcache_config {
 | 
				
			||||||
 | 
					    'memcache/memcache_servers':               value => join(any2array($memcache_servers), ',');
 | 
				
			||||||
 | 
					    'memcache/memcache_serialization_support': value => $memcache_serialization_support;
 | 
				
			||||||
 | 
					    'memcache/memcache_max_connections':       value => $memcache_max_connections;
 | 
				
			||||||
 | 
					    'memcache/connect_timeout':                value => $connect_timeout;
 | 
				
			||||||
 | 
					    'memcache/pool_timeout':                   value => $pool_timeout;
 | 
				
			||||||
 | 
					    'memcache/tries':                          value => $tries;
 | 
				
			||||||
 | 
					    'memcache/io_timeout':                     value => $io_timeout;
 | 
				
			||||||
 | 
					  }
 | 
				
			||||||
 | 
					}
 | 
				
			||||||
@@ -0,0 +1,4 @@
 | 
				
			|||||||
 | 
					---
 | 
				
			||||||
 | 
					features:
 | 
				
			||||||
 | 
					  - |
 | 
				
			||||||
 | 
					    Support to configure memcache.conf file.
 | 
				
			||||||
							
								
								
									
										76
									
								
								spec/classes/swift_memcache_spec.rb
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										76
									
								
								spec/classes/swift_memcache_spec.rb
									
									
									
									
									
										Normal file
									
								
							@@ -0,0 +1,76 @@
 | 
				
			|||||||
 | 
					require 'spec_helper'
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					describe 'swift::memcache' do
 | 
				
			||||||
 | 
					  shared_examples 'swift::memcache' do
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					    describe 'when using default parameters' do
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					      let :file_defaults do
 | 
				
			||||||
 | 
					        {
 | 
				
			||||||
 | 
					          :owner   => 'swift',
 | 
				
			||||||
 | 
					          :group   => 'swift',
 | 
				
			||||||
 | 
					          :mode    => '0640',
 | 
				
			||||||
 | 
					        }
 | 
				
			||||||
 | 
					      end
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					      it {is_expected.to contain_file('/etc/swift/memcache.conf').with(
 | 
				
			||||||
 | 
					         {:ensure => 'file'}.merge(file_defaults)
 | 
				
			||||||
 | 
					      )}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					      it { is_expected.to contain_swift_memcache_config(
 | 
				
			||||||
 | 
					        'memcache/memcache_servers').with_value(['127.0.0.1:11211']) }
 | 
				
			||||||
 | 
					      it {  is_expected.to contain_swift_memcache_config(
 | 
				
			||||||
 | 
					        'memcache/memcache_serialization_support').with_value('<SERVICE DEFAULT>') }
 | 
				
			||||||
 | 
					      it {  is_expected.to contain_swift_memcache_config(
 | 
				
			||||||
 | 
					        'memcache/memcache_max_connections').with_value('<SERVICE DEFAULT>') }
 | 
				
			||||||
 | 
					      it {  is_expected.to contain_swift_memcache_config(
 | 
				
			||||||
 | 
					        'memcache/connect_timeout').with_value('<SERVICE DEFAULT>') }
 | 
				
			||||||
 | 
					      it {  is_expected.to contain_swift_memcache_config(
 | 
				
			||||||
 | 
					        'memcache/pool_timeout').with_value('<SERVICE DEFAULT>') }
 | 
				
			||||||
 | 
					      it {  is_expected.to contain_swift_memcache_config(
 | 
				
			||||||
 | 
					        'memcache/tries').with_value('<SERVICE DEFAULT>') }
 | 
				
			||||||
 | 
					      it {  is_expected.to contain_swift_memcache_config(
 | 
				
			||||||
 | 
					        'memcache/io_timeout').with_value('<SERVICE DEFAULT>') }
 | 
				
			||||||
 | 
					    end
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					    describe 'when overridding parameters' do
 | 
				
			||||||
 | 
					      let :params do
 | 
				
			||||||
 | 
					        {
 | 
				
			||||||
 | 
					          :memcache_servers               => ['1.1.1.1:11211', '2.2.2.2:11211'],
 | 
				
			||||||
 | 
					          :memcache_serialization_support => 1,
 | 
				
			||||||
 | 
					          :memcache_max_connections       => 3,
 | 
				
			||||||
 | 
					          :connect_timeout                => '0.5',
 | 
				
			||||||
 | 
					          :pool_timeout                   => '2.0',
 | 
				
			||||||
 | 
					          :tries                          => 5,
 | 
				
			||||||
 | 
					          :io_timeout                     => '1.0'
 | 
				
			||||||
 | 
					        }
 | 
				
			||||||
 | 
					      end
 | 
				
			||||||
 | 
					      it { is_expected.to contain_swift_memcache_config(
 | 
				
			||||||
 | 
					        'memcache/memcache_servers').with_value('1.1.1.1:11211,2.2.2.2:11211') }
 | 
				
			||||||
 | 
					      it {  is_expected.to contain_swift_memcache_config(
 | 
				
			||||||
 | 
					        'memcache/memcache_serialization_support').with_value('1') }
 | 
				
			||||||
 | 
					      it {  is_expected.to contain_swift_memcache_config(
 | 
				
			||||||
 | 
					        'memcache/memcache_max_connections').with_value('3') }
 | 
				
			||||||
 | 
					      it {  is_expected.to contain_swift_memcache_config(
 | 
				
			||||||
 | 
					        'memcache/connect_timeout').with_value('0.5') }
 | 
				
			||||||
 | 
					      it {  is_expected.to contain_swift_memcache_config(
 | 
				
			||||||
 | 
					        'memcache/pool_timeout').with_value('2.0') }
 | 
				
			||||||
 | 
					      it {  is_expected.to contain_swift_memcache_config(
 | 
				
			||||||
 | 
					        'memcache/tries').with_value('5') }
 | 
				
			||||||
 | 
					      it {  is_expected.to contain_swift_memcache_config(
 | 
				
			||||||
 | 
					        'memcache/io_timeout').with_value('1.0') }
 | 
				
			||||||
 | 
					    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_configures 'swift::memcache'
 | 
				
			||||||
 | 
					    end
 | 
				
			||||||
 | 
					  end
 | 
				
			||||||
 | 
					end
 | 
				
			||||||
		Reference in New Issue
	
	Block a user