RPC_backend / transport_url workover

- added rabbit_transport_url method to endpoints library
  usage i.e for block-storage will be
  node.default['openstack']['block-storage']['conf_secrets']
       ['DEFAULT']['transport_url'] = rabbit_transport_url 'block-storage'

Change-Id: I0a6da37e3f2b839590b6349fd906d47c5206fbb3
This commit is contained in:
Christoph Albers 2016-12-13 15:14:51 +01:00
parent cd6fd327a3
commit 6401b89019
2 changed files with 38 additions and 0 deletions

View File

@ -30,6 +30,19 @@ module ::Openstack
nil
end
# Shortcut to get the transport_url for rabbitmq
def rabbit_transport_url(service)
mq_user = node['openstack']['mq'][service]['rabbit']['userid']
mq_password = get_password 'user', mq_user
mq_port = node['openstack']['endpoints']['mq']['port']
vhost = node['openstack']['mq']['vhost']
bind_mq = node['openstack']['bind_service']['mq']
bind_mq_address = bind_address bind_mq
url = "rabbit://#{mq_user}:#{mq_password}@#{bind_mq_address}:#{mq_port}"
url += "/#{vhost}" unless vhost == '/'
url
end
# Shortcut to get the SQLAlchemy DB URI for a named service
def db_uri(service, user, pass, is_slave = false) # rubocop:disable MethodLength, CyclomaticComplexity
info = db(service)

View File

@ -99,6 +99,31 @@ describe 'openstack-common::default' do
end
end
describe 'transport_url' do
it do
allow(subject).to receive(:node).and_return(chef_run.node)
allow(subject).to receive(:get_password)
.with('user', 'guest')
.and_return('mypass')
expected = 'rabbit://guest:mypass@127.0.0.1:5672'
expect(subject.rabbit_transport_url('compute')).to eq(expected)
end
it do
node.set['openstack']['mq']['service_type'] = 'rabbit'
node.set['openstack']['mq']['compute']['rabbit']['userid'] = 'rabbit2'
node.set['openstack']['endpoints']['mq']['port'] = 1234
node.set['openstack']['bind_service']['mq']['host'] = '10.0.0.1'
node.set['openstack']['mq']['vhost'] = 'anyhost'
allow(subject).to receive(:node).and_return(chef_run.node)
allow(subject).to receive(:get_password)
.with('user', 'rabbit2')
.and_return('mypass2')
expected = 'rabbit://rabbit2:mypass2@10.0.0.1:1234/anyhost'
expect(subject.rabbit_transport_url('compute')).to eq(expected)
end
end
describe '#db' do
it 'returns nil when no openstack.db not in node attrs' do
allow(subject).to receive(:node).and_return({})