Takashi Kajinami bc10dfefde Globally support system scope credentials
After spending huge effort to understand the exact requirements to
enforce SRBAC, we learned it's very difficult to find the required
scope in each credential. This requires understanding implementation of
client-side as well as server-side, and requirement might be different
according to the deployment architecture or features used.

Instead of implementing support based on the actual implementation,
this introduces support for system scope credentials to all places
where keystone user credential is defined, and make all credential
configurations consistent.

Change-Id: I6e9a3d93f33069c2f1f7bc10c48ad61ce9357682
2022-03-04 01:54:33 +09:00

103 lines
3.1 KiB
Puppet

# == Class: manila::compute::nova
#
# Setup and configure Nova communication
#
# === Parameters
#
# [*insecure*]
# (optional) Verify HTTPS connections
# Defaults to $::os_service_default
#
# [*auth_url*]
# (optional) Authentication URL
# Defaults to $::os_service_default
#
# [*auth_type*]
# (optional) Authentication type to load
# Defaults to 'password'
#
# [*cafile*]
# (optional) PEM encoded Certificate Authority to use when verifying HTTPS
# connections.
# Defaults to $::os_service_default
#
# [*user_domain_name*]
# (optional) User's domain name
# Defaults to 'Default'
#
# [*project_domain_name*]
# (optional) Domain name containing project
# Defaults to 'Default'
#
# [*project_name*]
# (optional) Project name to scope to
# Defaults to 'services'
#
# [*system_scope*]
# (optional) Scope for system operations.
# Defaults to $::os_service_default
#
# [*region_name*]
# (optional) Region name for connecting to nova
# Defaults to $::os_service_default
#
# [*endpoint_type*]
# (optional) The type of nova endpoint to use when
# looking up in the keystone catalog.
# Defaults to $::os_service_default
#
# [*username*]
# (optional) Username
# Defaults to 'nova'
#
# [*password*]
# (optional) User's password
# Defaults to $::os_service_default
#
# [*api_microversion*]
# (optional) Version of Nova API to be used
# Defaults to $::os_service_default
#
class manila::compute::nova (
$insecure = $::os_service_default,
$auth_url = $::os_service_default,
$auth_type = 'password',
$cafile = $::os_service_default,
$user_domain_name = 'Default',
$project_domain_name = 'Default',
$project_name = 'services',
$system_scope = $::os_service_default,
$region_name = $::os_service_default,
$endpoint_type = $::os_service_default,
$username = 'nova',
$password = $::os_service_default,
$api_microversion = $::os_service_default,
) {
include manila::deps
if is_service_default($system_scope) {
$project_name_real = $project_name
$project_domain_name_real = $project_domain_name
} else {
$project_name_real = $::os_service_default
$project_domain_name_real = $::os_service_default
}
manila_config {
'nova/insecure': value => $insecure;
'nova/auth_url': value => $auth_url;
'nova/auth_type': value => $auth_type;
'nova/cafile': value => $cafile;
'nova/region_name': value => $region_name;
'nova/endpoint_type': value => $endpoint_type;
'nova/username': value => $username;
'nova/user_domain_name': value => $user_domain_name;
'nova/password': value => $password, secret => true;
'nova/project_name': value => $project_name_real;
'nova/project_domain_name': value => $project_domain_name_real;
'nova/system_scope': value => $system_scope;
'nova/api_microversion': value => $api_microversion;
}
}