foreman_maintain 1.6.2 → 1.6.4

Sign up to get free protection for your applications and to get access to all the features.
checksums.yaml CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA256:
3
- metadata.gz: bffec6895a006066de751609395b0f865e1dee34b90d01111d2792af59a6b893
4
- data.tar.gz: 9388cc01c5be3b68685e7947676119c5fd648a02c0e73bdafb8f8752f7390c45
3
+ metadata.gz: dc4310d22dcb14b51945e3642cba4c7050e6660893dc09639064b013a2881380
4
+ data.tar.gz: d305fc1da3bd0a013d4455ec1ae578f22529fe5302261f82be251be5a0ee9a84
5
5
  SHA512:
6
- metadata.gz: dcdee36a3f44d9809a65b7105f073ed79c10e60d16d34eb4300c1e4ebb4b32255d297b8d9c3eeca346d6865dd88f0c4a5dd66b297dbcea81f8b6d6c0a42ea039
7
- data.tar.gz: 90be6369c664ca1fc46b81040a43599b02ba7c2fd26aed1ce628680d750147a3d982593d7cb8694fa3ea6935440ed8eec5bbcd1d78ce98dd79f5a8e8b7b347ac
6
+ metadata.gz: d10f290659e20460fffcebf72291e7260a6caf3c8d0964bdb3bd40d9f86ec9b8a5f70781c2f9de2d01778f09bdcda1421defb679a7f541d7ff4b21406368ca3c
7
+ data.tar.gz: c63898eece400b9d3813e06e070a3188c27ad5a06aaf57652c68e6f0887bf5b9173b6dd6eb9192acf37dff6b8d2b4c89285f65cf427de72a7a1aa69cc4b9f703
@@ -0,0 +1,56 @@
1
+ class Checks::CheckOrganizationContentAccessMode < ForemanMaintain::Check
2
+ metadata do
3
+ label :check_organization_content_access_mode
4
+ description 'Check if any organizations are using entitlement mode'
5
+
6
+ confine do
7
+ feature(:katello)
8
+ end
9
+ end
10
+
11
+ def run
12
+ doc_link = "https://access.redhat.com/articles/simple-content-access"
13
+
14
+ with_spinner('Checking organization content access modes') do
15
+ output = execute_org_check
16
+ orgs_to_migrate = parse_orgs_to_migrate(output)
17
+
18
+ assert(
19
+ orgs_to_migrate.empty?,
20
+ "\nThe following organizations are using entitlement mode:\n"\
21
+ "#{format_orgs_to_migrate(orgs_to_migrate)}\n\n"\
22
+ "As of Satellite 6.16, entitlement mode is removed, and these organizations"\
23
+ " will be automatically migrated to Simple Content Access during the upgrade."\
24
+ " Please ensure that you have reviewed the documentation and are prepared for this change."\
25
+ " Documentation for SCA mode is available at #{doc_link}"
26
+ )
27
+ end
28
+ end
29
+
30
+ private
31
+
32
+ # rubocop:disable Lint/InterpolationCheck
33
+ def execute_org_check
34
+ execute!(
35
+ 'echo "Organization.all.each ' \
36
+ '{ |org| puts \"NONSCA: #{org.name}\" unless org.simple_content_access? }" ' \
37
+ '| foreman-rake console'
38
+ )
39
+ end
40
+ # rubocop:enable Lint/InterpolationCheck
41
+
42
+ def parse_orgs_to_migrate(output)
43
+ orgs = []
44
+ output.each_line do |line|
45
+ match = line.match(/NONSCA: (.+)/)
46
+ if match && !match[1].strip.start_with?('#{org.name}') # rubocop:disable Lint/InterpolationCheck
47
+ orgs << match[1].strip
48
+ end
49
+ end
50
+ orgs
51
+ end
52
+
53
+ def format_orgs_to_migrate(orgs_to_migrate)
54
+ orgs_to_migrate.join("\n")
55
+ end
56
+ end
@@ -13,10 +13,9 @@ module Procedures::Packages
13
13
  "It is recommended to update everything only as part of upgrade\n" \
14
14
  "of the #{feature(:instance).product_name} to the next version. \n" \
15
15
  "To Upgrade to next version use 'foreman-maintain upgrade'.\n\n" \
16
- "NOTE: --assumeyes is not applicable for this check\n\n" \
17
16
  "Do you want to proceed with update of everything regardless\n" \
18
17
  'of the recommendations?'
19
- answer = ask_decision(question, actions_msg: 'y(yes), q(quit)', ignore_assumeyes: true)
18
+ answer = ask_decision(question, actions_msg: 'y(yes), q(quit)')
20
19
  abort! unless answer == :yes
21
20
  end
22
21
  end
@@ -97,25 +97,47 @@ module ForemanMaintain::Scenarios
97
97
  description 'update packages in unlocked session'
98
98
  param :packages, 'List of packages to Update', :array => true
99
99
  param :assumeyes, 'Do not ask for confirmation'
100
+ param :downloadonly, 'Download and cache packages'
100
101
  manual_detection
101
102
  end
102
103
 
104
+ # rubocop:disable Metrics/MethodLength
103
105
  def compose
104
106
  if Packages.skip_installer_run?(context.get(:packages))
105
107
  add_step_with_context(Procedures::Packages::Update,
106
108
  :force => true, :warn_on_errors => true)
107
109
  else
108
- add_steps_with_context(
109
- Procedures::Packages::UpdateAllConfirmation,
110
- Procedures::Packages::InstallerConfirmation
111
- )
110
+ unless context.get(:downloadonly)
111
+ add_steps_with_context(
112
+ Procedures::Packages::UpdateAllConfirmation,
113
+ Procedures::Packages::InstallerConfirmation
114
+ )
115
+ end
116
+
112
117
  add_step_with_context(Procedures::Packages::UnlockVersions)
