Allow binding locally to different IP than endpoint IP

Sometimes you want the actual endpoint IP to be a load balanced IP, but
the bind IP to be a local IP (different per node).

This change allows that by using attributes from the [block-storage-api-bind] namespace

Implements blueprint increase-ip-binding-flexibility

Change-Id: I6cf4c5726ce0b12a95c374883c7181ade04b59dd
This commit is contained in:
Darren Birkett 2014-04-24 11:10:52 +01:00
parent 96f3da5551
commit 33f7ceb488
6 changed files with 23 additions and 11 deletions

View File

@ -4,19 +4,19 @@
"path": "."
},
"openstack-image": {
"locked_version": "8.2.1",
"locked_version": "8.2.2",
"git": "git://github.com/stackforge/cookbook-openstack-image.git",
"ref": "839007218b6da68fda3915a2408da1c8ca77f5fe"
"ref": "48749c19e0e0b60061dbc894b09646e3c90d3377"
},
"openstack-identity": {
"locked_version": "8.1.3",
"locked_version": "8.1.4",
"git": "git://github.com/stackforge/cookbook-openstack-identity.git",
"ref": "145a716611dda6414d8458071f8fbccf9e5c978c"
"ref": "d3d1e34a63e2fe5f3764149a38378070956e1756"
},
"openstack-common": {
"locked_version": "8.5.0",
"git": "git://github.com/stackforge/cookbook-openstack-common.git",
"ref": "3e68d2e9bace0adfcc4a4907611c8c3ee573a7ce"
"ref": "3e9264d94b0cc0d30705408aa82ae538c482d2bb"
},
"apt": {
"locked_version": "2.3.8"

View File

@ -2,6 +2,9 @@ openstack-block-storage Cookbook CHANGELOG
==============================
This file is used to list changes made in each version of the openstack-block-storage cookbook.
## 8.4.3
* Allow specifying different local bind IP than (load balanced) endpoint IP
## 8.4.2
* Allow specifying api bind IP and port

View File

@ -163,6 +163,15 @@ Cinder attributes
* `openstack['block-storage']['gpfs']['gpfs_max_clone_depth']` - Maximum clone indirections allowed when creating volume file snapshots clones; zero indicates unlimited clone depth (integer, defalut 0)
* `openstack['block-storage']['gpfs']['gpfs_storage_pool']` - GPFS storage pool that volumes are assigned to (string value)
The following attributes are defined in attributes/default.rb of the common cookbook, but are documented here due to their relevance:
* `openstack['endpoints']['block-storage-api-bind']['host']` - The IP address to bind the api service to
* `openstack['endpoints']['block-storage-api-bind']['port']` - The port to bind the api service to
* `openstack['endpoints']['block-storage-api-bind']['bind_interface']` - The interface name to bind the api service to
If the value of the 'bind_interface' attribute is non-nil, then the block-storage service will be bound to the first IP address on that interface. If the value of the 'bind_interface' attribute is nil, then the block-storage service will be bound to the IP address specified in the host attribute.
Testing
=====

View File

@ -5,7 +5,7 @@ maintainer_email 'cookbooks@lists.tfoundry.com'
license 'Apache 2.0'
description 'The OpenStack Advanced Volume Management service Cinder.'
long_description IO.read(File.join(File.dirname(__FILE__), 'README.md'))
version '8.4.2'
version '8.4.3'
recipe 'openstack-block-storage::api', 'Installs the cinder-api, sets up the cinder database, and cinder service/user/endpoints in keystone'
recipe 'openstack-block-storage::client', 'Install packages required for cinder client'

View File

@ -50,7 +50,7 @@ if node['openstack']['block-storage']['volume']['driver'] == 'cinder.volume.driv
end
glance_api_endpoint = endpoint 'image-api'
cinder_api_endpoint = endpoint 'block-storage-api'
cinder_api_bind = endpoint 'block-storage-api-bind'
directory '/etc/cinder' do
group node['openstack']['block-storage']['group']
@ -72,8 +72,8 @@ template '/etc/cinder/cinder.conf' do
glance_host: glance_api_endpoint.host,
glance_port: glance_api_endpoint.port,
solidfire_pass: solidfire_pass,
volume_api_bind_address: cinder_api_endpoint.host,
volume_api_bind_port: cinder_api_endpoint.port
volume_api_bind_address: cinder_api_bind.host,
volume_api_bind_port: cinder_api_bind.port
)
end

View File

@ -64,12 +64,12 @@ describe 'openstack-block-storage::cinder-common' do
end
it 'has osapi_volume_listen set' do
node.set['openstack']['endpoints']['block-storage-api']['host'] = '1.1.1.1'
node.set['openstack']['endpoints']['block-storage-api-bind']['host'] = '1.1.1.1'
expect(chef_run).to render_file(file.name).with_content('osapi_volume_listen=1.1.1.1')
end
it 'has osapi_volume_listen_port set' do
node.set['openstack']['endpoints']['block-storage-api']['port'] = '9999'
node.set['openstack']['endpoints']['block-storage-api-bind']['port'] = '9999'
expect(chef_run).to render_file(file.name).with_content('osapi_volume_listen_port=9999')
end