diff options
author | Jiri Stransky <jistr@redhat.com> | 2017-06-27 15:34:59 +0200 |
---|---|---|
committer | Jiri Stransky <jistr@redhat.com> | 2017-06-27 15:34:59 +0200 |
commit | f88690220aa991caf78201944fd4fd4424a3a0dd (patch) | |
tree | 48de2017954661f3105bcde243e4ce31d2339f6d | |
parent | 3fcafacc1e3de1c3fad756135889f2f4a3c4fbe2 (diff) |
Allow disabling udev usage by LVM
Disabling udev usage from LVM seems to be the only observed working
way of running containerized cinder-volume with local LVM backend.
I didn't come across reports that not using udev would have negative
impact on the functionality.
Additional info at
https://groups.google.com/forum/#!topic/docker-user/n4Xtvsb4RAw
Change-Id: I1bf395a6228dba66fa6bf9b8bcc9f3ac3d922a49
Related-Bug: #1700140
-rw-r--r-- | manifests/profile/base/lvm.pp | 40 | ||||
-rw-r--r-- | spec/classes/tripleo_profile_base_lvm_spec.rb | 53 |
2 files changed, 93 insertions, 0 deletions
diff --git a/manifests/profile/base/lvm.pp b/manifests/profile/base/lvm.pp new file mode 100644 index 0000000..91810ce --- /dev/null +++ b/manifests/profile/base/lvm.pp @@ -0,0 +1,40 @@ +# Copyright 2017 Red Hat, Inc. +# +# 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. +# +# == Class: tripleo::profile::base::lvm +# +# LVM profile for tripleo +# +# === Parameters +# +# [*enable_udev*] +# (Optional) Whether to enable udev usage by LVM. +# Defaults to true +# +class tripleo::profile::base::lvm ( + $enable_udev = true, +) { + + if $enable_udev { + $udev_options_value = 1 + } else { + $udev_options_value = 0 + } + augeas {'udev options in lvm.conf': + context => '/files/etc/lvm/lvm.conf/activation/dict/', + changes => ["set udev_sync/int ${udev_options_value}", + "set udev_rules/int ${udev_options_value}"], + } + +} diff --git a/spec/classes/tripleo_profile_base_lvm_spec.rb b/spec/classes/tripleo_profile_base_lvm_spec.rb new file mode 100644 index 0000000..ac0031f --- /dev/null +++ b/spec/classes/tripleo_profile_base_lvm_spec.rb @@ -0,0 +1,53 @@ +# coding: utf-8 +# +# Copyright (C) 2017 Red Hat, Inc. +# +# 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. +# + +require 'spec_helper' + +describe 'tripleo::profile::base::lvm' do + + shared_examples_for 'tripleo::profile::base::lvm' do + + context 'with default params' do + it 'should enable udev_sync and udev_rules' do + is_expected.to contain_augeas('udev options in lvm.conf') + .with_changes(["set udev_sync/int 1", + "set udev_rules/int 1"]) + end + end + + context 'with enable_udev false' do + let(:params) { { :enable_udev => false } } + + it 'should disable udev_sync and udev_rules' do + is_expected.to contain_augeas('udev options in lvm.conf') + .with_changes(["set udev_sync/int 0", + "set udev_rules/int 0"]) + end + end + end + + + on_supported_os.each do |os, facts| + context 'on #{os}' do + let(:facts) do + facts.merge({ :hostname => 'node.example.com' }) + end + + it_behaves_like 'tripleo::profile::base::lvm' + end + end +end |