foreman_maintain 0.6.4 → 0.6.5
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 +4 -4
- data/definitions/checks/foreman/check_corrupted_roles.rb +14 -2
- data/definitions/procedures/backup/metadata.rb +2 -0
- data/definitions/procedures/restore/configs.rb +6 -0
- data/definitions/procedures/restore/regenerate_queues.rb +69 -0
- data/definitions/scenarios/backup.rb +1 -0
- data/definitions/scenarios/restore.rb +4 -2
- data/lib/foreman_maintain/utils/backup.rb +4 -0
- data/lib/foreman_maintain/version.rb +1 -1
- metadata +3 -2
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA256:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: 78da2357707f4caa6c3a4aa295c75a07abfff9370800b51b0f03647b2f3abb7f
|
4
|
+
data.tar.gz: 592c818c90870337f4fdc866a29e09e9f9b483f712603d18b84cc5533563d615
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: 64cf4d1dee1a471a0082fb6daf6ec23812b50ecfb7a32620966c790c2bf976d75fb1b86ae14e73fbda169393abea261fba30c07c00fad589c19ea5ea9902584b
|
7
|
+
data.tar.gz: 94611d55110abfcb196b9bd758af79352930aa977d36a1deb2c08f412730f596fbfeea19585f03ed671797028e2f7a3e6e4484ecec6e77541c73645260fa1a4c
|
@@ -14,14 +14,22 @@ module Checks
|
|
14
14
|
def run
|
15
15
|
items = find_filter_permissions
|
16
16
|
assert(items.empty?,
|
17
|
-
|
17
|
+
error_message(items),
|
18
18
|
:next_steps => Procedures::Foreman::FixCorruptedRoles.new)
|
19
19
|
end
|
20
20
|
|
21
|
+
def error_message(items)
|
22
|
+
roles = items.map { |item| item['role_name'] }.uniq
|
23
|
+
'There are filters having permissions with multiple resource types. ' \
|
24
|
+
'Roles with such filters are:' \
|
25
|
+
"\n#{roles.join("\n")}"
|
26
|
+
end
|
27
|
+
|
21
28
|
def find_filter_permissions
|
22
29
|
feature(:foreman_database).query(self.class.inconsistent_filter_perms)
|
23
30
|
end
|
24
31
|
|
32
|
+
# rubocop:disable Metrics/MethodLength
|
25
33
|
def self.inconsistent_filter_perms
|
26
34
|
subquery = <<-SQL
|
27
35
|
SELECT filters.id AS filter_id,
|
@@ -32,14 +40,17 @@ module Checks
|
|
32
40
|
filterings.id AS filtering_id,
|
33
41
|
permissions.id AS permission_id,
|
34
42
|
permissions.name AS permission_name,
|
35
|
-
permissions.resource_type
|
43
|
+
permissions.resource_type,
|
44
|
+
roles.name AS role_name
|
36
45
|
FROM filters INNER JOIN filterings ON filters.id = filterings.filter_id
|
37
46
|
INNER JOIN permissions ON permissions.id = filterings.permission_id
|
47
|
+
INNER JOIN roles ON filters.role_id = roles.id
|
38
48
|
SQL
|
39
49
|
|
40
50
|
<<-SQL
|
41
51
|
SELECT DISTINCT first.filter_id,
|
42
52
|
first.role_id,
|
53
|
+
first.role_name,
|
43
54
|
first.filtering_id,
|
44
55
|
first.permission_id,
|
45
56
|
first.permission_name,
|
@@ -54,6 +65,7 @@ module Checks
|
|
54
65
|
OR (first.resource_type != second.resource_type))
|
55
66
|
SQL
|
56
67
|
end
|
68
|
+
# rubocop:enable Metrics/MethodLength
|
57
69
|
end
|
58
70
|
end
|
59
71
|
end
|
@@ -6,6 +6,7 @@ module Procedures::Backup
|
|
6
6
|
preparation_steps { Checks::Foreman::DBUp.new if feature(:foreman_server) }
|
7
7
|
param :backup_dir, 'Directory where to backup to', :required => true
|
8
8
|
param :incremental_dir, 'Changes since specified backup only'
|
9
|
+
param :online_backup, 'Select for online backup', :flag => true, :default => false
|
9
10
|
end
|
10
11
|
|
11
12
|
def run
|
@@ -16,6 +17,7 @@ module Procedures::Backup
|
|
16
17
|
metadata['proxy_features'] = proxy_feature_list(spinner) || []
|
17
18
|
metadata['rpms'] = rpms(spinner)
|
18
19
|
metadata['incremental'] = @incremental_dir || false
|
20
|
+
metadata['online'] = @online_backup
|
19
21
|
save_metadata(metadata, spinner)
|
20
22
|
end
|
21
23
|
end
|
@@ -19,10 +19,15 @@ module Procedures::Restore
|
|
19
19
|
end
|
20
20
|
end
|
21
21
|
|
22
|
+
# rubocop:disable Metrics/MethodLength
|
22
23
|
def restore_configs(backup)
|
23
24
|
exclude = ForemanMaintain.available_features.each_with_object([]) do |feat, cfgs|
|
25
|
+
if backup.online_backup?
|
26
|
+
feat.config_files_exclude_for_online.each { |f| cfgs << f.gsub(%r{^/}, '') }
|
27
|
+
end
|
24
28
|
feat.config_files_to_exclude.each { |f| cfgs << f.gsub(%r{^/}, '') }
|
25
29
|
end
|
30
|
+
|
26
31
|
tar_options = {
|
27
32
|
:overwrite => true,
|
28
33
|
:listed_incremental => '/dev/null',
|
@@ -35,6 +40,7 @@ module Procedures::Restore
|
|
35
40
|
|
36
41
|
feature(:tar).run(tar_options)
|
37
42
|
end
|
43
|
+
# rubocop:enable Metrics/MethodLength
|
38
44
|
|
39
45
|
def reload_configs
|
40
46
|
feature(:mongo).reload_db_config if feature(:mongo)
|
@@ -0,0 +1,69 @@
|
|
1
|
+
module Procedures::Restore
|
2
|
+
class RegenerateQueues < ForemanMaintain::Procedure
|
3
|
+
metadata do
|
4
|
+
advanced_run false
|
5
|
+
description 'Regenerate required activemq and qpidd queues while restoring online backup'
|
6
|
+
confine do
|
7
|
+
feature(:pulp2)
|
8
|
+
end
|
9
|
+
end
|
10
|
+
|
11
|
+
def qpid_router_broker_port
|
12
|
+
@qpid_router_broker_port ||= feature(:installer).
|
13
|
+
answers['foreman_proxy_content']['qpid_router_broker_port']
|
14
|
+
end
|
15
|
+
|
16
|
+
def qpid_configs
|
17
|
+
@qpid_configs ||= {
|
18
|
+
'ssl_cert' => "/etc/pki/katello/certs/#{hostname}-qpid-broker.crt",
|
19
|
+
'ssl_key' => "/etc/pki/katello/private/#{hostname}-qpid-broker.key",
|
20
|
+
'amqps_url' => "amqps://localhost:#{qpid_router_broker_port}"
|
21
|
+
}
|
22
|
+
end
|
23
|
+
|
24
|
+
def katello_events
|
25
|
+
%w[compliance.created
|
26
|
+
entitlement.created
|
27
|
+
entitlement.deleted
|
28
|
+
pool.created
|
29
|
+
pool.deleted]
|
30
|
+
end
|
31
|
+
|
32
|
+
def run
|
33
|
+
with_spinner('Resetting the queues') do |spinner|
|
34
|
+
regenerate_activemq_queues(spinner)
|
35
|
+
regenerate_qpidd_queues(spinner)
|
36
|
+
spinner.update('Queues created successfully')
|
37
|
+
end
|
38
|
+
end
|
39
|
+
|
40
|
+
def regenerate_activemq_queues(spinner)
|
41
|
+
# The activemq queues(/var/lib/candlepin/activemq-artemis) regenerate on tomcat restart.
|
42
|
+
# After stopping the tomcat here, service start is triggered from the restore scenario.
|
43
|
+
spinner.update('Stopping tomcat service')
|
44
|
+
feature(:candlepin).services.select(&:exist?).first.stop
|
45
|
+
spinner.update('Recreating activemq queues')
|
46
|
+
execute!('rm -rf /var/lib/candlepin/activemq-artemis/')
|
47
|
+
end
|
48
|
+
|
49
|
+
def run_qpid_command(opts)
|
50
|
+
execute!("qpid-config --ssl-certificate #{qpid_configs['ssl_cert']} \\
|
51
|
+
--ssl-key #{qpid_configs['ssl_key']} -b #{qpid_configs['amqps_url']} #{opts}")
|
52
|
+
end
|
53
|
+
|
54
|
+
def regenerate_qpidd_queues(spinner)
|
55
|
+
feature(:service).handle_services(spinner, 'stop', :only => ['qpidd'])
|
56
|
+
execute!('rm -rf /var/lib/qpidd/.qpidd/qls')
|
57
|
+
spinner.update('Starting qpidd service')
|
58
|
+
feature(:service).handle_services(spinner, 'start', :only => ['qpidd'])
|
59
|
+
spinner.update('Service qpidd started, waiting 60 seconds to start it completely')
|
60
|
+
sleep 60
|
61
|
+
spinner.update('Recreating qpidd queues')
|
62
|
+
run_qpid_command('add exchange topic event --durable')
|
63
|
+
run_qpid_command('add queue katello_event_queue --durable')
|
64
|
+
katello_events.each do |event|
|
65
|
+
run_qpid_command("bind event katello_event_queue #{event}")
|
66
|
+
end
|
67
|
+
end
|
68
|
+
end
|
69
|
+
end
|
@@ -36,8 +36,10 @@ module ForemanMaintain::Scenarios
|
|
36
36
|
end
|
37
37
|
restore_mongo_dump(backup)
|
38
38
|
add_steps_with_context(Procedures::Pulp::Migrate,
|
39
|
-
Procedures::Pulpcore::Migrate
|
40
|
-
|
39
|
+
Procedures::Pulpcore::Migrate)
|
40
|
+
|
41
|
+
add_steps_with_context(Procedures::Restore::RegenerateQueues) if backup.online_backup?
|
42
|
+
add_steps_with_context(Procedures::Service::Start,
|
41
43
|
Procedures::Service::DaemonReload)
|
42
44
|
end
|
43
45
|
# rubocop:enable Metrics/MethodLength,Metrics/AbcSize
|
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.6.
|
4
|
+
version: 0.6.5
|
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: 2020-
|
11
|
+
date: 2020-06-03 00:00:00.000000000 Z
|
12
12
|
dependencies:
|
13
13
|
- !ruby/object:Gem::Dependency
|
14
14
|
name: clamp
|
@@ -265,6 +265,7 @@ files:
|
|
265
265
|
- definitions/procedures/restore/pg_global_objects.rb
|
266
266
|
- definitions/procedures/restore/postgres_owner.rb
|
267
267
|
- definitions/procedures/restore/pulpcore_dump.rb
|
268
|
+
- definitions/procedures/restore/regenerate_queues.rb
|
268
269
|
- definitions/procedures/selinux/set_file_security.rb
|
269
270
|
- definitions/procedures/service/base.rb
|
270
271
|
- definitions/procedures/service/daemon_reload.rb
|