Merge "Add support for iscsid configuration"

This commit is contained in:
Zuul 2021-06-28 10:47:27 +00:00 committed by Gerrit Code Review
commit de68e1eace
4 changed files with 123 additions and 0 deletions

58
manifests/iscsid.pp Normal file
View File

@ -0,0 +1,58 @@
# == Class: openstacklib::iscsid
#
# Installs and configures the iscsid daemon
#
# == Parameters
#
# [*enabled*]
# (optional) Should the service be enabled.
# Defaults to true.
#
# [*manage_service*]
# (optional) Whether the service should be managed by Puppet.
# Defaults to true.
#
# [*package_ensure*]
# (optional) ensure state for package.
# Defaults to 'present'
#
class openstacklib::iscsid(
$enabled = true,
$manage_service = true,
$package_ensure = 'present'
) {
include openstacklib::params
package { 'open-iscsi':
ensure => $package_ensure,
name => $::openstacklib::params::open_iscsi_package_name,
tag => 'openstack',
}
# In CentOS9/RHEL9 initiatorname.iscsi is not created automatically
# so should be created
exec { 'create-initiatorname-file':
command => 'echo "InitiatorName=`/usr/sbin/iscsi-iname`" > /etc/iscsi/initiatorname.iscsi',
path => ['/usr/bin','/usr/sbin','/bin','/usr/bin'],
unless => 'test -e /etc/iscsi/initiatorname.iscsi',
require => Package['open-iscsi'],
}
if $manage_service {
if $enabled {
$service_ensure = 'running'
} else {
$service_ensure = 'stopped'
}
# iscsid service is started automatically when iscsiadm command is
# executed but there is no harm even if the service is already started.
service { 'iscsid':
ensure => $service_ensure,
enable => $enabled,
}
Package['open-iscsi'] ~> Service['iscsid']
Exec['create-initiatorname-file'] ~> Service['iscsid']
}
}

View File

@ -9,4 +9,17 @@ class openstacklib::params {
$pyvers = $::openstacklib::defaults::pyvers
$openstackclient_package_name = "python${pyvers}-openstackclient"
case $::osfamily {
'RedHat': {
$open_iscsi_package_name = 'iscsi-initiator-utils'
}
'Debian': {
$open_iscsi_package_name = 'open-iscsi'
}
default:{
fail("Unsupported osfamily: ${::osfamily} operatingsystem: ${::operatingsystem}, \
module ${module_name} only support osfamily RedHat and Debian")
}
}
}

View File

@ -0,0 +1,5 @@
---
features:
- |
The new ``openstacklib::iscsid`` class has been added. This class can be
used to set up basic configurations for the iscsid service.

View File

@ -0,0 +1,47 @@
require 'spec_helper'
describe 'openstacklib::iscsid' do
shared_examples_for 'openstacklib::iscsid' do
context 'with default params' do
it { is_expected.to contain_package('open-iscsi').with(
:name => platform_params[:open_iscsi_package_name],
:ensure => 'present',
:tag => 'openstack',
)}
it { is_expected.to contain_exec('create-initiatorname-file').with({
:command => 'echo "InitiatorName=`/usr/sbin/iscsi-iname`" > /etc/iscsi/initiatorname.iscsi',
:path => ['/usr/bin','/usr/sbin','/bin','/usr/bin'],
:unless => 'test -e /etc/iscsi/initiatorname.iscsi',
}).that_requires('Package[open-iscsi]')}
it { is_expected.to contain_service('iscsid').with(
:ensure => 'running',
:enable => true,
) }
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
let(:platform_params) do
case facts[:osfamily]
when 'Debian'
{ :open_iscsi_package_name => 'open-iscsi' }
when 'RedHat'
{ :open_iscsi_package_name => 'iscsi-initiator-utils' }
end
end
it_behaves_like 'openstacklib::iscsid'
end
end
end