foreman_maintain 0.6.4 → 0.6.5
Sign up to get free protection for your applications and to get access to all the features.
- 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
|