Add support of Block Device backend for Cinder
This backend provide better storage performance by attaching HDD to VM via cinder block device driver. Change-Id: Idb3475a35a7825bb4c97ed5bcdd5dc436e6b9bcf
This commit is contained in:
parent
06e52c2078
commit
42615fe7c9
89
manifests/backend/bdd.pp
Normal file
89
manifests/backend/bdd.pp
Normal file
@ -0,0 +1,89 @@
|
||||
#
|
||||
# Define: cinder::backend::bdd
|
||||
#
|
||||
# This class activate Cinder Block Device driver backend
|
||||
#
|
||||
# === Parameters:
|
||||
#
|
||||
# [*iscsi_ip_address*]
|
||||
# (Required) The IP address that the iSCSI daemon is listening on
|
||||
#
|
||||
# [*available_devices*]
|
||||
# (Required) List of all available devices. Real hard disks.
|
||||
# Should be a string.
|
||||
#
|
||||
# [*volume_backend_name*]
|
||||
# (optional) Allows for the volume_backend_name to be separate of $name.
|
||||
# Defaults to: $name
|
||||
#
|
||||
# [*volume_driver*]
|
||||
# (Optional) Driver to use for volume creation
|
||||
# Defaults to 'cinder.volume.drivers.block_device.BlockDeviceDriver'.
|
||||
#
|
||||
# [*volume_group*]
|
||||
# (Optional) Name for the VG that will contain exported volumes
|
||||
# Defaults to $::os_service_default
|
||||
#
|
||||
# [*volumes_dir*]
|
||||
# (Optional) Volume configuration file storage directory
|
||||
# Defaults to '/var/lib/cinder/volumes'.
|
||||
#
|
||||
# [*iscsi_helper*]
|
||||
# (Optional) iSCSI target user-land tool to use.
|
||||
# Defaults to fake.
|
||||
#
|
||||
# [*iscsi_protocol*]
|
||||
# (Optional) Protocol to use as iSCSI driver
|
||||
# Defaults to $::os_service_default.
|
||||
#
|
||||
# [*volume_clear*]
|
||||
# (Optional) Method used to wipe old volumes
|
||||
# Defaults to $::os_service_default.
|
||||
#
|
||||
# [*extra_options*]
|
||||
# (optional) Hash of extra options to pass to the backend
|
||||
# Defaults to: {}
|
||||
# Example :
|
||||
# { 'bdd_backend/param1' => { 'value' => value1 } }
|
||||
#
|
||||
# === Examples
|
||||
#
|
||||
# cinder::backend::bdd { 'myBDDbackend':
|
||||
# iscsi_ip_address => '10.20.0.2',
|
||||
# available_devices => '/dev/sda,/dev/sdb'
|
||||
# }
|
||||
#
|
||||
# === Authors
|
||||
#
|
||||
# Denis Egorenko <degorenko@mirantis.com>
|
||||
#
|
||||
define cinder::backend::bdd (
|
||||
$iscsi_ip_address,
|
||||
$available_devices,
|
||||
$volume_backend_name = $name,
|
||||
$volume_driver = 'cinder.volume.drivers.block_device.BlockDeviceDriver',
|
||||
$volume_group = $::os_service_default,
|
||||
$volumes_dir = '/var/lib/cinder/volumes',
|
||||
$iscsi_helper = 'fake',
|
||||
$iscsi_protocol = $::os_service_default,
|
||||
$volume_clear = $::os_service_default,
|
||||
$extra_options = {},
|
||||
) {
|
||||
|
||||
include ::cinder::params
|
||||
|
||||
cinder_config {
|
||||
"${name}/available_devices": value => $available_devices;
|
||||
"${name}/volume_backend_name": value => $volume_backend_name;
|
||||
"${name}/volume_driver": value => $volume_driver;
|
||||
"${name}/iscsi_ip_address": value => $iscsi_ip_address;
|
||||
"${name}/iscsi_helper": value => $iscsi_helper;
|
||||
"${name}/volume_group": value => $volume_group;
|
||||
"${name}/volumes_dir": value => $volumes_dir;
|
||||
"${name}/iscsi_protocol": value => $iscsi_protocol;
|
||||
"${name}/volume_clear": value => $volume_clear;
|
||||
}
|
||||
|
||||
create_resources('cinder_config', $extra_options)
|
||||
|
||||
}
|
72
spec/defines/cinder_backend_bdd_spec.rb
Normal file
72
spec/defines/cinder_backend_bdd_spec.rb
Normal file
@ -0,0 +1,72 @@
|
||||
require 'spec_helper'
|
||||
|
||||
describe 'cinder::backend::bdd' do
|
||||
|
||||
let(:title) { 'hippo' }
|
||||
|
||||
let :params do {
|
||||
:iscsi_ip_address => '127.0.0.2',
|
||||
:available_devices => '/dev/sda',
|
||||
}
|
||||
end
|
||||
|
||||
shared_examples_for 'cinder block device' do
|
||||
context 'with default parameters' do
|
||||
it 'should configure bdd driver in cinder.conf with defaults' do
|
||||
should contain_cinder_config('hippo/volume_backend_name').with_value('hippo')
|
||||
should contain_cinder_config('hippo/volume_driver').with_value('cinder.volume.drivers.block_device.BlockDeviceDriver')
|
||||
should contain_cinder_config('hippo/available_devices').with_value('/dev/sda')
|
||||
should contain_cinder_config('hippo/iscsi_helper').with_value('fake')
|
||||
should contain_cinder_config('hippo/volumes_dir').with_value('/var/lib/cinder/volumes')
|
||||
should contain_cinder_config('hippo/iscsi_ip_address').with_value('127.0.0.2')
|
||||
should contain_cinder_config('hippo/volume_group').with_value('<SERVICE DEFAULT>')
|
||||
should contain_cinder_config('hippo/iscsi_protocol').with_value('<SERVICE DEFAULT>')
|
||||
should contain_cinder_config('hippo/volume_clear').with_value('<SERVICE DEFAULT>')
|
||||
end
|
||||
end
|
||||
|
||||
context 'with optional parameters' do
|
||||
before :each do
|
||||
params.merge!({
|
||||
:iscsi_ip_address => '10.20.0.2',
|
||||
:available_devices => '/dev/sdb,/dev/sdc',
|
||||
:volumes_dir => '/var/lib/cinder/bdd-volumes',
|
||||
:volume_clear => 'zero',
|
||||
:volume_group => 'cinder',
|
||||
})
|
||||
end
|
||||
|
||||
it 'should configure bdd driver in cinder.conf' do
|
||||
should contain_cinder_config('hippo/available_devices').with_value('/dev/sdb,/dev/sdc')
|
||||
should contain_cinder_config('hippo/volumes_dir').with_value('/var/lib/cinder/bdd-volumes')
|
||||
should contain_cinder_config('hippo/iscsi_ip_address').with_value('10.20.0.2')
|
||||
should contain_cinder_config('hippo/volume_group').with_value('cinder')
|
||||
should contain_cinder_config('hippo/volume_clear').with_value('zero')
|
||||
end
|
||||
end
|
||||
|
||||
context 'block device backend with additional configuration' do
|
||||
before do
|
||||
params.merge!({:extra_options => {'hippo/param1' => { 'value' => 'value1' }}})
|
||||
end
|
||||
|
||||
it 'configure vmdk backend with additional configuration' do
|
||||
is_expected.to contain_cinder_config('hippo/param1').with({
|
||||
:value => 'value1'
|
||||
})
|
||||
end
|
||||
end
|
||||
end
|
||||
|
||||
on_supported_os({
|
||||
:supported_os => OSDefaults.get_supported_os
|
||||
}).each do |os,facts|
|
||||
context "on #{os}" do
|
||||
let (:facts) do
|
||||
facts.merge!(OSDefaults.get_facts())
|
||||
end
|
||||
|
||||
it_configures 'cinder block device'
|
||||
end
|
||||
end
|
||||
end
|
Loading…
Reference in New Issue
Block a user