foreman_maintain 0.8.17 → 0.8.18

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: f613ab2a7afc435fa01364dac9c15825723b336336676056d7f796b57a21e841
4
- data.tar.gz: fd709a9384cb55f2ccf9a9a7e3be34bf239b24748f8fff49fd2921c08df4c228
3
+ metadata.gz: 455f573cec6321cd19ca9116d9f1482cd16f63406c460646fe20dc10ec84952d
4
+ data.tar.gz: ac42424b2f6aa0b6cf4133300c131333a46e7fa145bb814bb43884f8f9edbff7
5
5
  SHA512:
6
- metadata.gz: 55958174a3e670b8ccfefeb09695a8fc84a323901c490f2dc0df88669c2f4d7e870f48a3d5c45f42f668f26fec8fe74d6478b29fcdb2a31f4bbd6b85137f8a41
7
- data.tar.gz: 167635eec986782698efdaff762167d18e5a5f63d5f371ebe9600457ced03a6db849465d36c1c9e4fea377dcb47adfec1989e2ed67aaf71dba01d4dcce3a72b3
6
+ metadata.gz: f7675e2558fc4703674f70b001a67e2ec492cb1188e36a2a31d0f0cbd86d4ebb9272f5a35107be8e516de015c97663c39f3bd21407197cee896fa389cda26033
7
+ data.tar.gz: 7904e234c90ffef03834dd5fa695a96b7b315ccc69ae9bddeb00f4562babd15976886b6efcba7feac5380051c7fc0cec7f25558a46aedec19a9425434e4e757b
@@ -12,10 +12,7 @@ class Checks::CheckForNewerPackages < ForemanMaintain::Check
12
12
  end
13
13
 
14
14
  def run
15
- exit_status, = ForemanMaintain.package_manager.check_update(packages: @packages,
16
- with_status: true)
17
- assert(exit_status == 0, 'An update is available for one of these packages: '\
18
- "#{@packages.join(',')}. Please update before proceeding.")
15
+ check_for_package_update
19
16
  if @manual_confirmation_version
20
17
  question = 'Confirm that you are running the latest minor release of Satellite '\
21
18
  "#{@manual_confirmation_version}"
@@ -23,4 +20,45 @@ class Checks::CheckForNewerPackages < ForemanMaintain::Check
23
20
  abort! if answer != :yes
24
21
  end
25
22
  end
23
+
24
+ def check_for_package_update
25
+ exit_status, output = ForemanMaintain.package_manager.check_update(packages: @packages,
26
+ with_status: true)
27
+ packages_with_updates = []
28
+ if exit_status == 100
29
+ packages_with_updates = compare_pkg_versions(output).select do |_, result|
30
+ result == -1
31
+ end.keys
32
+ end
33
+
34
+ unless packages_with_updates.empty?
35
+ failure_message = 'An update is available for package(s): '\
36
+ "#{packages_with_updates.join(',')}. Please update before proceeding!"
37
+ fail! failure_message
38
+ end
39
+ end
40
+
41
+ def packages_and_versions(output)
42
+ pkgs_versions = {}
43
+ pkg_details = output.split("\n\n")[1].split
44
+ @packages.each do |pkg|
45
+ pkg_details.each_with_index do |ele, index|
46
+ next unless ele.start_with?(pkg)
47
+ pkgs_versions[pkg] = version(pkg_details[index + 1].split('-').first)
48
+ break
49
+ end
50
+ end
51
+ pkgs_versions
52
+ end
53
+
54
+ def compare_pkg_versions(output)
55
+ compare_pkg_versions = {}
56
+ packages_and_versions = packages_and_versions(output)
57
+ pkg_versions610 = { 'python3-pulp-2to3-migration' => version('0.12'),
58
+ 'tfm-rubygem-katello' => version('4.1') }
59
+ packages_and_versions.each do |name, version|
60
+ compare_pkg_versions[name] = version.<=>(pkg_versions610[name])
61
+ end
62
+ compare_pkg_versions
63
+ end
26
64
  end
@@ -21,7 +21,8 @@ module Procedures::Pulp
21
21
  '/var/lib/pulp/content',
22
22
  '/var/lib/pulp/importers',
23
23
  '/var/lib/pulp/uploads',
24
- '/var/lib/mongodb/'
24
+ '/var/lib/mongodb/',
25
+ '/var/cache/pulp'
25
26
  ]
26
27
  end
27
28
 
@@ -147,7 +147,7 @@ module ForemanMaintain
147
147
  end
148
148
 
149
149
  def format_shell_args(options = {})
