Continued work on rabbit host methods
Did not increase the version, b/c 1.3.0 is still under development. We should not migrate to this version, until we complete this work. We are using the new ["openstack"]["mq"] attributes. It is up to the operator to install rabbit, and make these ["openstack"]["mq"] attributes available. * The #rabbit_servers method will return the ["openstack"]["mq"]["servers"] value if defined. Otherwise, it will perform a search, and construct a comma-delimited list of servers. * The #rabbit_server method will return the ["openstack"]["mq"]["server"] value if defined. Otherwise, will perform a search, and return the first rabbit server found. Change-Id: Ia3771d70ea7eeb367b1fa17c5258f719528b5d22
This commit is contained in:
@@ -3,7 +3,10 @@
|
||||
This file is used to list changes made in each version of cookbook-openstack-common.
|
||||
|
||||
## 0.3.0:
|
||||
* Added `#rabbit_servers` method, which returns a list of rabbit servers.
|
||||
* Added `#rabbit_servers` method, which returns a comma-delimited string of rabbit
|
||||
servers in the format of host:port.
|
||||
* Added `#rabbit_server` method, which returns a single rabbit server in the format
|
||||
of host:port.
|
||||
* The `#memcached_servers` method no longer accepts an environment.
|
||||
* Re-factored methods which search to a generic `#search_for`.
|
||||
* Added `#address_for` method, which returns the IPv4 (default) address of the given
|
||||
|
||||
@@ -28,9 +28,8 @@ module ::Openstack
|
||||
search(:node, query, &block).first
|
||||
end
|
||||
|
||||
# Search for memcache servers. Will return the value for
|
||||
# ["openstack"]["memcached_servers"] when set, otherwise
|
||||
# will perform the search.
|
||||
# Returns the value for ["openstack"]["memcached_servers"] when
|
||||
# set, otherwise will perform a search.
|
||||
#
|
||||
# @param [String] role The role to be found (optional).
|
||||
# @return [Array] A list of memcached servers in format
|
||||
@@ -49,17 +48,46 @@ module ::Openstack
|
||||
end
|
||||
end
|
||||
|
||||
# Search for rabbit servers.
|
||||
# Returns all rabbit servers.
|
||||
# Uses the value for ["openstack"]["mq"]["servers"] when set, otherwise
|
||||
# will perform a search.
|
||||
#
|
||||
# @param [String] role The role to be found (optional).
|
||||
# @return [Array] A list of rabbit servers in format
|
||||
# '<ip>:<port>'.
|
||||
def rabbit_servers role="infra-messaging"
|
||||
search_for(role).map do |n|
|
||||
address = n['rabbitmq']['address']
|
||||
port = n['rabbitmq']['port'] || "5672"
|
||||
# @return [String] Rabbit servers joined by a comma in
|
||||
# the format of '<ip>:<port>'.
|
||||
def rabbit_servers
|
||||
if node["openstack"]["mq"]["servers"]
|
||||
servers = node["openstack"]["mq"]["servers"]
|
||||
port = node["openstack"]["mq"]["port"]
|
||||
|
||||
"#{address}:#{port}"
|
||||
end.sort
|
||||
servers.map { |s| "#{s}:#{port}" }.join ","
|
||||
else
|
||||
role = node["openstack"]["mq"]["server_role"]
|
||||
search_for(role).map do |n|
|
||||
# The listen attribute should be saved to the node
|
||||
# in the wrapper cookbook. See the reference cookbook
|
||||
# openstack-ops-messaging.
|
||||
address = n["openstack"]["mq"]["listen"]
|
||||
port = n["openstack"]["mq"]["port"]
|
||||
|
||||
"#{address}:#{port}"
|
||||
end.sort.join ","
|
||||
end
|
||||
end
|
||||
|
||||
# Returns a single rabbit server.
|
||||
# Uses the value for ["openstack"]["mq"]["host"] when set, otherwise
|
||||
# will perform a search.
|
||||
#
|
||||
# @return [String] Rabbit server in the format of '<ip>:<port>'.
|
||||
def rabbit_server
|
||||
if node["openstack"]["mq"]["host"]
|
||||
host = node["openstack"]["mq"]["host"]
|
||||
port = node["openstack"]["mq"]["port"]
|
||||
|
||||
"#{host}:#{port}"
|
||||
else
|
||||
node.override["openstack"]["mq"]["servers"] = nil # safe
|
||||
rabbit_servers.split(",")[0]
|
||||
end
|
||||
end
|
||||
end
|
||||
|
||||
@@ -3,7 +3,12 @@ require ::File.join ::File.dirname(__FILE__), "..", "libraries", "search"
|
||||
|
||||
describe ::Openstack do
|
||||
before do
|
||||
@chef_run = ::ChefSpec::ChefRunner.new ::CHEFSPEC_OPTS
|
||||
@chef_run = ::ChefSpec::ChefRunner.new(::CHEFSPEC_OPTS) do |n|
|
||||
n.set["openstack"]["mq"] = {
|
||||
"server_role" => "openstack-ops-mq",
|
||||
"port" => 5672
|
||||
}
|
||||
end
|
||||
@chef_run.converge "openstack-common::default"
|
||||
@subject = ::Object.new.extend ::Openstack
|
||||
end
|
||||
@@ -60,19 +65,6 @@ describe ::Openstack do
|
||||
expect(resp).to eq ["1.1.1.1:11211", "2.2.2.2:11211", "3.3.3.3:11211"]
|
||||
end
|
||||
|
||||
it "adds default memcached port when missing" do
|
||||
nodes = [
|
||||
{ "memcached" => { "listen" => "1.1.1.1" }},
|
||||
]
|
||||
@subject.stub(:node).and_return @chef_run.node
|
||||
@subject.stub(:search_for).
|
||||
with("role").
|
||||
and_return nodes
|
||||
resp = @subject.memcached_servers("role")
|
||||
|
||||
expect(resp[0]).to eq "1.1.1.1:11211"
|
||||
end
|
||||
|
||||
it "returns memcached servers as defined by attributes" do
|
||||
nodes = {
|
||||
"openstack" => {
|
||||
@@ -99,46 +91,69 @@ describe ::Openstack do
|
||||
end
|
||||
|
||||
describe "#rabbit_servers" do
|
||||
it "returns rabbit list" do
|
||||
it "returns rabbit servers" do
|
||||
nodes = [
|
||||
{ "rabbitmq" => { "address" => "1.1.1.1", "port" => "5672" }},
|
||||
{ "rabbitmq" => { "address" => "2.2.2.2", "port" => "5672" }}
|
||||
{ "openstack" => { "mq" => { "listen" => "1.1.1.1", "port" => "5672" }}},
|
||||
{ "openstack" => { "mq" => { "listen" => "2.2.2.2", "port" => "5672" }}},
|
||||
]
|
||||
@subject.stub(:node).and_return @chef_run.node
|
||||
@subject.stub(:search_for).
|
||||
with("role").
|
||||
and_return nodes
|
||||
resp = @subject.rabbit_servers("role")
|
||||
resp = @subject.rabbit_servers
|
||||
|
||||
expect(resp).to eq ["1.1.1.1:5672", "2.2.2.2:5672"]
|
||||
expect(resp).to eq "1.1.1.1:5672,2.2.2.2:5672"
|
||||
end
|
||||
|
||||
it "returns sorted rabbit list" do
|
||||
it "returns sorted rabbit servers" do
|
||||
nodes = [
|
||||
{ "rabbitmq" => { "address" => "3.3.3.3", "port" => "5672" }},
|
||||
{ "rabbitmq" => { "address" => "1.1.1.1", "port" => "5672" }},
|
||||
{ "rabbitmq" => { "address" => "2.2.2.2", "port" => "5672" }}
|
||||
{ "openstack" => { "mq" => { "listen" => "3.3.3.3", "port" => "5672" }}},
|
||||
{ "openstack" => { "mq" => { "listen" => "1.1.1.1", "port" => "5672" }}},
|
||||
{ "openstack" => { "mq" => { "listen" => "2.2.2.2", "port" => "5672" }}}
|
||||
]
|
||||
@subject.stub(:node).and_return @chef_run.node
|
||||
@subject.stub(:search_for).
|
||||
with("role").
|
||||
and_return nodes
|
||||
resp = @subject.rabbit_servers("role")
|
||||
resp = @subject.rabbit_servers
|
||||
|
||||
expect(resp).to eq ["1.1.1.1:5672", "2.2.2.2:5672", "3.3.3.3:5672"]
|
||||
expect(resp).to eq "1.1.1.1:5672,2.2.2.2:5672,3.3.3.3:5672"
|
||||
end
|
||||
|
||||
it "adds default rabbit port when missing" do
|
||||
nodes = [
|
||||
{ "rabbitmq" => { "address" => "1.1.1.1" }}
|
||||
]
|
||||
it "returns rabbit servers when not searching" do
|
||||
node = @chef_run.node
|
||||
node.set["openstack"]["mq"]["servers"] = ["1.1.1.1", "2.2.2.2"]
|
||||
@subject.stub(:node).and_return @chef_run.node
|
||||
@subject.stub(:search_for).
|
||||
with("role").
|
||||
and_return nodes
|
||||
resp = @subject.rabbit_servers("role")
|
||||
resp = @subject.rabbit_servers
|
||||
|
||||
expect(resp[0]).to eq "1.1.1.1:5672"
|
||||
expect(resp).to eq "1.1.1.1:5672,2.2.2.2:5672"
|
||||
end
|
||||
end
|
||||
|
||||
describe "#rabbit_server" do
|
||||
it "returns a rabbit server" do
|
||||
@subject.stub(:node).and_return @chef_run.node
|
||||
@subject.stub(:rabbit_servers).
|
||||
and_return "1.1.1.1:5672"
|
||||
resp = @subject.rabbit_server
|
||||
|
||||
expect(resp).to eq "1.1.1.1:5672"
|
||||
end
|
||||
|
||||
it "returns a rabbit server when multiple servers returned" do
|
||||
@subject.stub(:node).and_return @chef_run.node
|
||||
@subject.stub(:rabbit_servers).
|
||||
and_return "1.1.1.1:5672,2.2.2.2:5672"
|
||||
resp = @subject.rabbit_server
|
||||
|
||||
expect(resp).to eq "1.1.1.1:5672"
|
||||
end
|
||||
|
||||
it "returns a rabbit server when not searching" do
|
||||
node = @chef_run.node
|
||||
node.set["openstack"]["mq"]["host"] = "1.1.1.1"
|
||||
@subject.stub(:node).and_return @chef_run.node
|
||||
resp = @subject.rabbit_server
|
||||
|
||||
expect(resp).to eq "1.1.1.1:5672"
|
||||
end
|
||||
end
|
||||
end
|
||||
|
||||
Reference in New Issue
Block a user