diff --git a/manifests/backend/veritas_hyperscale.pp b/manifests/backend/veritas_hyperscale.pp new file mode 100644 index 00000000..a0b122ea --- /dev/null +++ b/manifests/backend/veritas_hyperscale.pp @@ -0,0 +1,53 @@ +# == define: cinder::backend::veritas_hyperscale +# +# Configures Cinder to use the Veritas HyperScale Block Storage driver +# +# === Parameters +# +# [*volume_backend_name*] +# (optional) The name of the cinder::backend::veritas_hyperscale ressource +# Defaults to $name. +# +# [*extra_options*] +# (optional) Hash of extra options to pass to the backend +# Defaults to: {} +# Example : +# { 'veritas_hyperscale_backend/param1' => { 'value' => value1 } } +# +# [*manage_volume_type*] +# (Optional) Whether or not manage Cinder Volume type. +# If set to true, a Cinde Volume type will be created +# with volume_backend_name=$volume_backend_name key/value. +# Defaults to false. +# +# === Authors +# +# Abhishek Kane +# +# === Copyright +# +# Copyright (c) 2017 Veritas Technologies LLC. +# + +define cinder::backend::veritas_hyperscale ( + $volume_backend_name = $name, + $extra_options = {}, + $manage_volume_type = false, +) { + + include ::cinder::deps + + cinder_config { + "${name}/volume_backend_name": value => $volume_backend_name; + "${name}/volume_driver": value => 'cinder.volume.drivers.veritas.vrtshyperscale.HyperScaleDriver'; + } + + if $manage_volume_type { + cinder_type { $name: + ensure => present, + properties => ["volume_backend_name=${name}"], + } + } + + create_resources('cinder_config', $extra_options) +} diff --git a/releasenotes/notes/veritas-hyperscale-driver-5c4030867bc68e69.yaml b/releasenotes/notes/veritas-hyperscale-driver-5c4030867bc68e69.yaml new file mode 100644 index 00000000..6ed6ed28 --- /dev/null +++ b/releasenotes/notes/veritas-hyperscale-driver-5c4030867bc68e69.yaml @@ -0,0 +1,3 @@ +--- +features: + - Add support for Veritas hyperscale backend diff --git a/spec/defines/cinder_backend_veritas_hyperscale_spec.rb b/spec/defines/cinder_backend_veritas_hyperscale_spec.rb new file mode 100644 index 00000000..655f450e --- /dev/null +++ b/spec/defines/cinder_backend_veritas_hyperscale_spec.rb @@ -0,0 +1,55 @@ +require 'spec_helper' + +describe 'cinder::backend::veritas_hyperscale' do + + let (:title) { 'Veritas_HyperScale' } + + let :params do { + :manage_volume_type => true, + } + end + + shared_examples_for 'veritas_hyperscale volume driver' do + it 'configures veritas_hyperscale volume driver' do + should contain_cinder_config("#{title}/volume_driver").with_value( + 'cinder.volume.drivers.veritas.vrtshyperscale.HyperScaleDriver') + should contain_cinder_config("#{title}/volume_backend_name").with_value( + "#{title}") + end + + describe 'veritas_hyperscale backend with additional configuration' do + before do + params.merge!({:extra_options => {"#{title}/param1" => {'value' => 'value1'}}}) + end + + it 'configure veritas_hyperscale backend with additional configuration' do + is_expected.to contain_cinder_config("#{title}/param1").with({ + :value => 'value1', + }) + end + end + end + + describe 'veritas_hyperScale backend with cinder type' do + before :each do + params.merge!({:manage_volume_type => true}) + end + it 'should create type with properties' do + should contain_cinder_type("#{title}").with( + :ensure => :present, :properties => ["volume_backend_name=#{title}"]) + 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 'veritas_hyperscale volume driver' + end + end +end +