150
- options.map { |shell_optn, val| " #{shell_optn} '#{shellescape(val)}'" }.join
150
+ options.map { |shell_optn, val| " #{shell_optn} #{shellescape(val)}" }.join
151
151
  end
152
152
 
153
153
  def find_symlinks(dir_path)
@@ -77,11 +77,15 @@ module ForemanMaintain
77
77
  end
78
78
 
79
79
  def valid_fpc_backup?
80
- fpc_online_backup? || fpc_standard_backup? || fpc_logical_backup?
80
+ fpc_online_backup? || fpc_standard_backup? || fpc_logical_backup? || \
81
+ # fpc can have setup where mongo or pulpcore db is external but not both
82
+ fpc_hybrid_db_backup?
81
83
  end
82
84
 
83
85
  def valid_katello_backup?
84
- katello_online_backup? || katello_standard_backup? || katello_logical_backup?
86
+ katello_online_backup? || katello_standard_backup? || katello_logical_backup? || \
87
+ # Katello can have setup where some of dbs are external but not all
88
+ katello_hybrid_db_backup?
85
89
  end
86
90
 
87
91
  def valid_foreman_backup?
@@ -104,7 +108,6 @@ module ForemanMaintain
104
108
  true
105
109
  end
106
110
 
107
- # TODO: Need to check for pulpcore feature?
108
111
  def katello_standard_backup?
109
112
  present = [:pgsql_data]
110
113
  absent = [:candlepin_dump, :foreman_dump, :pulpcore_dump, :mongo_dump]
@@ -155,6 +158,14 @@ module ForemanMaintain
155
158
  :absent => absent)
156
159
  end
157
160
 
161
+ def katello_hybrid_db_backup?
162
+ all_dbs = { :pgsql_data => %w[candlepin foreman], :mongo_data => [] }
163
+ all_dbs[:pgsql_data] << 'pulpcore' if feature(:pulpcore_database)
164
+ all_dbs[:mongo_data] << 'mongo' if feature(:mongo)
165
+ present, absent = dumps_for_hybrid_db_setup(all_dbs)
166
+ check_file_existence(:present => present, :absent => absent)
167
+ end
168
+
158
169
  def fpc_standard_backup?
159
170
  present = []
160
171
  absent = [:candlepin_dump, :foreman_dump, :pulpcore_dump, :mongo_dump]
@@ -207,6 +218,15 @@ module ForemanMaintain
207
218
  check_file_existence(:present => present, :absent => absent)
208
219
  end
209
220
 
221
+ def fpc_hybrid_db_backup?
222
+ all_dbs = { :pgsql_data => [], :mongo_data => [] }
223
+ all_dbs[:pgsql_data] << 'pulpcore' if feature(:pulpcore_database)
224
+ all_dbs[:mongo_data] << 'mongo' if feature(:mongo)
225
+ present, absent = dumps_for_hybrid_db_setup(all_dbs)
226
+ absent.concat [:candlepin_dump, :foreman_dump]
227
+ check_file_existence(:present => present, :absent => absent)
228
+ end
229
+
210
230
  def foreman_standard_backup?
211
231
  check_file_existence(:present => [:pgsql_data],
212
232
  :absent => [:candlepin_dump, :foreman_dump, :pulpcore_dump,
@@ -224,6 +244,27 @@ module ForemanMaintain
224
244
  :absent => [:candlepin_dump, :mongo_data, :mongo_dump, :pulpcore_dump])
225
245
  end
226
246
 
247
+ # rubocop:disable Metrics/MethodLength
248
+ def dumps_for_hybrid_db_setup(dbs_hash)
249
+ present = []
250
+ absent = []
251
+ dbs_hash.each do |data_file, dbs|
252
+ dbs.each do |db|
253
+ feature_label = db == 'mongo' ? db : "#{db}_database"
254
+ dump_file = "#{db}_dump"
255
+ if feature(feature_label.to_sym).local?
256
+ present |= [data_file]
257
+ absent << dump_file.to_sym
258
+ else
259
+ present << dump_file.to_sym
260
+ end
261
+ end
262
+ absent |= [data_file] unless present.include?(data_file)
263
+ end
264
+ [present, absent]
265
+ end
266
+ # rubocop:enable Metrics/MethodLength
267
+
227
268
  def validate_hostname?
228
269
  # make sure that the system hostname is the same as the backup
229
270
  config_tarball = file_map[:config_files][:path]
@@ -1,3 +1,3 @@
1
1
  module ForemanMaintain
2
- VERSION = '0.8.17'.freeze
2
+ VERSION = '0.8.18'.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.17
4
+ version: 0.8.18
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-09-22 00:00:00.000000000 Z
11
+ date: 2021-09-30 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
14
  name: clamp