foreman_maintain 1.7.1 → 1.7.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.
checksums.yaml CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA256:
3
- metadata.gz: ef8f53affe0970e853071b2568869c00aa94e850975b602538351cc9649dbc9e
4
- data.tar.gz: 3a60a60c9be41bb3aa34a7abee49c4b7c66f6f91629986e2a0f5e31cac98e125
3
+ metadata.gz: e3e15401e01712537566856184b187a132a0c3db2634955d8688875ba4c2ca01
4
+ data.tar.gz: 5e0bcafc241cf70f128ebe6fe887b50b83dd265311fec601360f92bbd2760751
5
5
  SHA512:
6
- metadata.gz: 68aa31aed572c7cec55cda60995e909f77b48028c9ed6708823b695d6373f07d3f94043eb5d8e4643f46f28363858bea362905a42f6ac7c1d8993ba6f6a5fc0d
7
- data.tar.gz: c989d6302e5c47dcf4bb5465c8671af3a40ec497d56459765d67c600049a88476e9447c6fc4b2457b281942b65c881884ba55b6ea896e77a013765eda70879e2
6
+ metadata.gz: c6344eb03b0caec004ebd5920bd7d416535000379361146680af2e1870d28a98816403210bcc8db78dc18be27c2d8559400fbc0c7160f5e8c680923f833b4eb6
7
+ data.tar.gz: cd87120311bedea2789b1ccf9db5b16ae8b81282eb0d49ac9e053f19b4702328dca9a502e4788898fd47330122dca3014dabf579f02a8e885c24685c72fd619c
@@ -2,6 +2,9 @@ module Checks::Pulpcore
2
2
  class NoRunningTasks < ForemanMaintain::Check
3
3
  metadata do
4
4
  for_feature :pulpcore
5
+ confine do
6
+ feature(:pulpcore)&.cli_available?
7
+ end
5
8
  description 'Check for running pulpcore tasks'
6
9
  tags :pre_upgrade
7
10
  param :wait_for_tasks,
@@ -6,6 +6,7 @@ class Features::Pulpcore < ForemanMaintain::Feature
6
6
  TIMEOUT_FOR_TASKS_STATUS = 300
7
7
  RETRY_INTERVAL_FOR_TASKS_STATE = 10
8
8
  PULP_SETTINGS = '/etc/pulp/settings.py'.freeze
9
+ PULP_CLI_SETTINGS = '/etc/pulp/cli.toml'.freeze
9
10
 
10
11
  metadata do
11
12
  label :pulpcore
@@ -15,6 +16,10 @@ class Features::Pulpcore < ForemanMaintain::Feature
15
16
  end
16
17
  end
17
18
 
19
+ def cli_available?
20
+ File.exist?(PULP_CLI_SETTINGS)
21
+ end
22
+
18
23
  def cli(args)
19
24
  parse_json(execute("pulp --format json #{args}"))
20
25
  end
@@ -6,7 +6,7 @@ module Procedures::Crond
6
6
  description 'Start cron service'
7
7
 
8
8
  for_feature :cron
9
- tags :post_migrations, :maintenance_mode_off
9
+ tags :post_migrations
10
10
 
11
11
  after :iptables_remove_maintenance_mode_chain
12
12
  advanced_run false
@@ -4,7 +4,7 @@ module Procedures::Crond
4
4
  class Stop < Procedures::Service::Base
5
5
  metadata do
6
6
  description 'Stop cron service'
7
- tags :pre_migrations, :maintenance_mode_on
7
+ tags :pre_migrations
8
8
  for_feature :cron
9
9
 
10
10
  after :iptables_add_maintenance_mode_chain
@@ -4,7 +4,7 @@ module Procedures::MaintenanceMode
4
4
  metadata do
5
5
  label :disable_maintenance_mode
6
6
  description 'Remove maintenance mode table/chain from nftables/iptables'
7
- tags :post_migrations, :maintenance_mode_off
7
+ tags :post_migrations
8
8
  after :sync_plans_enable
9
9
  end
10
10
 
@@ -4,7 +4,7 @@ module Procedures::MaintenanceMode
4
4
  metadata do
5
5
  label :enable_maintenance_mode
6
6
  description 'Add maintenance_mode tables/chain to nftables/iptables'
7
- tags :pre_migrations, :maintenance_mode_on
7
+ tags :pre_migrations
8
8
  after :sync_plans_disable
9
9
  end
