puppet-nova/manifests/cell_v2/map_instances.pp

50 lines
1.5 KiB
Puppet

# == Class: nova::cell_v2::map_instances
#
# Resource to run the map_instances action for cell v2
#
# === Parameters
#
# [*cell_uuid*]
# (String) Cell UUID to map unmigrated instances to. It is recommended to use
# this rather than cell name. Either cell_uuid or cell_name must be provided.
# Defaults to undef.
#
# [*cell_name*]
# (String) Cell name to map the unmigrated instances to. We will attempt to
# extract the cell uuid using the name as the command requires a cell uuid.
# NOTE: This will not work if you have multiple cells with the same name.
# Defaults to undef.
#
# [*extra_params*]
# (String) Extra parameters to pass to the nova-manage commands.
# Defaults to ''.
#
class nova::cell_v2::map_instances (
$cell_uuid = undef,
$cell_name = undef,
$extra_params = '',
) {
include ::nova::deps
include ::nova::params
if (!$cell_uuid and !$cell_name) {
fail('Either cell_uuid or cell_name must be provided')
}
if ($cell_uuid) {
$cell_uuid_real = $cell_uuid
} else {
# NOTE(aschultz): This is what breaks if you have multiple cells with the
# same name. So that's why using cell_uuid is better.
$cell_uuid_real = "$(nova-manage cell_v2 list_cells | sed -e '1,3d' -e '\$d' | awk -F ' *| *' '\$2 == \"${cell_name}\" {print \$4}')"
}
exec { 'nova-cell_v2-map_instances':
path => ['/bin', '/usr/bin'],
command => "nova-manage ${extra_params} cell_v2 map_instances --cell_uuid=${cell_uuid_real}",
user => $::nova::params::nova_user,
refreshonly => true,
}
}