iSCSI backend for Cinder volumes
As part of multi-backends, add iSCSI cinder backend. * Add iscsi new backend. * Allow to run iSCSI in multi-backend configurations via Hiera. * Unit tests to validate both iSCSI & multi-backends.
This commit is contained in:
46
manifests/volume/backend/iscsi.pp
Normal file
46
manifests/volume/backend/iscsi.pp
Normal file
@@ -0,0 +1,46 @@
|
|||||||
|
#
|
||||||
|
# Copyright (C) 2014 eNovance SAS <licensing@enovance.com>
|
||||||
|
#
|
||||||
|
# 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.
|
||||||
|
#
|
||||||
|
# Configure iSCSI backend for Cinder
|
||||||
|
#
|
||||||
|
#
|
||||||
|
# === Parameters
|
||||||
|
#
|
||||||
|
# [*iscsi_ip_address*]
|
||||||
|
# (required) IP address of iSCSI target.
|
||||||
|
#
|
||||||
|
# [*volume_group*]
|
||||||
|
# (optional) Cinder volume group name.
|
||||||
|
# Defaults to 'cinder-volumes'.
|
||||||
|
#
|
||||||
|
|
||||||
|
define cloud::volume::backend::iscsi (
|
||||||
|
$iscsi_ip_address,
|
||||||
|
$volume_group = 'cinder-volumes',
|
||||||
|
$volume_backend_name = $name,
|
||||||
|
) {
|
||||||
|
|
||||||
|
|
||||||
|
cinder::backend::iscsi { $name:
|
||||||
|
iscsi_ip_address => $iscsi_ip_address,
|
||||||
|
volume_group => $volume_group,
|
||||||
|
}
|
||||||
|
|
||||||
|
@cinder::type { $volume_backend_name:
|
||||||
|
set_key => 'volume_backend_name',
|
||||||
|
set_value => $volume_backend_name,
|
||||||
|
notify => Service['cinder-volume']
|
||||||
|
}
|
||||||
|
}
|
@@ -83,8 +83,16 @@ class cloud::volume::storage(
|
|||||||
$netapp_backends = { }
|
$netapp_backends = { }
|
||||||
}
|
}
|
||||||
|
|
||||||
|
if has_key($cinder_backends, 'iscsi') {
|
||||||
|
$iscsi_backends = $cinder_backends['iscsi']
|
||||||
|
create_resources('cloud::volume::backend::iscsi', $iscsi_backends)
|
||||||
|
}
|
||||||
|
else {
|
||||||
|
$iscsi_backends = { }
|
||||||
|
}
|
||||||
|
|
||||||
class { 'cinder::backends':
|
class { 'cinder::backends':
|
||||||
enabled_backends => keys(merge($rbd_backends, $netapp_backends))
|
enabled_backends => keys(merge($rbd_backends, $netapp_backends, $iscsi_backends))
|
||||||
}
|
}
|
||||||
|
|
||||||
# Manage Volume types.
|
# Manage Volume types.
|
||||||
|
@@ -55,6 +55,12 @@ describe 'cloud::volume::storage' do
|
|||||||
'netapp_login' => 'joe',
|
'netapp_login' => 'joe',
|
||||||
'netapp_password' => 'secret'
|
'netapp_password' => 'secret'
|
||||||
}
|
}
|
||||||
|
},
|
||||||
|
'iscsi' => {
|
||||||
|
'fast' => {
|
||||||
|
'iscsi_ip_address' => '10.0.0.1',
|
||||||
|
'volume_group' => 'fast-vol'
|
||||||
|
}
|
||||||
}
|
}
|
||||||
},
|
},
|
||||||
:ks_keystone_internal_proto => 'http',
|
:ks_keystone_internal_proto => 'http',
|
||||||
@@ -132,6 +138,19 @@ describe 'cloud::volume::storage' do
|
|||||||
end
|
end
|
||||||
end
|
end
|
||||||
|
|
||||||
|
context 'with iSCSI backend' do
|
||||||
|
it 'configures iSCSI volume driver' do
|
||||||
|
should contain_cinder_config('fast/volume_backend_name').with_value('fast')
|
||||||
|
should contain_cinder_config('fast/iscsi_ip_address').with_value('10.0.0.1')
|
||||||
|
should contain_cinder_config('fast/volume_group').with_value('fast-vol')
|
||||||
|
should contain_cinder__type('fast').with(
|
||||||
|
:set_key => 'volume_backend_name',
|
||||||
|
:set_value => 'fast',
|
||||||
|
:notify => 'Service[cinder-volume]'
|
||||||
|
)
|
||||||
|
end
|
||||||
|
end
|
||||||
|
|
||||||
context 'with two RBD backends' do
|
context 'with two RBD backends' do
|
||||||
before :each do
|
before :each do
|
||||||
params.merge!(
|
params.merge!(
|
||||||
@@ -185,7 +204,7 @@ describe 'cloud::volume::storage' do
|
|||||||
context 'with all backends enabled' do
|
context 'with all backends enabled' do
|
||||||
it 'configure all cinder backends' do
|
it 'configure all cinder backends' do
|
||||||
should contain_class('cinder::backends').with(
|
should contain_class('cinder::backends').with(
|
||||||
:enabled_backends => ['lowcost', 'premium']
|
:enabled_backends => ['lowcost', 'premium', 'fast']
|
||||||
)
|
)
|
||||||
end
|
end
|
||||||
end
|
end
|
||||||
|
Reference in New Issue
Block a user