10
10
 
@@ -8,7 +8,9 @@ module ForemanMaintain::Scenarios
8
8
  end
9
9
 
10
10
  def compose
11
- add_steps(find_procedures(:maintenance_mode_on))
11
+ add_step(Procedures::MaintenanceMode::EnableMaintenanceMode)
12
+ add_step(Procedures::Crond::Stop)
13
+ add_step(Procedures::SyncPlans::Disable)
12
14
  end
13
15
  end
14
16
 
@@ -21,7 +23,9 @@ module ForemanMaintain::Scenarios
21
23
  end
22
24
 
23
25
  def compose
24
- add_steps(find_procedures(:maintenance_mode_off))
26
+ add_step(Procedures::SyncPlans::Enable)
27
+ add_step(Procedures::Crond::Start)
28
+ add_step(Procedures::MaintenanceMode::DisableMaintenanceMode)
25
29
  end
26
30
  end
27
31
 
@@ -19,6 +19,27 @@ module ForemanMaintain
19
19
  update_runner
20
20
  end
21
21
 
22
+ def try_update
23
+ if update_runner.available?
24
+ yield
25
+ else
26
+ instance = ForemanMaintain.detector.feature(:instance)
27
+ msg = <<~BANNER
28
+
29
+ This version of #{ForemanMaintain.command_name} only supports #{instance.target_version},
30
+ but the installed version of #{instance.product_name} is #{instance.current_major_version}.
31
+
32
+ Therefore the update command is not available right now.
33
+
34
+ Please install a version of #{ForemanMaintain.command_name} that supports #{instance.current_major_version}
35
+ or perform an upgrade to #{instance.target_version} using the upgrade command.
36
+ BANNER
37
+
38
+ puts msg
39
+ ForemanMaintain::UpdateRunner::WARNING_EXIT_CODE
40
+ end
41
+ end
42
+
22
43
  subcommand 'check', 'Run pre-update checks before updating' do
23
44
  interactive_option
24
45
  disable_self_update_option
@@ -26,9 +47,14 @@ module ForemanMaintain
26
47
  def execute
27
48
  ForemanMaintain.validate_downstream_packages
28
49
  ForemanMaintain.perform_self_upgrade unless disable_self_update?
29
- runner = update_runner
30
- runner.run_phase(:pre_update_checks)
31
- exit runner.exit_code
50
+
51
+ exit_code = try_update do
52
+ runner = update_runner
53
+ runner.run_phase(:pre_update_checks)
54
+ runner.exit_code
55
+ end
56
+
57
+ exit exit_code
32
58
  end
33
59
  end
34
60
 
@@ -39,10 +65,15 @@ module ForemanMaintain
39
65
  def execute
40
66
  ForemanMaintain.validate_downstream_packages
41
67
  ForemanMaintain.perform_self_upgrade unless disable_self_update?
42
- runner = update_runner
43
- runner.run
44
- runner.save
45
- exit runner.exit_code
68
+
69
+ exit_code = try_update do
70
+ runner = update_runner
71
+ runner.run
72
+ runner.save
73
+ runner.exit_code
74
+ end
75
+
76
+ exit exit_code
46
77
  end
47
78
  end
48
79
  end
@@ -18,6 +18,12 @@ module ForemanMaintain
18
18
  self.phase = :pre_update_checks
19
19
  end
20
20
 
21
+ def available?
22
+ condition = { :tags => [:update_scenario, :pre_update_checks] }
23
+ matching_scenarios = find_scenarios(condition)
24
+ !matching_scenarios.empty?
25
+ end
26
+
21
27
  def find_scenario(phase)
22
28
  return @scenario_cache[phase] if @scenario_cache.key?(phase)
23
29
 
@@ -1,3 +1,3 @@
1
1
  module ForemanMaintain
2
- VERSION = '1.7.1'.freeze
2
+ VERSION = '1.7.3'.freeze
3
3
  end
metadata CHANGED
@@ -1,14 +1,14 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: foreman_maintain
3
3
  version: !ruby/object:Gem::Version
4
- version: 1.7.1
4
+ version: 1.7.3
5
5
  platform: ruby
6
6
  authors:
7
7
  - Ivan Nečas
8
8
  autorequire:
9
9
  bindir: bin
10
10
  cert_chain: []
11
- date: 2024-08-21 00:00:00.000000000 Z
11
+ date: 2024-08-29 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
14
  name: clamp