foreman_maintain 0.6.2 → 0.6.3

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
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