X-Git-Url: https://git.donarmstrong.com/?p=dsa-puppet.git;a=blobdiff_plain;f=3rdparty%2Fmodules%2Fcinder%2Fmanifests%2Ftype.pp;fp=3rdparty%2Fmodules%2Fcinder%2Fmanifests%2Ftype.pp;h=435f9b2930eac79d1790edb1288cb6e66e351396;hp=0000000000000000000000000000000000000000;hb=4631045ebb77ee8622f6fa09277a50c372bcc02e;hpb=3d4dc4fd9e59bd0e07646c99f6b356c7d9d859aa diff --git a/3rdparty/modules/cinder/manifests/type.pp b/3rdparty/modules/cinder/manifests/type.pp new file mode 100644 index 00000000..435f9b29 --- /dev/null +++ b/3rdparty/modules/cinder/manifests/type.pp @@ -0,0 +1,81 @@ +# ==Define: cinder::type +# +# Creates cinder type and assigns backends. +# +# === Parameters +# +# [*os_password*] +# (required) The keystone tenant:username password. +# +# [*set_key*] +# (optional) Must be used with set_value. Accepts a single string be used +# as the key in type_set +# +# [*set_value*] +# (optional) Accepts list of strings or singular string. A list of values +# passed to type_set +# +# [*os_tenant_name*] +# (optional) The keystone tenant name. Defaults to 'admin'. +# +# [*os_username*] +# (optional) The keystone user name. Defaults to 'admin. +# +# [*os_auth_url*] +# (optional) The keystone auth url. Defaults to 'http://127.0.0.1:5000/v2.0/'. +# +# [*os_region_name*] +# (optional) The keystone region name. Default is unset. +# +# Author: Andrew Woodward + +define cinder::type ( + $os_password, + $set_key = undef, + $set_value = undef, + $os_tenant_name = 'admin', + $os_username = 'admin', + $os_auth_url = 'http://127.0.0.1:5000/v2.0/', + $os_region_name = undef, + ) { + + $volume_name = $name + +# TODO: (xarses) This should be moved to a ruby provider so that among other +# reasons, the credential discovery magic can occur like in neutron. + + $cinder_env = [ + "OS_TENANT_NAME=${os_tenant_name}", + "OS_USERNAME=${os_username}", + "OS_PASSWORD=${os_password}", + "OS_AUTH_URL=${os_auth_url}", + ] + + if $os_region_name { + $region_env = ["OS_REGION_NAME=${os_region_name}"] + } + else { + $region_env = [] + } + + exec {"cinder type-create ${volume_name}": + command => "cinder type-create ${volume_name}", + unless => "cinder type-list | grep -qP '\\b${volume_name}\\b'", + environment => concat($cinder_env, $region_env), + require => Package['python-cinderclient'], + path => ['/usr/bin', '/bin'], + } + + if ($set_value and $set_key) { + Exec["cinder type-create ${volume_name}"] -> + cinder::type_set { $set_value: + type => $volume_name, + key => $set_key, + os_password => $os_password, + os_tenant_name => $os_tenant_name, + os_username => $os_username, + os_auth_url => $os_auth_url, + os_region_name => $os_region_name, + } + } +}