
Use Hash values instead of Array values to avoid unnecessary conversion between actual value type and internal data type. This allows us to avoid potential issues caused by tricky parsing or conversion. Note that this could not be backword compatible and users have to update their manifests to adopt to this change. Change-Id: Id4a32752eb1073c6467d089bc97c8271741feba0
128 lines
4.1 KiB
Puppet
128 lines
4.1 KiB
Puppet
# == Class: cinder::backend::vstorage
|
|
#
|
|
# Configures Cinder to use VStorage volume driver.
|
|
#
|
|
# === Parameters
|
|
#
|
|
# [*cluster_name*]
|
|
# (required) Cluster name.
|
|
#
|
|
# [*cluster_password*]
|
|
# (required) Cluster password.
|
|
#
|
|
# [*volume_backend_name*]
|
|
# (optional) Allows for the volume_backend_name to be separate of $name.
|
|
# Defaults to: $name
|
|
#
|
|
# [*backend_availability_zone*]
|
|
# (Optional) Availability zone for this volume backend.
|
|
# If not set, the storage_availability_zone option value
|
|
# is used as the default for all backends.
|
|
# Defaults to $facts['os_service_default'].
|
|
#
|
|
# [*shares_config_path*]
|
|
# (optional) Shares config file path.
|
|
# Defaults to: /etc/cinder/vzstorage_shares
|
|
#
|
|
# [*use_sparsed_volumes*]
|
|
# (optional) Whether or not to use sparsed volumes.
|
|
# Defaults to: $facts['os_service_default']
|
|
#
|
|
# [*used_ratio*]
|
|
# (optional) Used ratio.
|
|
# Defaults to: $facts['os_service_default']
|
|
#
|
|
# [*mount_point_base*]
|
|
# (optional) Mount point base path.
|
|
# Defaults to: $facts['os_service_default']
|
|
#
|
|
# [*default_volume_format*]
|
|
# (optional) Default volume format.
|
|
# Defaults to: $facts['os_service_default']
|
|
#
|
|
# [*manage_volume_type*]
|
|
# (Optional) Whether or not manage Cinder Volume type.
|
|
# If set to true, a Cinder Volume type will be created
|
|
# with volume_backend_name=$volume_backend_name key/value.
|
|
# Defaults to: false
|
|
#
|
|
# [*mount_user*]
|
|
# (optional) Mount user.
|
|
# Defaults to: $::cinder::params::user
|
|
#
|
|
# [*mount_group*]
|
|
# (optional) Mount group.
|
|
# Defaults to: root
|
|
#
|
|
# [*mount_permissions*]
|
|
# (optional) Mount permissions.
|
|
# Defaults to: 0770
|
|
#
|
|
# [*manage_package*]
|
|
# (optional) Ensures VStorage client package is installed if true.
|
|
# Defaults to: true
|
|
#
|
|
define cinder::backend::vstorage (
|
|
$cluster_name,
|
|
$cluster_password,
|
|
$volume_backend_name = $name,
|
|
$backend_availability_zone = $facts['os_service_default'],
|
|
Stdlib::Absolutepath $shares_config_path = '/etc/cinder/vzstorage_shares',
|
|
$use_sparsed_volumes = $facts['os_service_default'],
|
|
$used_ratio = $facts['os_service_default'],
|
|
$mount_point_base = $facts['os_service_default'],
|
|
$default_volume_format = $facts['os_service_default'],
|
|
Boolean $manage_volume_type = false,
|
|
$mount_user = undef,
|
|
$mount_group = 'root',
|
|
$mount_permissions = '0770',
|
|
Boolean $manage_package = true,
|
|
) {
|
|
|
|
include cinder::deps
|
|
include cinder::params
|
|
|
|
$mount_user_real = pick($mount_user, $::cinder::params::user)
|
|
|
|
cinder_config {
|
|
"${name}/volume_backend_name": value => $volume_backend_name;
|
|
"${name}/backend_availability_zone": value => $backend_availability_zone;
|
|
"${name}/volume_driver": value => 'cinder.volume.drivers.vzstorage.VZStorageDriver';
|
|
"${name}/vzstorage_shares_config": value => $shares_config_path;
|
|
"${name}/vzstorage_sparsed_volumes": value => $use_sparsed_volumes;
|
|
"${name}/vzstorage_used_ratio": value => $used_ratio;
|
|
"${name}/vzstorage_mount_point_base": value => $mount_point_base;
|
|
"${name}/vzstorage_default_volume_format": value => $default_volume_format;
|
|
}
|
|
|
|
if $manage_volume_type {
|
|
cinder_type { $volume_backend_name:
|
|
ensure => present,
|
|
properties => {'vz:volume_format' => 'qcow2'},
|
|
}
|
|
cinder_type { "${volume_backend_name}-ploop":
|
|
ensure => present,
|
|
properties => {'vz:volume_format' => 'ploop'},
|
|
}
|
|
}
|
|
|
|
if $manage_package {
|
|
ensure_packages( 'vstorage-client', {
|
|
ensure => present,
|
|
tag => 'cinder-support-package',
|
|
})
|
|
}
|
|
|
|
$mount_opts = ['-u', $mount_user_real, '-g', $mount_group, '-m', $mount_permissions]
|
|
|
|
file { $shares_config_path:
|
|
content => inline_template("${cluster_name}:${cluster_password} <%= @mount_opts %>"),
|
|
owner => 'root',
|
|
group => $::cinder::params::group,
|
|
mode => '0640',
|
|
require => Anchor['cinder::install::end'],
|
|
notify => Anchor['cinder::service::begin'],
|
|
}
|
|
|
|
}
|