File: map_instances.pp

package info (click to toggle)
puppet-module-nova 25.0.0-4
  • links: PTS, VCS
  • area: main
  • in suites: forky, sid, trixie
  • size: 4,100 kB
  • sloc: ruby: 11,433; python: 38; sh: 10; makefile: 10
file content (49 lines) | stat: -rw-r--r-- 1,551 bytes parent folder | download | duplicates (2)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
# == 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::user,
    refreshonly => true,
  }
}