foreman_maintain 0.6.2 → 0.6.3

Sign up to get free protection for your applications and to get access to all the features.
Files changed (37) hide show
  1. checksums.yaml +4 -4
  2. data/README.md +4 -0
  3. data/definitions/checks/disk/performance.rb +16 -8
  4. data/definitions/checks/foreman/validate_external_db_version.rb +28 -0
  5. data/definitions/checks/original_assets.rb +1 -0
  6. data/definitions/features/installer.rb +9 -2
  7. data/definitions/procedures/content/prepare.rb +1 -1
  8. data/definitions/procedures/content/switchover.rb +7 -3
  9. data/definitions/procedures/restore/regenerate_missing_queues.rb +52 -0
  10. data/definitions/scenarios/content.rb +27 -0
  11. data/definitions/scenarios/packages.rb +2 -4
  12. data/definitions/scenarios/upgrade_to_capsule_6_7.rb +84 -0
  13. data/definitions/scenarios/upgrade_to_capsule_6_7_z.rb +84 -0
  14. data/definitions/scenarios/upgrade_to_capsule_6_8.rb +84 -0
  15. data/definitions/scenarios/upgrade_to_capsule_6_8_z.rb +84 -0
  16. data/definitions/scenarios/upgrade_to_satellite_6_2.rb +8 -4
  17. data/definitions/scenarios/upgrade_to_satellite_6_2_z.rb +8 -4
  18. data/definitions/scenarios/upgrade_to_satellite_6_3.rb +8 -4
  19. data/definitions/scenarios/upgrade_to_satellite_6_3_z.rb +8 -4
  20. data/definitions/scenarios/upgrade_to_satellite_6_4.rb +8 -4
  21. data/definitions/scenarios/upgrade_to_satellite_6_4_z.rb +8 -4
  22. data/definitions/scenarios/upgrade_to_satellite_6_5.rb +8 -4
  23. data/definitions/scenarios/upgrade_to_satellite_6_5_z.rb +8 -4
  24. data/definitions/scenarios/upgrade_to_satellite_6_6.rb +8 -4
  25. data/definitions/scenarios/upgrade_to_satellite_6_6_z.rb +8 -4
  26. data/definitions/scenarios/upgrade_to_satellite_6_7.rb +8 -4
  27. data/definitions/scenarios/upgrade_to_satellite_6_7_z.rb +8 -4
  28. data/definitions/scenarios/upgrade_to_satellite_6_8.rb +84 -0
  29. data/definitions/scenarios/upgrade_to_satellite_6_8_z.rb +84 -0
  30. data/lib/foreman_maintain.rb +4 -0
  31. data/lib/foreman_maintain/cli.rb +2 -0
  32. data/lib/foreman_maintain/cli/content_command.rb +17 -0
  33. data/lib/foreman_maintain/concerns/base_database.rb +11 -0
  34. data/lib/foreman_maintain/concerns/downstream.rb +13 -8
  35. data/lib/foreman_maintain/upgrade_runner.rb +20 -26
  36. data/lib/foreman_maintain/version.rb +1 -1
  37. metadata +13 -3
checksums.yaml CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA256:
3
- metadata.gz: 2b80a6708b24b9107d23a2e88357ecd8dbaba11d3015eda0c07f2ffc34f47cc4
4
- data.tar.gz: f0e5890c595b48d44f22eba1b1ac5872137669100d97465090cc12fccd7aa480
3
+ metadata.gz: ee3a3147fb6baeb783edbdcdfb4b595d50fbc6f7540c95f0f1d673bd87a53cf1
4
+ data.tar.gz: 3586008b3cc66eb7733113144c0004cd9ce1553fe1b9d8f84e5126f5ddc2cadb
5
5
  SHA512:
