foreman_maintain 0.8.9 → 0.8.10

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: 627ca822992f4ebce185a35f038a9b4b9f0c9749912a37ee57857f16f62ea3e1
4
- data.tar.gz: 64db438426e80728d1af4fa78ceae5686b14662e67bdec2f7dc7306c757d342c
3
+ metadata.gz: 89971a91002aac54e075713715691d77d7b715b58533f51e3289694cda83aa20
4
+ data.tar.gz: 2f0a7a2df838bf960b3ab131600d5845eec38151ef63c0bf3e510da4d207d971
5
5
  SHA512:
6
- metadata.gz: 873b36bc6253d38f1ff14b1088dc07a2f074be14c22c97ddf6f770339be344cea9573d5ce054234d382bccd470ec490bac97a5768a9c09eb741db406c3a008ec
7
- data.tar.gz: d8e883448c1cae33233dcbe2ec68a0788ab01ed614fba3cf312172caff3986f81826059d5a5c95f1a95dab1deb0eecfaf006d77affaf43ebe794e8317639db72
6
+ metadata.gz: 5234f5d84ff2de5c3857493ab3c52a2f3c7bc03b96f68ba1122d1531ce086937072b7b4d20251ce7716dc81638d64bb95e74331031718c6899b247c3fc7ea561
7
+ data.tar.gz: 8ff4f8dfc0e233ef91639e6fbd02d7e74bda85dee490a1e1b7a47aa68d2eade50e5e4f581ca851f6f148b25344959650c78dd2103e1d32be044ba7c170ce4ff5
@@ -0,0 +1,35 @@
1
+ module Checks::Puppet
2
+ class WarnAboutPuppetRemoval < ForemanMaintain::Check
3
+ metadata do
4
+ description 'Warn about Puppet content removal prior to 6.10 upgrade'
5
+ label :warn_before_puppet_removal
6
+ confine do
7
+ feature(:instance).downstream &&
8
+ feature(:instance).downstream.current_minor_version == '6.9'
9
+ end
10
+ end
11
+
12
+ def run
13
+ message = "Puppet repositories found!\n"\
14
+ "Upgrading to 6.10 will delete the Puppet repositories\n"\
15
+ "if any of the following conditions are met,\n"\
16
+ "1. Any Puppet repositories in Library lifecycle environment.\n"\
17
+ "2. Unpublished content view's Puppet repositories.\n\n"\
18
+ "Note: Any Puppet content that is in use by hosts will not be deleted.\n"\
19
+ "After the upgrade, hosts will continue to use the Puppet modules,\n"\
20
+ 'but future Puppet content management '\
21
+ "must be handled outside of the Satellite!\n\n"\
22
+ 'Do you want to proceed?'
23
+ if puppet_repos_available?
24
+ answer = ask_decision(message, actions_msg: 'y(yes), n(no)')
25
+ exit 0 unless answer == :yes
26
+ end
27
+ end
28
+
29
+ def puppet_repos_available?
30
+ hammer_cmd = '--output json repository list --fields name --content-type puppet'
31
+ puppet_repos = feature(:hammer).run(hammer_cmd)
32
+ !JSON.parse(puppet_repos).empty?
33
+ end
34
+ end
35
+ end
@@ -0,0 +1,75 @@
1
+ require 'find'
2
+ require 'rexml/document'
3
+
4
+ module Procedures::Pulp
5
+ class CleanupOldMetadataFiles < ForemanMaintain::Procedure
6
+ metadata do
7
+ description 'Cleanup old and unneeded yum metadata files from /var/lib/pulp/'
8
+ confine do
9
+ check_max_version('katello-common', '4.0')
10
+ end
11
+ param :remove_files, 'If true, will actually delete files, otherwise will print them out.'
12
+ end
13
+
14
+ PULP_METADATA_DIR = '/var/lib/pulp/published/yum/master/yum_distributor/'.freeze
15
+ REPOMD_FILE = 'repomd.xml'.freeze
16
+
17
+ def run
18
+ return unless File.directory?(PULP_METADATA_DIR)
19
+ found = []
20
+
21
+ puts 'Warning: This command may cause reduced performance related to content operations.'
22
+ message = 'Locating repository metadata (this may take a while)'
23
+ with_spinner(message) do |spinner|
24
+ Find.find(PULP_METADATA_DIR) do |path|
25
+ next if File.basename(path) != REPOMD_FILE
26
+ found << path
27
+ spinner.update("#{message}: Found #{found.count} repos.")
28
+ end
29
+ end
30
+
31
+ found.each do |repo_md_path|
32
+ handle(repo_md_path, @remove_files)
33
+ end
34
+ end
35
+
36
+ def handle(repo_md_path, remove_files)
37
+ base_path = File.dirname(repo_md_path)
38
+ to_remove = list_existing_files(repo_md_path) - list_repomd_files(repo_md_path)
39
+
40
+ if to_remove.empty?
41
+ "Skipping #{base_path}, no files to remove."
42
+ elsif remove_files
43
+ puts '================================================================================'
44
+ puts "Removing #{to_remove.count} files from #{base_path}"
45
+ to_remove.each { |file| File.delete(File.join(base_path, file)) }
46
+ else
47
+ puts '================================================================================'
48
+ puts "For #{base_path} would remove, but --remove-files was not specified:"
49
+ to_remove.each { |file| puts " #{file}" }
50
+ end
51
+ end
52
+
53
+ def list_repomd_files(repo_md_path)
54
+ doc = REXML::Document.new(File.new(repo_md_path))
55
+ filenames = []
56
+ doc.root.elements.each do |data|
57
+ locations = data.elements['location']
58
+ next unless locations
59
+
60
+ if locations.attributes
61
+ filenames << locations.attributes['href']
62
+ end
63
+ end
64
+ base_names(filenames.flatten)
65
+ end
66
+
67
+ def list_existing_files(repo_md_path)
68
+ base_names(Dir[File.dirname(repo_md_path) + '/*']) - [REPOMD_FILE]
69
+ end
70
+
71
+ def base_names(file_list)
72
+ file_list.map { |file| File.basename(file) }
73
+ end
74
+ end
75
+ end
@@ -58,7 +58,8 @@ module Procedures::Pulp
58
58
  def ask_to_proceed(rm_cmds)
