Additional cell_v2 commands
This change exposes additional cell v2 management commands that can be used as part of managing cell v2. The map_instances and map_cell_and_hosts commands can be pulled in to be run as part of upgrades or general management. Change-Id: Ie731f3d5b8396786f579f80d87714ce2e949a5df
This commit is contained in:
parent
dc2f3a3586
commit
290b6422df
22
manifests/cell_v2/map_cell_and_hosts.pp
Normal file
22
manifests/cell_v2/map_cell_and_hosts.pp
Normal file
@ -0,0 +1,22 @@
|
|||||||
|
# == Class: nova::cell_v2::map_cell_and_hosts
|
||||||
|
#
|
||||||
|
# Class to run the map_cell_and_hosts action for cell v2
|
||||||
|
#
|
||||||
|
# === Parameters
|
||||||
|
#
|
||||||
|
# [*extra_params*]
|
||||||
|
# (String) Extra parameters to pass to the nova-manage commands.
|
||||||
|
# Defaults to ''.
|
||||||
|
#
|
||||||
|
class nova::cell_v2::map_cell_and_hosts (
|
||||||
|
$extra_params = '',
|
||||||
|
) {
|
||||||
|
|
||||||
|
include ::nova::deps
|
||||||
|
|
||||||
|
exec { 'nova-cell_v2-map_cell_and_hosts':
|
||||||
|
path => ['/bin', '/usr/bin'],
|
||||||
|
command => "nova-manage ${extra_params} cell_v2 map_cell_and_hosts",
|
||||||
|
refreshonly => true,
|
||||||
|
}
|
||||||
|
}
|
47
manifests/cell_v2/map_instances.pp
Normal file
47
manifests/cell_v2/map_instances.pp
Normal file
@ -0,0 +1,47 @@
|
|||||||
|
# == 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
|
||||||
|
|
||||||
|
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}",
|
||||||
|
refreshonly => true,
|
||||||
|
}
|
||||||
|
}
|
@ -0,0 +1,7 @@
|
|||||||
|
---
|
||||||
|
features:
|
||||||
|
- |
|
||||||
|
Add classes to expose refreshonly versions of the
|
||||||
|
"nova-manage cell_v2 map_cell_and_hosts" and
|
||||||
|
"nova-manage cell_v2 map_instances" commands that can be used to manage
|
||||||
|
cell v2.
|
47
spec/classes/nova_cell_v2_map_cell_and_hosts_spec.rb
Normal file
47
spec/classes/nova_cell_v2_map_cell_and_hosts_spec.rb
Normal file
@ -0,0 +1,47 @@
|
|||||||
|
require 'spec_helper'
|
||||||
|
|
||||||
|
describe 'nova::cell_v2::map_cell_and_hosts' do
|
||||||
|
|
||||||
|
shared_examples_for 'nova::cell_v2::map_cell_and_hosts' do
|
||||||
|
context 'with defaults' do
|
||||||
|
|
||||||
|
it {
|
||||||
|
is_expected.to contain_exec('nova-cell_v2-map_cell_and_hosts').with(
|
||||||
|
:path => ['/bin', '/usr/bin'],
|
||||||
|
:command => 'nova-manage cell_v2 map_cell_and_hosts',
|
||||||
|
:refreshonly => true,
|
||||||
|
)
|
||||||
|
}
|
||||||
|
end
|
||||||
|
|
||||||
|
context "overriding extra_params" do
|
||||||
|
let :params do
|
||||||
|
{
|
||||||
|
:extra_params => '--config-file /etc/nova/nova.conf'
|
||||||
|
}
|
||||||
|
end
|
||||||
|
|
||||||
|
it {
|
||||||
|
is_expected.to contain_exec('nova-cell_v2-map_cell_and_hosts').with(
|
||||||
|
:path => ['/bin', '/usr/bin'],
|
||||||
|
:command => 'nova-manage --config-file /etc/nova/nova.conf cell_v2 map_cell_and_hosts',
|
||||||
|
:refreshonly => true,
|
||||||
|
)
|
||||||
|
}
|
||||||
|
end
|
||||||
|
end
|
||||||
|
|
||||||
|
|
||||||
|
on_supported_os({
|
||||||
|
:supported_os => OSDefaults.get_supported_os
|
||||||
|
}).each do |os,facts|
|
||||||
|
context "on #{os}" do
|
||||||
|
let (:facts) do
|
||||||
|
facts.merge(OSDefaults.get_facts())
|
||||||
|
end
|
||||||
|
|
||||||
|
it_configures 'nova::cell_v2::map_cell_and_hosts'
|
||||||
|
end
|
||||||
|
end
|
||||||
|
|
||||||
|
end
|
49
spec/classes/nova_cell_v2_map_instances.rb
Normal file
49
spec/classes/nova_cell_v2_map_instances.rb
Normal file
@ -0,0 +1,49 @@
|
|||||||
|
require 'spec_helper'
|
||||||
|
|
||||||
|
describe 'nova::cell_v2::map_instances' do
|
||||||
|
|
||||||
|
shared_examples_for 'nova::cell_v2::map_instances' do
|
||||||
|
context 'with defaults' do
|
||||||
|
let (:params) { { :cell_uuid => 'uuid' } }
|
||||||
|
|
||||||
|
it {
|
||||||
|
is_expected.to contain_exec('nova-cell_v2-map_instances').with(
|
||||||
|
:path => ['/bin', '/usr/bin'],
|
||||||
|
:command => 'nova-manage cell_v2 map_instances --cell_uuid=uuid',
|
||||||
|
:refreshonly => true,
|
||||||
|
)
|
||||||
|
}
|
||||||
|
end
|
||||||
|
|
||||||
|
context "overriding extra_params" do
|
||||||
|
let :params do
|
||||||
|
{
|
||||||
|
:extra_params => '--config-file /etc/nova/nova.conf',
|
||||||
|
:cell_uuid => 'uuid'
|
||||||
|
}
|
||||||
|
end
|
||||||
|
|
||||||
|
it {
|
||||||
|
is_expected.to contain_exec('nova-cell_v2-map_instances').with(
|
||||||
|
:path => ['/bin', '/usr/bin'],
|
||||||
|
:command => 'nova-manage --config-file /etc/nova/nova.conf cell_v2 map_instances --cell_uuid=uuid',
|
||||||
|
:refreshonly => true,
|
||||||
|
)
|
||||||
|
}
|
||||||
|
end
|
||||||
|
end
|
||||||
|
|
||||||
|
|
||||||
|
on_supported_os({
|
||||||
|
:supported_os => OSDefaults.get_supported_os
|
||||||
|
}).each do |os,facts|
|
||||||
|
context "on #{os}" do
|
||||||
|
let (:facts) do
|
||||||
|
facts.merge(OSDefaults.get_facts())
|
||||||
|
end
|
||||||
|
|
||||||
|
it_configures 'nova::cell_v2::map_instances'
|
||||||
|
end
|
||||||
|
end
|
||||||
|
|
||||||
|
end
|
Loading…
Reference in New Issue
Block a user