6
- metadata.gz: 8859ccb05729eb6588465e71504918744163899025eba90c2819bd19d0e979e0e15fe199df62def03d23e1445685104f385ced535dc0ee892077affc1a54c2ba
7
- data.tar.gz: 16db194cc592c4dc2c0a9212ea569e361cbac8782da5bd9500a5d0c351dc55715667a941ea8ca8f4297e5886ebda1fcf2a06a7d9d4e18b992f2431434fe47b21
6
+ metadata.gz: e5df43e8cd8514d5489351ace62f2c37ff3558316faf2a9b475f4bd8eb5b624175dbb589ffef216df01feea18cb6a4592466afc8b32ccaca344c0280fafe99fb
7
+ data.tar.gz: 3c03b1e96a98c2d5800d69633c0584e8cd5632c1c663039a556e8bb63cd8cf45623a57c325266c9e3323d740424c683f6d29d5b53dbd23465a5fb7de56ec7d32
data/README.md CHANGED
@@ -48,6 +48,10 @@ Subcommands:
48
48
  stop Stop maintenance-mode
49
49
  status Get maintenance-mode status
50
50
  is-enabled Get maintenance-mode status code
51
+
52
+ content Content related commands
53
+ prepare Prepare content for Pulp 3
54
+ switchover Switch support for certain content from Pulp 2 to Pulp 3
51
55
  ```
52
56
 
53
57
  ### Upgrades
@@ -3,10 +3,8 @@ module Checks
3
3
  class Performance < ForemanMaintain::Check
4
4
  metadata do
5
5
  label :disk_performance
6
- description 'Check for recommended disk speed of pulp, mongodb, pgsql dir.'
7
6
  tags :pre_upgrade
8
7
  preparation_steps { Procedures::Packages::Install.new(:packages => %w[fio]) }
9
-
10
8
  confine do
11
9
  feature(:instance).pulp
12
10
  end
@@ -14,9 +12,6 @@ module Checks
14
12
 
15
13
  EXPECTED_IO = 60
16
14
  DEFAULT_UNIT = 'MB/sec'.freeze
17
- DEFAULT_DIRS = [
18
- '/var/lib/pulp', '/var/lib/mongodb', '/var/lib/pgsql'
19
- ].select { |file_path| File.directory?(file_path) }.freeze
20
15
 
21
16
  attr_reader :stats
22
17
 
@@ -37,16 +32,29 @@ module Checks
37
32
  end
38
33
  end
39
34
 
35
+ def default_dirs
36
+ @default_dirs ||= %i[pulp2 pulpcore_database mongo foreman_database].inject({}) do |dirs, f|
37
+ if feature(f) && File.directory?(feature(f).data_dir)
38
+ dirs[feature(f).label_dashed] = feature(f).data_dir
39
+ end
40
+ dirs
41
+ end
42
+ end
43
+
44
+ def description
45
+ "Check recommended disk speed for #{default_dirs.keys.join(', ')} directories."
46
+ end
47
+
40
48
  def check_only_single_device?
41
- DEFAULT_DIRS.map do |dir|
49
+ default_dirs.values do |dir|
42
50
  ForemanMaintain::Utils::Disk::Device.new(dir).name
43
51
  end.uniq.length <= 1
44
52
  end
45
53
 
46
54
  def dirs_to_check
47
- return DEFAULT_DIRS.first(1) if check_only_single_device?
55
+ return default_dirs.values.first(1) if check_only_single_device?
48
56
 
49
- DEFAULT_DIRS
57
+ default_dirs.values
50
58
  end
51
59
 
52
60
  private
@@ -0,0 +1,28 @@
1
+ module Checks
2
+ module Foreman
3
+ class ValidateExternalDbVersion < ForemanMaintain::Check
4
+ metadata do
5
+ description 'Make sure server is running on required database version'
6
+ tags :pre_upgrade
7
+ label :validate_external_db_version
8
+ confine do
9
+ feature(:foreman_database) && !feature(:foreman_database).local? &&
10
+ !check_min_version('foreman', '2.0')
11
+ end
12
+ end
13
+
14
+ def run
15
+ current_db_version = feature(:foreman_database).db_version
16
+ fail!(db_upgrade_message(current_db_version)) if current_db_version.major < 12
17
+ end
18
+
19
+ def db_upgrade_message(db_version)
20
+ product_name = feature(:instance).product_name
21
+
22
+ "\n\n*** ERROR: Server is running on PostgreSQL #{db_version} database.\n"\
23
+ "*** Newer version of #{product_name} supports only PostgreSQL version 12.\n"\
24
+ "*** Before proceeding further, you must upgrade database to PostgreSQL 12.\n"
25
+ end
26
+ end
27
+ end
28
+ end
@@ -2,6 +2,7 @@ class Checks::OriginalAssets < ForemanMaintain::Check
2
2
  metadata do
3
3
  description 'Check if only installed assets are present on the system'
4
4
  tags :post_upgrade
5
+ for_feature :foreman_server
5
6
  end
6
7
 
7
8
  ASSETS_DIR = '/var/lib/foreman/public/assets'.freeze
@@ -92,8 +92,15 @@ class Features::Installer < ForemanMaintain::Feature
92
92
  end
93
93
 
94
94
  def upgrade(exec_options = {})
95
- arguments = '--upgrade' if can_upgrade?
96
- run(arguments, exec_options)
95
+ run(installer_arguments, exec_options)
96
+ end
97
+
98
+ def installer_arguments
99
+ installer_args = ' --disable-system-checks'
100
+ unless check_min_version('foreman', '2.1') || check_min_version('foreman-proxy', '2.1')
101
+ installer_args += ' --upgrade' if can_upgrade?
102
+ end
103
+ installer_args
97
104
  end
98
105
 
99
106
  def initial_admin_username
@@ -6,7 +6,7 @@ module Procedures::Content
6
6
  end
7
7
 
8
8
  def run
9
- execute!('foreman-rake katello:pulp3_migration')
9
+ puts execute!('foreman-rake katello:pulp3_migration')
10
10
  end
11
11
  end
12
12
  end
@@ -6,9 +6,13 @@ module Procedures::Content
6
6
  end
7
7
 
8
8
  def run
9
- execute!('foreman-rake katello:pulp3_migration')
10
- execute!('foreman-rake katello:pulp3_post_migration_check')
11
- execute!('foreman-rake katello:pulp3_content_switchover')
9
+ puts 'Performing final content migration before switching content'
10
+ puts execute!('foreman-rake katello:pulp3_migration')
11
+ puts 'Performing a check to verify everything that is needed has been migrated'
12
+ puts execute!('foreman-rake katello:pulp3_post_migration_check')
13
+ puts 'Switching specified content over to pulp 3'
14
+ puts execute!('foreman-rake katello:pulp3_content_switchover')
15
+ puts 'Re-running the installer to switch specified content over to pulp3'
12
16
  args = ['--foreman-proxy-content-proxy-pulp-isos-to-pulpcore=true',
13
17
  '--katello-use-pulp-2-for-file=false',
14
18
  '--katello-use-pulp-2-for-docker=false']
@@ -0,0 +1,52 @@
1
+ module Procedures::Restore
2
+ class RegenerateMissingQueues < ForemanMaintain::Procedure
3
+
4
+ metadata do
5
+ description 'Regenrate queues'
6
+
7
+ param :handle_services,
8
+ 'Stop and start services if required',
9
+ :flag => true,
10
+ :default => false
11
+ end
12
+
13
+ def hostname
14
+ execute('hostname -f')
15
+ end
16
+
17
+ def ssl_cert
18
+ "/etc/pki/katello/certs/#{hostanme}-qpid-broker.crt"
19
+ end
20
+
21
+ def ssl_key
22
+ "/etc/pki/katello/private/#{hostanme}-qpid-broker.key"
23
+ end
24
+
25
+ def amqps_url
26
+ 'amqps://localhost:5671'
27
+ end
28
+
29
+ def run
30
+ with_spinner('Resetting the queues') do |spinner|
31
+ reset_queues
32
+ end
33
+ end
34
+
35
+ def reset_queues
36
+ execute!('rm -rf /var/lib/qpidd/.qpidd/qls')
37
+ Procedures::Service::Start(:only => 'qpidd')
38
+ puts "Sleeping for 60 seconds for qpid to start fully"
39
+ sleep 60
40
+
41
+ puts "Recreating infrastructure queues.."
42
+ execute!("qpid-config --ssl-certificate #{ssl_cert} --ssl-key #{ssl_key} -b #{amqps_url} add exchange topic event --durable")
43
+ execute!("qpid-config --ssl-certificate #{ssl_cert} --ssl-key #{ssl_key} -b #{amqps_url} add queue katello_event_queue --durable")
44
+ %w[compliance.created entitlement.created entitlement.deleted pool.created pool.deleted].each do |key|
45
+ execute!("qpid-config --ssl-certificate #{ssl_cert} --ssl-key #{ssl_key} -b #{amqps_url} bind event katello_event_queue #{key}")
46
+ end
47
+
48
+
49
+
50
+ end
51
+ end
52
+ end
@@ -0,0 +1,27 @@
1
+ module ForemanMaintain::Scenarios
2
+ module Content
3
+ class Prepare < ForemanMaintain::Scenario
4
+ metadata do
5
+ label :content_prepare
6
+ description 'Prepare content for Pulp 3'
7
+ manual_detection
8
+ end
9
+
10
+ def compose
11
+ add_step(Procedures::Content::Prepare)
12
+ end
13
+ end
14
+
15
+ class Switchover < ForemanMaintain::Scenario
16
+ metadata do
17
+ label :content_switchover
18
+ description 'Switch support for certain content from Pulp 2 to Pulp 3'
19
+ manual_detection
20
+ end
21
+
22
+ def compose
23
+ add_step(Procedures::Content::Switchover)
24
+ end
25
+ end
26
+ end
27
+ end
@@ -49,8 +49,7 @@ module ForemanMaintain::Scenarios
49
49
  add_step_with_context(Procedures::Packages::UnlockVersions)
50
50
  add_step_with_context(Procedures::Packages::Install,
51
51
  :force => true, :warn_on_errors => true)
52
- add_step_with_context(Procedures::Installer::Run,
53
- :arguments => '--upgrade --disable-system-checks')
52
+ add_step_with_context(Procedures::Installer::Upgrade)
54
53
  add_step(Procedures::Packages::LockingStatus)
55
54
  end
56
55
 
@@ -77,8 +76,7 @@ module ForemanMaintain::Scenarios
77
76
  Procedures::Packages::UnlockVersions
78
77
  )
79
78
  add_step_with_context(Procedures::Packages::Update, :force => true, :warn_on_errors => true)
80
- add_step_with_context(Procedures::Installer::Run,
81
- :arguments => '--upgrade --disable-system-checks')
79
+ add_step_with_context(Procedures::Installer::Upgrade)
82
80
  add_step(Procedures::Packages::LockingStatus)
83
81
  end
84
82
 
@@ -0,0 +1,84 @@
1
+ module Scenarios::Capsule_6_7
2
+ class Abstract < ForemanMaintain::Scenario
3
+ def self.upgrade_metadata(&block)
4
+ metadata do
5
+ tags :upgrade_scenario
6
+ confine do
7
+ feature(:capsule) &&
8
+ (feature(:capsule).current_minor_version == '6.6' || \
9
+ ForemanMaintain.upgrade_in_progress == '6.7')
10
+ end
11
+ instance_eval(&block)
12
+ end
13
+ end
14
+
15
+ def target_version
16
+ '6.7'
17
+ end
18
+ end
19
+
20
+ class PreUpgradeCheck < Abstract
21
+ upgrade_metadata do
22
+ description 'Checks before upgrading to Capsule 6.7'
23
+ tags :pre_upgrade_checks
24
+ run_strategy :fail_slow
25
+ end
26
+
27
+ def compose
28
+ add_steps(find_checks(:default))
29
+ add_steps(find_checks(:pre_upgrade))
30
+ add_step(Checks::Repositories::Validate.new(:version => '6.7'))
31
+ end
32
+ end
33
+
34
+ class PreMigrations < Abstract
35
+ upgrade_metadata do
36
+ description 'Procedures before migrating to Capsule 6.7'
37
+ tags :pre_migrations
38
+ end
39
+
40
+ def compose
41
+ add_steps(find_procedures(:pre_migrations))
42
+ add_step(Procedures::Service::Stop.new)
43
+ end
44
+ end
45
+
46
+ class Migrations < Abstract
47
+ upgrade_metadata do
48
+ description 'Migration scripts to Capsule 6.7'
49
+ tags :migrations
50
+ end
51
+
52
+ def compose
53
+ add_step(Procedures::Repositories::Setup.new(:version => '6.7'))
54
+ add_step(Procedures::Packages::UnlockVersions.new)
55
+ add_step(Procedures::Packages::Update.new(:assumeyes => true))
56
+ add_step(Procedures::Installer::Upgrade.new)
57
+ end
58
+ end
59
+
60
+ class PostMigrations < Abstract
61
+ upgrade_metadata do
62
+ description 'Procedures after migrating to Capsule 6.7'
63
+ tags :post_migrations
64
+ end
65
+
66
+ def compose
67
+ add_step(Procedures::Service::Start.new)
68
+ add_steps(find_procedures(:post_migrations))
69
+ end
70
+ end
71
+
72
+ class PostUpgradeChecks < Abstract
73
+ upgrade_metadata do
74
+ description 'Checks after upgrading to Capsule 6.7'
75
+ tags :post_upgrade_checks
76
+ run_strategy :fail_slow
77
+ end
78
+
79
+ def compose
80
+ add_steps(find_checks(:default))
81
+ add_steps(find_checks(:post_upgrade))
82
+ end
83
+ end
84
+ end
@@ -0,0 +1,84 @@
1
+ module Scenarios::Capsule_6_7_z
2
+ class Abstract < ForemanMaintain::Scenario
3
+ def self.upgrade_metadata(&block)
4
+ metadata do
5
+ tags :upgrade_scenario
6
+ confine do
7
+ feature(:capsule) &&
8
+ (feature(:capsule).current_minor_version == '6.7' || \
9
+ ForemanMaintain.upgrade_in_progress == '6.7.z')
10
+ end
11
+ instance_eval(&block)
12
+ end
13
+ end
14
+
15
+ def target_version
16
+ '6.7.z'
17
+ end
18
+ end
19
+
20
+ class PreUpgradeCheck < Abstract
21
+ upgrade_metadata do
22
+ description 'Checks before upgrading to Capsule 6.7.z'
23
+ tags :pre_upgrade_checks
24
+ run_strategy :fail_slow
25
+ end
26
+
27
+ def compose
28
+ add_steps(find_checks(:default))
29
+ add_steps(find_checks(:pre_upgrade))
30
+ add_step(Checks::Repositories::Validate.new(:version => '6.7'))
31
+ end
32
+ end
33
+
34
+ class PreMigrations < Abstract
35
+ upgrade_metadata do
36
+ description 'Procedures before migrating to Capsule 6.7.z'
37
+ tags :pre_migrations
38
+ end
39
+
40
+ def compose
41
+ add_steps(find_procedures(:pre_migrations))
42
+ add_step(Procedures::Service::Stop.new)
43
+ end
44
+ end
45
+
46
+ class Migrations < Abstract
47
+ upgrade_metadata do
48
+ description 'Migration scripts to Capsule 6.7.z'
49
+ tags :migrations
50
+ end
51
+
52
+ def compose
53
+ add_step(Procedures::Repositories::Setup.new(:version => '6.7'))
54
+ add_step(Procedures::Packages::UnlockVersions.new)
55
+ add_step(Procedures::Packages::Update.new(:assumeyes => true))
56
+ add_step(Procedures::Installer::Upgrade.new)
57
+ end
58
+ end
59
+
60
+ class PostMigrations < Abstract
61
+ upgrade_metadata do
62
+ description 'Procedures after migrating to Capsule 6.7.z'
63
+ tags :post_migrations
64
+ end
65
+
66
+ def compose
67
+ add_step(Procedures::Service::Start.new)
68
+ add_steps(find_procedures(:post_migrations))
69
+ end
70
+ end
71
+
72
+ class PostUpgradeChecks < Abstract
73
+ upgrade_metadata do
74
+ description 'Checks after upgrading to Capsule 6.7.z'
75
+ tags :post_upgrade_checks
76
+ run_strategy :fail_slow
77
+ end
78
+
79
+ def compose
80
+ add_steps(find_checks(:default))
81
+ add_steps(find_checks(:post_upgrade))
82
+ end
83
+ end
84
+ end
@@ -0,0 +1,84 @@
1
+ module Scenarios::Capsule_6_8
2
+ class Abstract < ForemanMaintain::Scenario
3
+ def self.upgrade_metadata(&block)
4
+ metadata do
5
+ tags :upgrade_scenario
6
+ confine do
7
+ feature(:capsule) &&
8
+ (feature(:capsule).current_minor_version == '6.7' || \
9
+ ForemanMaintain.upgrade_in_progress == '6.8')
10
+ end
11
+ instance_eval(&block)
12
+ end
13
+ end
14
+
15
+ def target_version
16
+ '6.8'
17
+ end
18
+ end
19
+
20
+ class PreUpgradeCheck < Abstract
21
+ upgrade_metadata do
22
+ description 'Checks before upgrading to Capsule 6.8'
23
+ tags :pre_upgrade_checks
24
+ run_strategy :fail_slow
25
+ end
26
+
27
+ def compose
28
+ add_steps(find_checks(:default))
29
+ add_steps(find_checks(:pre_upgrade))
30
+ add_step(Checks::Repositories::Validate.new(:version => '6.8'))
31
+ end
32
+ end
33
+
34
+ class PreMigrations < Abstract
35
+ upgrade_metadata do
36
+ description 'Procedures before migrating to Capsule 6.8'
37
+ tags :pre_migrations
38
+ end
39
+
40
+ def compose
41
+ add_steps(find_procedures(:pre_migrations))
42
+ add_step(Procedures::Service::Stop.new)
43
+ end
44
+ end
45
+
46
+ class Migrations < Abstract
47
+ upgrade_metadata do
48
+ description 'Migration scripts to Capsule 6.8'
49
+ tags :migrations
50
+ end
51
+
52
+ def compose
53
+ add_step(Procedures::Repositories::Setup.new(:version => '6.8'))
54
+ add_step(Procedures::Packages::UnlockVersions.new)
55
+ add_step(Procedures::Packages::Update.new(:assumeyes => true))
56
+ add_step(Procedures::Installer::Upgrade.new)
57
+ end
58
+ end
59
+
60
+ class PostMigrations < Abstract
61
+ upgrade_metadata do
62
+ description 'Procedures after migrating to Capsule 6.8'
63
+ tags :post_migrations
64
+ end
65
+
66
+ def compose
67
+ add_step(Procedures::Service::Start.new)
68
+ add_steps(find_procedures(:post_migrations))
69
+ end
70
+ end
71
+
72
+ class PostUpgradeChecks < Abstract
73
+ upgrade_metadata do
74
+ description 'Checks after upgrading to Capsule 6.8'
75
+ tags :post_upgrade_checks
76
+ run_strategy :fail_slow
77
+ end
78
+
79
+ def compose
80
+ add_steps(find_checks(:default))
81
+ add_steps(find_checks(:post_upgrade))
82
+ end
83
+ end
84
+ end