59
59
  question = "\nWARNING: All pulp2 packages will be removed with the following commands:\n"
60
60
  question += "\n# rpm -e #{pulp_packages.join(' ')}" if pulp_packages.any?
61
- question += "\n# yum remove rh-mongodb34-*" \
61
+ question += "\n# yum remove rh-mongodb34-*"
62
+ question += "\n# yum remove squid mod_wsgi" \
62
63
  "\n\nAll pulp2 data will be removed.\n"
63
64
  question += rm_cmds.collect { |cmd| "\n# #{cmd}" }.join
64
65
  question += "\n\nDo you want to proceed?"
@@ -77,6 +78,8 @@ module Procedures::Pulp
77
78
 
78
79
  remove_mongo
79
80
 
81
+ remove_other_packages
82
+
80
83
  drop_migration_tables
81
84
 
82
85
  drop_migrations
@@ -96,6 +99,12 @@ module Procedures::Pulp
96
99
  end
97
100
  end
98
101
 
102
+ def remove_other_packages
103
+ with_spinner('Removing additional packages') do
104
+ packages_action(:remove, %w[squid mod_wsgi], :assumeyes => true)
105
+ end
106
+ end
107
+
99
108
  def drop_migration_tables
100
109
  with_spinner('Dropping migration tables') do
101
110
  feature(:pulpcore_database).psql(<<-SQL)
@@ -98,6 +98,24 @@ module ForemanMaintain::Scenarios
98
98
  end
99
99
  end
100
100
 
101
+ class CleanupRepositoryMetadata < ContentBase
102
+ metadata do
103
+ label :cleanup_repository_metadata
104
+ description 'Remove old leftover repository metadata'
105
+ param :remove_files, 'Actually remove the files? Otherwise a dryrun is performed.'
106
+
107
+ manual_detection
108
+ end
109
+
110
+ def compose
111
+ add_step_with_context(Procedures::Pulp::CleanupOldMetadataFiles)
112
+ end
113
+
114
+ def set_context_mapping
115
+ context.map(:remove_files, Procedures::Pulp::CleanupOldMetadataFiles => :remove_files)
116
+ end
117
+ end
118
+
101
119
  class RemovePulp2 < ContentBase
102
120
  metadata do
103
121
  label :content_remove_pulp2
@@ -25,6 +25,7 @@ module Scenarios::Satellite_6_10
25
25
  end
26
26
 
27
27
  def compose
28
+ add_step(Checks::Puppet::WarnAboutPuppetRemoval)
28
29
  add_steps(find_checks(:default))
29
30
  add_steps(find_checks(:pre_upgrade))
30
31
  add_step(Checks::Foreman::CheckpointSegments)
@@ -34,6 +34,17 @@ module ForemanMaintain
34
34
  end
35
35
  end
36
36
 
37
+ subcommand 'cleanup-repository-metadata', 'Cleanup old repository metadata under Pulp 2' do
38
+ option ['-r', '--remove-files'], :flag, 'Remove the files instead of just listing them.',
39
+ :attribute_name => :remove_files
40
+
41
+ def execute
42
+ run_scenarios_and_exit(
43
+ Scenarios::Content::CleanupRepositoryMetadata.new(:remove_files => @remove_files)
44
+ )
45
+ end
46
+ end
47
+
37
48
  subcommand 'remove-pulp2', 'Remove pulp2 and mongodb packages and data' do
38
49
  interactive_option(%w[assumeyes plaintext])
39
50
  def execute
@@ -1,3 +1,3 @@
1
1
  module ForemanMaintain
2
- VERSION = '0.8.9'.freeze
2
+ VERSION = '0.8.10'.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: 0.8.9
4
+ version: 0.8.10
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: 2021-07-27 00:00:00.000000000 Z
11
+ date: 2021-08-03 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
14
  name: clamp
@@ -154,6 +154,7 @@ files:
154
154
  - definitions/checks/pulpcore/db_up.rb
155
155
  - definitions/checks/puppet/provide_upgrade_guide.rb
156
156
  - definitions/checks/puppet/verify_no_empty_cacert_requests.rb
157
+ - definitions/checks/puppet/warn_about_puppet_removal.rb
157
158
  - definitions/checks/remote_execution/verify_settings_file_already_exists.rb
158
159
  - definitions/checks/repositories/check_non_rh_repository.rb
159
160
  - definitions/checks/repositories/check_upstream_repository.rb
@@ -262,6 +263,7 @@ files:
262
263
  - definitions/procedures/packages/update_all_confirmation.rb
263
264
  - definitions/procedures/passenger_recycler.rb
264
265
  - definitions/procedures/prep_6_10_upgrade.rb
266
+ - definitions/procedures/pulp/cleanup_old_metadata_files.rb
265
267
  - definitions/procedures/pulp/migrate.rb
266
268
  - definitions/procedures/pulp/print_remove_instructions.rb
267
269
  - definitions/procedures/pulp/remove.rb