saz-memcached-2.2.4/0040755 0000000 0000000 00000000000 12222351655 014206 5ustar00travis0000000 0000000 saz-memcached-2.2.4/.gemfile0100644 0000000 0000000 00000000273 12222351551 015611 0ustar00travis0000000 0000000 source 'https://rubygems.org' puppetversion = ENV.key?('PUPPET_VERSION') ? "= #{ENV['PUPPET_VERSION']}" : ['>= 2.7'] gem 'puppet', puppetversion gem 'puppetlabs_spec_helper', '>= 0.1.0' saz-memcached-2.2.4/tests/0040755 0000000 0000000 00000000000 12222351655 015350 5ustar00travis0000000 0000000 saz-memcached-2.2.4/tests/init.pp0100644 0000000 0000000 00000000022 12222351551 016636 0ustar00travis0000000 0000000 include memcached saz-memcached-2.2.4/Rakefile0100644 0000000 0000000 00000000054 12222351551 015642 0ustar00travis0000000 0000000 require 'puppetlabs_spec_helper/rake_tasks' saz-memcached-2.2.4/README.md0100644 0000000 0000000 00000001726 12222351551 015463 0ustar00travis0000000 0000000 # puppet-memcached [![Build Status](https://secure.travis-ci.org/saz/puppet-memcached.png)](http://travis-ci.org/saz/puppet-memcached) Manage memcached via Puppet ## How to use ### Use roughly 90% of memory ```ruby class { 'memcached': } ``` ### Set a fixed memory limit in MB ```ruby class { 'memcached': max_memory => 2048 } ``` ### Use 12% of available memory ```ruby class { 'memcached': max_memory => '12%' } ``` ### Other class parameters * $package_ensure = 'present' * $logfile = '/var/log/memcached.log' * $max_memory = false * $item_size = false * $lock_memory = false (WARNING: good if used intelligently, google for -k key) * $listen_ip = '0.0.0.0' * $tcp_port = 11211 * $udp_port = 11211 * $user = '' (OS specific setting, see params.pp) * $max_connections = 8192 * $verbosity = undef * $unix_socket = undef * $install_dev = false (TRUE if 'libmemcached-dev' package should be installed) * $processorcount = $::processorcount saz-memcached-2.2.4/.fixtures.yml0100644 0000000 0000000 00000000067 12222351551 016653 0ustar00travis0000000 0000000 fixtures: symlinks: "memcached": "#{source_dir}" saz-memcached-2.2.4/README-DEVELOPER0100644 0000000 0000000 00000000432 12222351551 016400 0ustar00travis0000000 0000000 In order to run tests: - puppet and facter must be installed and available in Ruby's LOADPATH - the latest revision of rspec-puppet must be installed - rake, and rspec2 must be install - the name of the module directory needs to be memcached to run all tests: rake spec saz-memcached-2.2.4/metadata.json0100644 0000000 0000000 00000002701 12222351655 016656 0ustar00travis0000000 0000000 { "name": "saz-memcached", "version": "2.2.4", "summary": "UNKNOWN", "author": "saz", "description": "Manage memcached via Puppet", "dependencies": [], "types": [], "checksums": { ".fixtures.yml": "46c69d6ea3ac3d3fe4c77e8b937800b4", ".gemfile": "66ed593185e8ddc3fe96e8eaf0673643", ".gemfile.lock": "5fcc3ad6c7392049e593f12f5196cdd4", ".travis.yml": "216ac4a9aa4dbabc58b4e584496aaff7", "LICENSE": "d6869a585931245be85fd4aece485172", "Modulefile": "fea51cde30acbb085187d9f25798938b", "README-DEVELOPER": "d45048731ddb158a56a1b26293fb5dbf", "README.md": "6bc103e2be940202475114fa502e252b", "Rakefile": "0254db5d3fc38c67a2c160d7296a24f8", "lib/puppet/parser/functions/memcached_max_memory.rb": "edc87a9d229013298027a075e3eb8795", "manifests/init.pp": "efc6e929d28bc60b9adbadde323dc30c", "manifests/params.pp": "e72b870d3d2598429043e1b87c1d5c59", "spec/classes/memcached_spec.rb": "b21326d5049764842da005784486be08", "spec/spec.opts": "a600ded995d948e393fbe2320ba8e51c", "spec/spec_helper.rb": "0db89c9a486df193c0e40095422e19dc", "templates/memcached.conf.erb": "825467c9581dcdfdad8cc2816d78cb1a", "templates/memcached_sysconfig.erb": "739a743ad70d580e20a8e14a2f36bb5e", "tests/init.pp": "e798f4999ba392f3c0fce0d5290c263f" }, "source": "git://github.com/saz/puppet-memcached.git", "project_page": "https://github.com/saz/puppet-memcached", "license": "Apache License, Version 2.0" }saz-memcached-2.2.4/.travis.yml0100644 0000000 0000000 00000001257 12222351551 016314 0ustar00travis0000000 0000000 language: ruby rvm: - 1.8.7 before_script: after_script: script: rake spec after_success: - git clone -q git://github.com/puppetlabs/ghpublisher.git .forge-releng - .forge-releng/publish branches: only: - master env: matrix: - PUPPET_VERSION=2.6.9 - PUPPET_VERSION=2.7.6 - PUPPET_VERSION=2.7.13 - PUPPET_VERSION=3.0.0 - PUPPET_VERSION=3.1.0 - PUPPET_VERSION=3.3.0 global: - PUBLISHER_LOGIN=saz - secure: |- KHycFEf0ALVjITczYG0pcfk912muQkbJiGzKa5yyC8C9ppDW+dTYgDQu8AO1KXFHzds NUASY2XNjrJNv27w7A2eMp88qU1ID1s8CWALph4fuxGcM/HoPw9q8sldJ9/sHGlY9Ye DEeIvgt9qkwKtG/kb7dN7la42nv5fffWE95OU= notifications: email: false gemfile: .gemfile saz-memcached-2.2.4/.gemfile.lock0100644 0000000 0000000 00000001375 12222351610 016540 0ustar00travis0000000 0000000 GEM remote: https://rubygems.org/ specs: diff-lcs (1.2.4) facter (1.7.3) hiera (1.2.1) json_pure json_pure (1.8.0) metaclass (0.0.1) mocha (0.14.0) metaclass (~> 0.0.1) puppet (3.1.0) facter (~> 1.6) hiera (~> 1.0) puppetlabs_spec_helper (0.4.1) mocha (>= 0.10.5) rake rspec (>= 2.9.0) rspec-puppet (>= 0.1.1) rake (10.1.0) rspec (2.14.1) rspec-core (~> 2.14.0) rspec-expectations (~> 2.14.0) rspec-mocks (~> 2.14.0) rspec-core (2.14.5) rspec-expectations (2.14.3) diff-lcs (>= 1.1.3, < 2.0) rspec-mocks (2.14.3) rspec-puppet (0.1.6) rspec PLATFORMS ruby DEPENDENCIES puppet (= 3.1.0) puppetlabs_spec_helper (>= 0.1.0) saz-memcached-2.2.4/spec/0040755 0000000 0000000 00000000000 12222351655 015140 5ustar00travis0000000 0000000 saz-memcached-2.2.4/spec/spec_helper.rb0100644 0000000 0000000 00000000064 12222351551 017746 0ustar00travis0000000 0000000 require 'puppetlabs_spec_helper/module_spec_helper' saz-memcached-2.2.4/spec/fixtures/0040755 0000000 0000000 00000000000 12222351655 017011 5ustar00travis0000000 0000000 saz-memcached-2.2.4/spec/fixtures/modules/0040755 0000000 0000000 00000000000 12222351655 020461 5ustar00travis0000000 0000000 saz-memcached-2.2.4/spec/fixtures/manifests/0040755 0000000 0000000 00000000000 12222351655 021002 5ustar00travis0000000 0000000 saz-memcached-2.2.4/spec/classes/0040755 0000000 0000000 00000000000 12222351655 016575 5ustar00travis0000000 0000000 saz-memcached-2.2.4/spec/classes/memcached_spec.rb0100644 0000000 0000000 00000007640 12222351551 022041 0ustar00travis0000000 0000000 require 'spec_helper' describe 'memcached' do let :default_params do { :package_ensure => 'present', :logfile => '/var/log/memcached.log', :max_memory => false, :item_size => false, :lock_memory => false, :listen_ip => '0.0.0.0', :tcp_port => '11211', :udp_port => '11211', :user => 'nobody', :max_connections => '8192', :install_dev => false, :processorcount => 1 } end [ {}, { :package_ensure => 'latest', :logfile => '/var/log/memcached.log', :max_memory => '2', :item_size => false, :lock_memory => true, :listen_ip => '127.0.0.1', :tcp_port => '11212', :udp_port => '11213', :user => 'somebdy', :max_connections => '8193', :verbosity => 'vvv', :processorcount => 3 }, { :package_ensure => 'present', :logfile => '/var/log/memcached.log', :max_memory => '20%', :lock_memory => false, :listen_ip => '127.0.0.1', :tcp_port => '11212', :udp_port => '11213', :user => 'somebdy', :max_connections => '8193', :verbosity => 'vvv', :install_dev => true, :processorcount => 1 } ].each do |param_set| describe "when #{param_set == {} ? "using default" : "specifying"} class parameters" do let :param_hash do default_params.merge(param_set) end let :params do param_set end ['Debian'].each do |osfamily| let :facts do { :osfamily => osfamily, :memorysize => '1000 MB', :processorcount => '1', } end describe "on supported osfamily: #{osfamily}" do it { should contain_class("memcached::params") } it { should contain_package("memcached").with_ensure(param_hash[:package_ensure]) } it { if param_hash[:install_dev] should contain_package("libmemcached-dev").with_ensure(param_hash[:package_ensure]) end } it { should contain_file("/etc/memcached.conf").with( 'owner' => 'root', 'group' => 'root' )} it { should contain_service("memcached").with( 'ensure' => 'running', 'enable' => true, 'hasrestart' => true, 'hasstatus' => false )} it 'should compile the template based on the class parameters' do content = param_value( subject, 'file', '/etc/memcached.conf', 'content' ) expected_lines = [ "logfile #{param_hash[:logfile]}", "-l #{param_hash[:listen_ip]}", "-p #{param_hash[:tcp_port]}", "-U #{param_hash[:udp_port]}", "-u #{param_hash[:user]}", "-c #{param_hash[:max_connections]}", "-t #{param_hash[:processorcount]}" ] if(param_hash[:max_memory]) if(param_hash[:max_memory].end_with?('%')) expected_lines.push("-m 200") else expected_lines.push("-m #{param_hash[:max_memory]}") end else expected_lines.push("-m 950") end if(param_hash[:lock_memory]) expected_lines.push("-k") end if(param_hash[:verbosity]) expected_lines.push("-vvv") end (content.split("\n") & expected_lines).should =~ expected_lines end end end ['Redhat'].each do |osfamily| describe 'on supported platform' do it 'should fail' do end end end end end end saz-memcached-2.2.4/spec/spec.opts0100644 0000000 0000000 00000000057 12222351551 016773 0ustar00travis0000000 0000000 --format s --colour --loadby mtime --backtrace saz-memcached-2.2.4/lib/0040755 0000000 0000000 00000000000 12222351655 014754 5ustar00travis0000000 0000000 saz-memcached-2.2.4/lib/puppet/0040755 0000000 0000000 00000000000 12222351655 016271 5ustar00travis0000000 0000000 saz-memcached-2.2.4/lib/puppet/parser/0040755 0000000 0000000 00000000000 12222351655 017565 5ustar00travis0000000 0000000 saz-memcached-2.2.4/lib/puppet/parser/functions/0040755 0000000 0000000 00000000000 12222351655 021575 5ustar00travis0000000 0000000 saz-memcached-2.2.4/lib/puppet/parser/functions/memcached_max_memory.rb0100644 0000000 0000000 00000002275 12222351551 026263 0ustar00travis0000000 0000000 module Puppet::Parser::Functions newfunction(:memcached_max_memory, :type => :rvalue, :doc => <<-EOS Calculate max_memory size from fact 'memsize' and passed argument. EOS ) do |arguments| raise(Puppet::ParseError, "memcached_max_memory(): " + "Wrong number of arguments given " + "(#{arguments.size} for 1)") if arguments.size != 1 arg = arguments[0] memsize = lookupvar('memorysize') if arg and !arg.to_s.end_with?('%') result_in_mb = arg.to_i else max_memory_percent = arg ? arg : '95%' # Taken from puppetlabs-stdlib to_bytes() function value,prefix = */([0-9.e+-]*)\s*([^bB]?)/.match(memsize)[1,2] value = value.to_f case prefix when '' then value = value when 'k' then value *= (1<<10) when 'M' then value *= (1<<20) when 'G' then value *= (1<<30) when 'T' then value *= (1<<40) when 'E' then value *= (1<<50) else raise Puppet::ParseError, "memcached_max_memory(): Unknown prefix #{prefix}" end value = value.to_i result_in_mb = ( (value / (1 << 20) ) * (max_memory_percent.to_f / 100.0) ).floor end return result_in_mb end end saz-memcached-2.2.4/templates/0040755 0000000 0000000 00000000000 12222351655 016204 5ustar00travis0000000 0000000 saz-memcached-2.2.4/templates/memcached_sysconfig.erb0100644 0000000 0000000 00000001022 12222351551 022653 0ustar00travis0000000 0000000 PORT="<%= @tcp_port %>" USER="<%= @user %>" MAXCONN="<%= @max_connections %>" <% Puppet::Parser::Functions.function('memcached_max_memory') -%> CACHESIZE="<%= scope.function_memcached_max_memory([@max_memory]) %>" OPTIONS="<% result = [] if @verbosity result << '-' + @verbosity end if @lock_memory result << '-k' end if @listen_ip result << '-l ' + @listen_ip end if @udp_port result << '-U ' + @udp_port end if @item_size result << '-I ' + @item_size end result << '-t ' + @processorcount -%><%= result.join(' ') -%>" saz-memcached-2.2.4/templates/memcached.conf.erb0100644 0000000 0000000 00000002033 12222351551 021516 0ustar00travis0000000 0000000 # File managed by puppet # Run memcached as a daemon. -d # pidfile -P /var/run/memcached.pid # Log memcached's output logfile <%= @logfile -%> <% if @verbosity -%> # Verbosity -<%= @verbosity %> <% end -%> # Use MB memory max to use for object storage. <% Puppet::Parser::Functions.function('memcached_max_memory') -%> -m <%= scope.function_memcached_max_memory([@max_memory]) %> <% if @lock_memory -%> # Lock down all paged memory. There is a limit on how much memory you may lock. -k <% end -%> <% if @unix_socket -%> # UNIX socket path to listen on -s <%= @unix_socket %> <% else -%> # IP to listen on -l <%= @listen_ip %> # TCP port to listen on -p <%= @tcp_port %> # UDP port to listen on -U <%= @udp_port %> <% end -%> # Run daemon as user -u <%= @user %> # Limit the number of simultaneous incoming connections. -c <%= @max_connections %> # Number of threads to use to process incoming requests. -t <%= @processorcount %> <% if @item_size -%> # Override the default size of each slab page -I <%= @item_size %> <% end -%> saz-memcached-2.2.4/LICENSE0100644 0000000 0000000 00000001111 12222351551 015175 0ustar00travis0000000 0000000 Copyright 2011 Steffen Zieger 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. saz-memcached-2.2.4/manifests/0040755 0000000 0000000 00000000000 12222351655 016177 5ustar00travis0000000 0000000 saz-memcached-2.2.4/manifests/params.pp0100644 0000000 0000000 00000001430 12222351551 020011 0ustar00travis0000000 0000000 class memcached::params { case $::osfamily { 'Debian': { $package_name = 'memcached' $service_name = 'memcached' $service_hasstatus = false $dev_package_name = 'libmemcached-dev' $config_file = '/etc/memcached.conf' $config_tmpl = "${module_name}/memcached.conf.erb" $user = 'nobody' } 'RedHat': { $package_name = 'memcached' $service_name = 'memcached' $service_hasstatus = true $dev_package_name = 'libmemcached-devel' $config_file = '/etc/sysconfig/memcached' $config_tmpl = "${module_name}/memcached_sysconfig.erb" $user = 'memcached' } default: { fail("Unsupported platform: ${::osfamily}") } } } saz-memcached-2.2.4/manifests/init.pp0100644 0000000 0000000 00000002513 12222351551 017474 0ustar00travis0000000 0000000 class memcached( $package_ensure = 'present', $logfile = '/var/log/memcached.log', $max_memory = false, $item_size = false, $lock_memory = false, $listen_ip = '0.0.0.0', $tcp_port = 11211, $udp_port = 11211, $user = $::memcached::params::user, $max_connections = '8192', $verbosity = undef, $unix_socket = undef, $install_dev = false, $processorcount = $::processorcount ) inherits memcached::params { if $package_ensure == 'absent' { $service_ensure = 'stopped' } else { $service_ensure = 'running' } package { $memcached::params::package_name: ensure => $package_ensure, } if $install_dev { package { $memcached::params::dev_package_name: ensure => $package_ensure, require => Package[$memcached::params::package_name] } } file { $memcached::params::config_file: owner => 'root', group => 'root', mode => '0644', content => template($memcached::params::config_tmpl), require => Package[$memcached::params::package_name], } service { $memcached::params::service_name: ensure => $service_ensure, enable => true, hasrestart => true, hasstatus => $memcached::params::service_hasstatus, subscribe => File[$memcached::params::config_file], } } saz-memcached-2.2.4/Modulefile0100644 0000000 0000000 00000000401 12222351551 016201 0ustar00travis0000000 0000000 name 'saz-memcached' version '2.2.4' source 'git://github.com/saz/puppet-memcached.git' author 'saz' license 'Apache License, Version 2.0' summary 'UNKNOWN' description 'Manage memcached via Puppet' project_page 'https://github.com/saz/puppet-memcached'