From 2ed840369b19aed0bd5d1c0bb04aca221c4a8c09 Mon Sep 17 00:00:00 2001 From: Christian Schwede Date: Wed, 30 Nov 2016 20:37:57 +0000 Subject: [PATCH] Add swift::storage::loopbacks class This patch adds a wrapper for the storage::loopback definition, making it possible to add multiple loopback devices using a Hiera hash. Loopback devices are the preferred method if there is only a single local disk with one partition, instead of just using a directory that is created on the root filesystem. This patch is very similar to I3692b17988f8eacb7b8a7df1006a7fe24f587065. Change-Id: I11a230b7cf08a4cc2a144d9af0e6c81bb3827348 --- manifests/storage/loopbacks.pp | 29 +++++++++++ ...wift-loopbacks-class-9b24b216099c7d98.yaml | 5 ++ spec/classes/swift_storage_loopbacks_spec.rb | 51 +++++++++++++++++++ 3 files changed, 85 insertions(+) create mode 100644 manifests/storage/loopbacks.pp create mode 100644 releasenotes/notes/swift-loopbacks-class-9b24b216099c7d98.yaml create mode 100644 spec/classes/swift_storage_loopbacks_spec.rb diff --git a/manifests/storage/loopbacks.pp b/manifests/storage/loopbacks.pp new file mode 100644 index 00000000..39a2e5cc --- /dev/null +++ b/manifests/storage/loopbacks.pp @@ -0,0 +1,29 @@ +# Copyright 2016 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: swift::storage::loopbacks +# +# Class wrapper for the benefit of Hiera users +# +# === Parameters: +# +# [*args*] A Swift 'loopback' config hash +# Optional. Defaults to a empty hash +# +# [*defaults*] A config hash +# Optional. Defaults to a empty hash +# +class swift::storage::loopbacks($args = {}, $defaults = {}) { + create_resources(swift::storage::loopback, $args, $defaults) +} diff --git a/releasenotes/notes/swift-loopbacks-class-9b24b216099c7d98.yaml b/releasenotes/notes/swift-loopbacks-class-9b24b216099c7d98.yaml new file mode 100644 index 00000000..b546f869 --- /dev/null +++ b/releasenotes/notes/swift-loopbacks-class-9b24b216099c7d98.yaml @@ -0,0 +1,5 @@ +--- +features: + - Adds a wrapper class for the storage::loopback + definition, making it possible to add multiple loopback + devices using a Hiera hash. diff --git a/spec/classes/swift_storage_loopbacks_spec.rb b/spec/classes/swift_storage_loopbacks_spec.rb new file mode 100644 index 00000000..4be3d034 --- /dev/null +++ b/spec/classes/swift_storage_loopbacks_spec.rb @@ -0,0 +1,51 @@ +# Copyright 2016 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 'swift::storage::loopbacks' do + + shared_examples_for 'swift storage loopbacks' do + let :params do + { + :args => { + 'loop0' => { + 'seek' => '50000', + }, + 'loop1' => { + }, + }, + } + end + + it { + is_expected.to contain_swift__storage__loopback('loop0').with( + :seek => '50000') + is_expected.to contain_swift__storage__loopback('loop1') + } + 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 'swift storage loopbacks' + end + end + +end