Sort #memcached_servers results

Chef 11 doesn't seem to return sorted results.  The results
of this method need sorted, to prevent template changes, and
unnecessary service restarts.

Change-Id: I7b8864515cd2f4140f72d5ac430cd330a530cab2
This commit is contained in:
John Dewey
2013-06-03 20:49:18 -07:00
parent c911ba58a7
commit f6a865ab95
4 changed files with 19 additions and 4 deletions

View File

@@ -2,6 +2,9 @@
This file is used to list changes made in each version of cookbook-openstack-common.
## 0.2.3:
* Sort the results returned by #memcached_servers
## 0.2.2:
* Provides a mechanism to override memcache_servers search logic through node attributes

View File

@@ -82,9 +82,9 @@ module ::Openstack
# role - sets role that is used to filter out memcached nodes
def memcached_servers(env=node.chef_environment, role="infra-caching")
unless node['openstack']['memcache_servers']
search(:node, "chef_environment:#{env} AND roles:#{role}").map do |c_node|
"#{c_node['memcached']['listen']}:11211"
end
search(:node, "chef_environment:#{env} AND roles:#{role}").map do |n|
"#{n['memcached']['listen']}:11211"
end.sort
else
node['openstack']['memcache_servers'].length != 0 ?
node['openstack']['memcache_servers'] : []

View File

@@ -4,7 +4,7 @@ maintainer_email "cookbooks@lists.tfoundry.com"
license "Apache 2.0"
description "Common OpenStack attributes, libraries and recipes."
long_description IO.read(File.join(File.dirname(__FILE__), 'README.md'))
version "0.2.2"
version "0.2.3"
recipe "openstack-common", "Installs/Configures common recipes"
recipe "openstack-common::logging", "Installs/Configures common logging"

View File

@@ -143,6 +143,18 @@ describe ::Openstack do
@subject.memcached_servers("test_env", "test_role").
should == ["1.1.1.1:11211", "2.2.2.2:11211"]
end
it "returns proper pairs sorted" do
nodes = [
{ "memcached" => { "listen" => "3.3.3.3" }},
{ "memcached" => { "listen" => "1.1.1.1" }},
{ "memcached" => { "listen" => "2.2.2.2" }},
]
@subject.stub(:node).and_return @chef_run.node
@subject.stub(:search).
with(:node, "chef_environment:test_env AND roles:test_role").and_return nodes
@subject.memcached_servers("test_env", "test_role").
should == ["1.1.1.1:11211", "2.2.2.2:11211", "3.3.3.3:11211"]
end
it "returns list of servers as defined by attributes" do
nodes = {
"openstack" => {