Puppet Plan: peadm::util::update_classification

Defined in:
plans/util/update_classification.pp

Summary

Configure classification

Overview

Parameters:

  • targets (Peadm::SingleTargetSpec)
  • peadm_config (Optional[Hash]) (defaults to: undef)
  • server_a_host (Optional[Peadm::SingleTargetSpec]) (defaults to: undef)
  • server_b_host (Optional[Peadm::SingleTargetSpec]) (defaults to: undef)
  • postgresql_a_host (Optional[Peadm::SingleTargetSpec]) (defaults to: undef)
  • postgresql_b_host (Optional[Peadm::SingleTargetSpec]) (defaults to: undef)
  • compiler_pool_address (Optional[String]) (defaults to: undef)
  • internal_compiler_a_pool_address (Optional[String]) (defaults to: undef)
  • internal_compiler_b_pool_address (Optional[String]) (defaults to: undef)


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
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
# File 'plans/util/update_classification.pp', line 5

plan peadm::util::update_classification (
  # Standard
  Peadm::SingleTargetSpec           $targets,
  Optional[Hash]                    $peadm_config = undef,
  Optional[Peadm::SingleTargetSpec] $server_a_host = undef,
  Optional[Peadm::SingleTargetSpec] $server_b_host = undef,

  # Extra Large
  Optional[Peadm::SingleTargetSpec] $postgresql_a_host = undef,
  Optional[Peadm::SingleTargetSpec] $postgresql_b_host = undef,

  # Common Configuration
  Optional[String] $compiler_pool_address = undef,
  Optional[String] $internal_compiler_a_pool_address = undef,
  Optional[String] $internal_compiler_b_pool_address = undef,
) {
  $primary_target = peadm::get_targets($targets, 1)

  # Makes this more easily usable outside a plan
  if $peadm_config {
    $current = $peadm_config
  } else {
    $current = run_task('peadm::get_peadm_config', $primary_target).first.value
  }

  out::verbose('Current config is...')
  out::verbose($current)

  $filtered_params = {
    'compiler_pool_address'            => $compiler_pool_address,
    'internal_compiler_a_pool_address' => $internal_compiler_a_pool_address,
    'internal_compiler_b_pool_address' => $internal_compiler_b_pool_address,
  }.filter |$parameter| { $parameter[1] }

  $filtered_server = {
    'A' => $server_a_host,
    'B' => $server_b_host,
  }.filter |$parameter| { $parameter[1] }

  $filtered_psql = {
    'A' => $postgresql_a_host,
    'B' => $postgresql_b_host,
  }.filter |$parameter| { $parameter[1] }

  $filtered = {
    'params'      => $filtered_params,
    'role-letter' => {
      'server'     => $filtered_server,
      'postgresql' => $filtered_psql,
    },
  }

  out::verbose('New values are...')
  out::verbose($filtered)

  $new = deep_merge($current, $filtered)

  out::verbose('Updating classification to...')
  out::verbose($new)

  apply($primary_target) {
    class { 'peadm::setup::node_manager_yaml':
      primary_host => $primary_target.peadm::certname(),
    }

    class { 'peadm::setup::node_manager':
      primary_host                     => $primary_target.peadm::certname(),
      server_a_host                    => $new['role-letter']['server']['A'],
      server_b_host                    => $new['role-letter']['server']['B'],
      postgresql_a_host                => $new['role-letter']['postgresql']['A'],
      postgresql_b_host                => $new['role-letter']['postgresql']['B'],
      compiler_pool_address            => $new['params']['compiler_pool_address'],
      internal_compiler_a_pool_address => $new['params']['internal_compiler_a_pool_address'],
      internal_compiler_b_pool_address => $new['params']['internal_compiler_b_pool_address'],
      require                          => Class['peadm::setup::node_manager_yaml'],
    }
  }
  return('The classification of Puppet Enterprise components has succeeded.')
}