From 364c76158f171102fbb7c1d18bcae7c5ad877a8c Mon Sep 17 00:00:00 2001 From: Alan Bishop Date: Thu, 15 Mar 2018 19:32:14 -0400 Subject: [PATCH] Add NFS backend for cinder-backup service Add a Cinder backup profile that uses NFS for the backend. Related-Bug: #1744174 Change-Id: Ic0adb294aa2e60243f8adaf167bdd75e42c8e20e --- manifests/profile/base/cinder/backup/nfs.pp | 36 +++++++++++ ...r-backup-nfs-backend-59bf771a58af65f6.yaml | 4 ++ ...leo_profile_base_cinder_backup_nfs_spec.rb | 59 +++++++++++++++++++ spec/fixtures/hieradata/default.yaml | 1 + 4 files changed, 100 insertions(+) create mode 100644 manifests/profile/base/cinder/backup/nfs.pp create mode 100644 releasenotes/notes/cinder-backup-nfs-backend-59bf771a58af65f6.yaml create mode 100644 spec/classes/tripleo_profile_base_cinder_backup_nfs_spec.rb diff --git a/manifests/profile/base/cinder/backup/nfs.pp b/manifests/profile/base/cinder/backup/nfs.pp new file mode 100644 index 000000000..81b9590b8 --- /dev/null +++ b/manifests/profile/base/cinder/backup/nfs.pp @@ -0,0 +1,36 @@ +# Copyright 2018 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::cinder::backup::nfs +# +# Cinder Backup NFS profile for tripleo +# +# === Parameters +# +# [*step*] +# (Optional) The current step in deployment. See tripleo-heat-templates +# for more details. +# Defaults to hiera('step') +# +class tripleo::profile::base::cinder::backup::nfs ( + $step = Integer(hiera('step')), +) { + + include ::tripleo::profile::base::cinder::backup + + if $step >= 4 { + include ::cinder::backup::nfs + } + +} diff --git a/releasenotes/notes/cinder-backup-nfs-backend-59bf771a58af65f6.yaml b/releasenotes/notes/cinder-backup-nfs-backend-59bf771a58af65f6.yaml new file mode 100644 index 000000000..bc3a4926b --- /dev/null +++ b/releasenotes/notes/cinder-backup-nfs-backend-59bf771a58af65f6.yaml @@ -0,0 +1,4 @@ +--- +features: + - | + Add the ability to deploy an NFS backend for the Cinder Backup service. diff --git a/spec/classes/tripleo_profile_base_cinder_backup_nfs_spec.rb b/spec/classes/tripleo_profile_base_cinder_backup_nfs_spec.rb new file mode 100644 index 000000000..6fc95fa3b --- /dev/null +++ b/spec/classes/tripleo_profile_base_cinder_backup_nfs_spec.rb @@ -0,0 +1,59 @@ +# +# Copyright (C) 2018 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::cinder::backup::nfs' do + shared_examples_for 'tripleo::profile::base::cinder::backup::nfs' do + let(:pre_condition) do + <<-EOF + class { '::tripleo::profile::base::cinder': step => #{params[:step]}, oslomsg_rpc_hosts => ['127.0.0.1'] } + class { '::tripleo::profile::base::cinder::backup': step => #{params[:step]} } + EOF + end + + context 'with step less than 4' do + let(:params) { { :step => 3 } } + + it 'should do nothing' do + is_expected.to contain_class('tripleo::profile::base::cinder::backup::nfs') + is_expected.to contain_class('tripleo::profile::base::cinder::backup') + is_expected.to_not contain_class('cinder::backup::nfs') + end + end + + context 'with step 4' do + let(:params) { { + :step => 4, + } } + + it 'should trigger complete configuration' do + is_expected.to contain_class('cinder::backup::nfs') + 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::cinder::backup::nfs' + end + end +end diff --git a/spec/fixtures/hieradata/default.yaml b/spec/fixtures/hieradata/default.yaml index 1a6c88b3f..9f24b193a 100644 --- a/spec/fixtures/hieradata/default.yaml +++ b/spec/fixtures/hieradata/default.yaml @@ -35,6 +35,7 @@ cinder_volume_short_bootstrap_node_name: 'node.example.com' cinder_volume_short_node_names: - 'c-vol-1' - 'c-vol-2' +cinder::backup::nfs::backup_share: '/mnt/backup' cinder::rabbit_password: 'password' cinder::keystone::authtoken::password: 'password' # gnocchi related items