113
- add_step_with_context(Procedures::Packages::Update,
114
- :force => true, :warn_on_errors => true)
115
- add_step_with_context(Procedures::Installer::Run)
118
+
119
+ if context.get(:downloadonly)
120
+ add_step_with_context(
121
+ Procedures::Packages::Update,
122
+ :force => true,
123
+ :warn_on_errors => true,
124
+ :dnf_options => ['--downloadonly']
125
+ )
126
+ add_step_with_context(Procedures::Packages::LockVersions)
127
+ else
128
+ add_step_with_context(
129
+ Procedures::Packages::Update,
130
+ :force => true,
131
+ :warn_on_errors => true
132
+ )
133
+
134
+ add_step_with_context(Procedures::Installer::Run)
135
+ end
136
+
116
137
  add_step(Procedures::Packages::LockingStatus)
117
138
  end
118
139
  end
140
+ # rubocop:enable Metrics/MethodLength
119
141
 
120
142
  def set_context_mapping
121
143
  context.map(:packages,
@@ -29,6 +29,7 @@ module Scenarios::Satellite_6_16
29
29
  add_steps(find_checks(:pre_upgrade))
30
30
  add_step(Checks::Disk::AvailableSpacePostgresql13)
31
31
  add_step(Checks::Repositories::Validate.new(:version => '6.16'))
32
+ add_step(Checks::CheckOrganizationContentAccessMode)
32
33
  end
33
34
  end
34
35
 
@@ -1,8 +1,10 @@
1
+ import configparser
2
+ import os
3
+
1
4
  import dnf
2
5
  import dnf.exceptions
3
6
  from dnfpluginscore import _, logger
4
7
 
5
- import configparser
6
8
 
7
9
  PROTECT_COMMANDS = ('install', 'downgrade', 'reinstall', 'distro-sync', 'swap', 'upgrade', 'upgrade-minimal')
8
10
 
@@ -53,6 +55,8 @@ class ForemanProtector(dnf.Plugin):
53
55
  def sack(self):
54
56
  if self.cli is not None and self.cli.command._basecmd not in PROTECT_COMMANDS:
55
57
  return
58
+ if os.environ.get('LEAPP_IPU_IN_PROGRESS') is not None:
59
+ return
56
60
  whitelist_and_obsoletes = self._add_obsoletes()
57
61
  all_available_packages = self.base.sack.query().available()
58
62
  excluded_pkgs_query = all_available_packages.difference(whitelist_and_obsoletes)
@@ -55,12 +55,15 @@ module ForemanMaintain
55
55
  subcommand 'update', 'Update packages in an unlocked session' do
56
56
  interactive_option(['assumeyes'])
57
57
  parameter '[PACKAGES] ...', 'packages to update', :attribute_name => :packages
58
+ option '--downloadonly', :flag, 'Downloads and caches package updates only',
59
+ :default => false
58
60
 
59
61
  def execute
60
62
  run_scenarios_and_exit(
61
63
  Scenarios::Packages::Update.new(
62
64
  :packages => packages,
63
- :assumeyes => assumeyes?
65
+ :assumeyes => assumeyes?,
66
+ :downloadonly => @downloadonly
64
67
  )
65
68
  )
66
69
  end
@@ -44,16 +44,10 @@ module ForemanMaintain
44
44
  end
45
45
 
46
46
  return @exit_code
47
- ensure
48
- log_exit_code_info(@exit_code)
49
47
  end
50
48
 
51
49
  private
52
50
 
53
- def log_exit_code_info(exit_code)
54
- logger.info("foreman-maintain command finished with #{exit_code}")
55
- end
56
-
57
51
  def process_standard_error(error)
58
52
  if error.is_a?(Clamp::HelpWanted) ||
59
53
  error.is_a?(ArgumentError) ||
@@ -68,7 +62,6 @@ module ForemanMaintain
68
62
  end
69
63
 
70
64
  def process_usage_error(error)
71
- log_exit_code_info(1)
72
65
  $stderr.puts error.message
73
66
  exit!
74
67
  end
@@ -21,7 +21,7 @@ module ForemanMaintain
21
21
  @options.fetch(:completion_cache_file, '~/.cache/foreman_maintain_completion.yml')
22
22
  )
23
23
  @disable_commands = @options.fetch(:disable_commands, [])
24
- @foreman_url = @options.fetch(:foreman_url, `hostname -f`.chomp)
24
+ @foreman_url = @options.fetch(:foreman_url) { `hostname -f`.chomp }
25
25
  @foreman_port = @options.fetch(:foreman_port, 443)
26
26
  end
27
27
 
@@ -1,3 +1,3 @@
1
1
  module ForemanMaintain
2
- VERSION = '1.6.2'.freeze
2
+ VERSION = '1.6.4'.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.6.2
4
+ version: 1.6.4
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-03-29 00:00:00.000000000 Z
11
+ date: 2024-04-17 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
14
  name: clamp
@@ -194,6 +194,7 @@ files:
194
194
  - definitions/checks/restore/validate_interfaces.rb
195
195
  - definitions/checks/restore/validate_postgresql_dump_permissions.rb
196
196
  - definitions/checks/root_user.rb
197
+ - definitions/checks/sca_only.rb
197
198
  - definitions/checks/server_ping.rb
198
199
  - definitions/checks/services_up.rb
199
200
  - definitions/checks/system_registration.rb