83 # [*volume_api_class*]
84 # (optional) The name of the class that nova will use to access volumes. Cinder is the only option.
85 # Defaults to 'nova.volume.cinder.API'
Since $volume_api_class is optional, the requirement for cinder should be optional as well.
However, even when volume_api_class is set to false, cinder is included in api.pp:
From manifests/api.pp
83 # [*volume_ api_class* ] cinder. API'
84 # (optional) The name of the class that nova will use to access volumes. Cinder is the only option.
85 # Defaults to 'nova.volume.
Since $volume_api_class is optional, the requirement for cinder should be optional as well.
However, even when volume_api_class is set to false, cinder is included in api.pp:
209 include ::cinder::client
This makes creating a puppet module that deploys nova as described in the kilo docs (http:// docs.openstack. org/kilo/ install- guide/install/ apt/content/ ch_nova. html) difficult, as the latter do not include cinder at the compute stage.
Something similar to what might need to be done here is done in manifests/db.pp, where the required backend class depends on what is selected:
case $database_ connection_ real {
/^mysql: \/\//: {
$backend_ package = false :bindings: :python'
/^postgresql: \/\//: {
$backend_ package = false :lib::python'
/^sqlite: \/\//: {
$backend_ package = $::nova: :params: :sqlite_ package_ name
fail( 'Unsupported backend configured')
require 'mysql::bindings'
require 'mysql:
}
require 'postgresql:
}
}
default: {
}