foreman_maintain 1.0.0 → 1.0.1
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_proxy/check_tftp_storage.rb +3 -1
- data/definitions/checks/repositories/check_non_rh_repository.rb +9 -4
- data/definitions/checks/repositories/check_upstream_repository.rb +4 -4
- data/definitions/features/upstream_repositories.rb +23 -0
- data/definitions/procedures/pulp/remove.rb +12 -0
- data/definitions/procedures/repositories/backup_enabled_repos.rb +1 -1
- data/definitions/procedures/repositories/disable.rb +1 -1
- data/definitions/procedures/repositories/enable.rb +1 -1
- data/definitions/scenarios/self_upgrade.rb +1 -1
- data/lib/foreman_maintain/concerns/downstream.rb +7 -7
- data/lib/foreman_maintain/concerns/system_helpers.rb +4 -0
- data/lib/foreman_maintain/repository_manager/el.rb +85 -0
- data/lib/foreman_maintain/repository_manager.rb +13 -0
- data/lib/foreman_maintain/version.rb +1 -1
- data/lib/foreman_maintain.rb +1 -0
- metadata +5 -3
- data/definitions/features/system_repos.rb +0 -58
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA256:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: e70bdc300a891fd04cb9e489737a0a96a46d83977f192eddc1ee14a8deff7b9b
|
4
|
+
data.tar.gz: ac5dc055fc90930f91c844f7c7bd411d156c943d911b56d9df5aafab4262481a
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: ce61614ae7a224595e48ef2cf4a8e0f268e3a7f1f59b8bc67af8ea19c7926ee6fe2d1f6474a8a13fb758627e7c2aa87d272163a064298c208a97e6e3279978da
|
7
|
+
data.tar.gz: 983efdf31d1fdfc9dedca4c66374d178ef34310da40900e60af7f85550627d0416f88713316c93551f66c75bc775d7a533524b38b1e28e603944c6edf3d8bb6d
|
@@ -44,7 +44,9 @@ module Checks::ForemanProxy
|
|
44
44
|
def self.lookup_token_duration
|
45
45
|
data = feature(:foreman_database). \
|
46
46
|
query("select s.value, s.default from settings s \
|
47
|
-
where category
|
47
|
+
where category IN ('Setting::Provisioning','Setting') \
|
48
|
+
and name = 'token_duration'")
|
49
|
+
|
48
50
|
YAML.load(data[0]['value'] || data[0]['default'])
|
49
51
|
end
|
50
52
|
end
|
@@ -11,13 +11,18 @@ module Checks::Repositories
|
|
11
11
|
|
12
12
|
def run
|
13
13
|
with_spinner('Checking repositories enabled on the system') do
|
14
|
-
assert(
|
14
|
+
assert(epel_not_enabled?, 'System is subscribed to non Red Hat repositories')
|
15
15
|
end
|
16
16
|
end
|
17
17
|
|
18
|
-
def
|
19
|
-
system_repos =
|
20
|
-
system_repos.
|
18
|
+
def epel_not_enabled?
|
19
|
+
system_repos = repository_manager.enabled_repos
|
20
|
+
system_repos.each do |repoid, repourl|
|
21
|
+
unless repoid.match(/\bepel\b/i).nil? || repourl.match(/\bepel\b/i).nil?
|
22
|
+
return false
|
23
|
+
end
|
24
|
+
end
|
25
|
+
true
|
21
26
|
end
|
22
27
|
end
|
23
28
|
end
|
@@ -14,10 +14,10 @@ class Checks::CheckUpstreamRepository < ForemanMaintain::Check
|
|
14
14
|
|
15
15
|
def run
|
16
16
|
with_spinner('Checking for presence of upstream repositories') do
|
17
|
-
|
18
|
-
assert(
|
19
|
-
"System has upstream #{
|
20
|
-
:next_steps => Procedures::Repositories::Disable.new(:repos =>
|
17
|
+
enabled_repo_ids = feature(:upstream_repositories).repoids_and_urls.keys
|
18
|
+
assert(enabled_repo_ids.empty?,
|
19
|
+
"System has upstream #{enabled_repo_ids.join(',')} repositories enabled",
|
20
|
+
:next_steps => Procedures::Repositories::Disable.new(:repos => enabled_repo_ids))
|
21
21
|
end
|
22
22
|
end
|
23
23
|
end
|
@@ -0,0 +1,23 @@
|
|
1
|
+
class Features::UpstreamRepositories < ForemanMaintain::Feature
|
2
|
+
metadata do
|
3
|
+
label :upstream_repositories
|
4
|
+
description 'Feature for operations on upstream repositories'
|
5
|
+
end
|
6
|
+
|
7
|
+
def repoids_and_urls
|
8
|
+
repoids_and_urls = {}
|
9
|
+
repository_manager.enabled_repos.each do |repo, url|
|
10
|
+
repo_urls.each do |regex|
|
11
|
+
repoids_and_urls[repo] = url if url =~ regex
|
12
|
+
end
|
13
|
+
end
|
14
|
+
repoids_and_urls
|
15
|
+
end
|
16
|
+
|
17
|
+
private
|
18
|
+
|
19
|
+
def repo_urls
|
20
|
+
[%r{yum.theforeman.org\/*},
|
21
|
+
%r{yum.puppetlabs.com\/*}]
|
22
|
+
end
|
23
|
+
end
|
@@ -86,6 +86,8 @@ module Procedures::Pulp
|
|
86
86
|
drop_migrations
|
87
87
|
|
88
88
|
delete_pulp_data(rm_cmds) if rm_cmds.any?
|
89
|
+
|
90
|
+
restart_pulpcore_services
|
89
91
|
end
|
90
92
|
|
91
93
|
def remove_pulp
|
@@ -168,5 +170,15 @@ module Procedures::Pulp
|
|
168
170
|
spinner.update('Done deleting pulp2 data directories')
|
169
171
|
end
|
170
172
|
end
|
173
|
+
|
174
|
+
def restart_pulpcore_services
|
175
|
+
with_spinner('Restarting pulpcore services') do |spinner|
|
176
|
+
pulp_services = feature(:pulpcore).services
|
177
|
+
|
178
|
+
feature(:service).handle_services(spinner, 'stop', :only => pulp_services)
|
179
|
+
feature(:service).handle_services(spinner, 'start', :only => pulp_services)
|
180
|
+
spinner.update('Done restarting pulpcore services')
|
181
|
+
end
|
182
|
+
end
|
171
183
|
end
|
172
184
|
end
|
@@ -6,7 +6,7 @@ module Procedures::Repositories
|
|
6
6
|
end
|
7
7
|
|
8
8
|
def run
|
9
|
-
enabled_repos_ids =
|
9
|
+
enabled_repos_ids = repository_manager.enabled_repos.keys
|
10
10
|
unless enabled_repos_ids.empty?
|
11
11
|
backup_dir = File.expand_path(ForemanMaintain.config.backup_dir)
|
12
12
|
File.write(File.join(backup_dir, 'enabled_repos.yml'), enabled_repos_ids.to_yaml)
|
@@ -17,6 +17,10 @@ module ForemanMaintain
|
|
17
17
|
current_version.to_s[/^\d+\.\d+/]
|
18
18
|
end
|
19
19
|
|
20
|
+
def repository_manager
|
21
|
+
ForemanMaintain.repository_manager
|
22
|
+
end
|
23
|
+
|
20
24
|
# TODO: Modify activation_key changes as per server
|
21
25
|
def setup_repositories(version)
|
22
26
|
activation_key = ENV['EXTERNAL_SAT_ACTIVATION_KEY']
|
@@ -26,18 +30,14 @@ module ForemanMaintain
|
|
26
30
|
execute!(%(subscription-manager register #{org_options}\
|
27
31
|
--activationkey #{shellescape(activation_key)} --force))
|
28
32
|
else
|
29
|
-
|
30
|
-
|
31
|
-
execute!(%(subscription-manager repos #{enable_options}))
|
33
|
+
repository_manager.rhsm_disable_repos('*')
|
34
|
+
repository_manager.rhsm_enable_repos(rh_repos(version))
|
32
35
|
end
|
33
36
|
end
|
34
37
|
|
35
38
|
def absent_repos(version)
|
36
|
-
all_repo_lines = execute(%(LANG=en_US.utf-8 subscription-manager repos --list 2>&1 | ) +
|
37
|
-
%(grep '^Repo ID:')).split("\n")
|
38
|
-
all_repos = all_repo_lines.map { |line| line.split(/\s+/).last }
|
39
39
|
repos_required = rh_repos(version)
|
40
|
-
repos_found = repos_required &
|
40
|
+
repos_found = repos_required & repository_manager.rhsm_list_repos.keys
|
41
41
|
repos_required - repos_found
|
42
42
|
end
|
43
43
|
|
@@ -0,0 +1,85 @@
|
|
1
|
+
module ForemanMaintain::RepositoryManager
|
2
|
+
class El
|
3
|
+
include ForemanMaintain::Concerns::OsFacts
|
4
|
+
include ForemanMaintain::Concerns::SystemHelpers
|
5
|
+
|
6
|
+
def disable_repos(repo_ids)
|
7
|
+
if el7?
|
8
|
+
execute!("yum-config-manager #{config_manager_options(repo_ids, 'disable')}")
|
9
|
+
else
|
10
|
+
execute!("dnf config-manager #{config_manager_options(repo_ids, 'set-disabled')}")
|
11
|
+
end
|
12
|
+
end
|
13
|
+
|
14
|
+
def rhsm_disable_repos(repo_ids)
|
15
|
+
if rhsm_available?
|
16
|
+
execute!(%(subscription-manager repos #{rhsm_options(repo_ids, 'disable')}))
|
17
|
+
else
|
18
|
+
logger.info("subscription-manager is not available.\
|
19
|
+
Using #{pkg_manager} config manager instead.")
|
20
|
+
disable_repos(repo_ids)
|
21
|
+
end
|
22
|
+
end
|
23
|
+
|
24
|
+
def enable_repos(repo_ids)
|
25
|
+
if el7?
|
26
|
+
execute!("yum-config-manager #{config_manager_options(repo_ids, 'enable')}")
|
27
|
+
else
|
28
|
+
execute!("dnf config-manager #{config_manager_options(repo_ids, 'enable')}")
|
29
|
+
end
|
30
|
+
end
|
31
|
+
|
32
|
+
def rhsm_enable_repos(repo_ids)
|
33
|
+
if rhsm_available?
|
34
|
+
execute!(%(subscription-manager repos #{rhsm_options(repo_ids, 'enable')}))
|
35
|
+
else
|
36
|
+
logger.info("subscription-manager is not available.\
|
37
|
+
Using #{pkg_manager} config manager instead.")
|
38
|
+
enable_repos(repo_ids)
|
39
|
+
end
|
40
|
+
end
|
41
|
+
|
42
|
+
def rhsm_options(repo_ids, options)
|
43
|
+
repo_ids.map { |r| "--#{options}=#{r}" }.join(' ')
|
44
|
+
end
|
45
|
+
|
46
|
+
def config_manager_options(repo_ids, options)
|
47
|
+
repo_ids_string = if repo_ids.is_a?(Array)
|
48
|
+
repo_ids.join(',')
|
49
|
+
else
|
50
|
+
repo_ids
|
51
|
+
end
|
52
|
+
format_shell_args("--#{options}" => repo_ids_string)
|
53
|
+
end
|
54
|
+
|
55
|
+
def rhsm_available?
|
56
|
+
@rhsm_available ||= find_package('subscription-manager')
|
57
|
+
end
|
58
|
+
|
59
|
+
def rhsm_list_repos(list_option = '--list')
|
60
|
+
repos = execute(%(LANG=en_US.utf-8 subscription-manager repos #{list_option} 2>&1))
|
61
|
+
return {} if repos.empty?
|
62
|
+
|
63
|
+
hash_of_repoids_urls(repos, /Repo ID|Repo URL/)
|
64
|
+
end
|
65
|
+
|
66
|
+
def pkg_manager
|
67
|
+
package_manager.class.name.split('::').last.downcase
|
68
|
+
end
|
69
|
+
|
70
|
+
def enabled_repos
|
71
|
+
cmd = "#{pkg_manager} repolist enabled -d 6 -e 0 2> /dev/null"
|
72
|
+
repos = execute(cmd)
|
73
|
+
return {} if repos.empty?
|
74
|
+
|
75
|
+
hash_of_repoids_urls(repos, /Repo-id|Repo-baseurl/)
|
76
|
+
end
|
77
|
+
|
78
|
+
def hash_of_repoids_urls(repos, regex)
|
79
|
+
Hash[*repos.split("\n").grep(regex).map do |entry|
|
80
|
+
entry.split(':', 2).last.strip
|
81
|
+
end
|
82
|
+
]
|
83
|
+
end
|
84
|
+
end
|
85
|
+
end
|
@@ -0,0 +1,13 @@
|
|
1
|
+
require 'foreman_maintain/repository_manager/el'
|
2
|
+
include ForemanMaintain::Concerns::OsFacts
|
3
|
+
module ForemanMaintain
|
4
|
+
def self.repository_manager
|
5
|
+
@repository_manager ||= if el?
|
6
|
+
ForemanMaintain::RepositoryManager::El.new
|
7
|
+
elsif debian?
|
8
|
+
raise 'Not implemented!'
|
9
|
+
else
|
10
|
+
raise 'No supported repository manager was found'
|
11
|
+
end
|
12
|
+
end
|
13
|
+
end
|
data/lib/foreman_maintain.rb
CHANGED
@@ -40,6 +40,7 @@ module ForemanMaintain
|
|
40
40
|
require 'foreman_maintain/upgrade_runner'
|
41
41
|
require 'foreman_maintain/reporter'
|
42
42
|
require 'foreman_maintain/package_manager'
|
43
|
+
require 'foreman_maintain/repository_manager'
|
43
44
|
require 'foreman_maintain/utils'
|
44
45
|
require 'foreman_maintain/error'
|
45
46
|
|
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.0.
|
4
|
+
version: 1.0.1
|
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-12-
|
11
|
+
date: 2021-12-13 00:00:00.000000000 Z
|
12
12
|
dependencies:
|
13
13
|
- !ruby/object:Gem::Dependency
|
14
14
|
name: clamp
|
@@ -214,9 +214,9 @@ files:
|
|
214
214
|
- definitions/features/satellite.rb
|
215
215
|
- definitions/features/service.rb
|
216
216
|
- definitions/features/sync_plans.rb
|
217
|
-
- definitions/features/system_repos.rb
|
218
217
|
- definitions/features/tar.rb
|
219
218
|
- definitions/features/upstream.rb
|
219
|
+
- definitions/features/upstream_repositories.rb
|
220
220
|
- definitions/procedures/backup/accessibility_confirmation.rb
|
221
221
|
- definitions/procedures/backup/clean.rb
|
222
222
|
- definitions/procedures/backup/compress_data.rb
|
@@ -416,6 +416,8 @@ files:
|
|
416
416
|
- lib/foreman_maintain/procedure.rb
|
417
417
|
- lib/foreman_maintain/reporter.rb
|
418
418
|
- lib/foreman_maintain/reporter/cli_reporter.rb
|
419
|
+
- lib/foreman_maintain/repository_manager.rb
|
420
|
+
- lib/foreman_maintain/repository_manager/el.rb
|
419
421
|
- lib/foreman_maintain/runner.rb
|
420
422
|
- lib/foreman_maintain/runner/execution.rb
|
421
423
|
- lib/foreman_maintain/runner/stored_execution.rb
|
@@ -1,58 +0,0 @@
|
|
1
|
-
class Features::SystemRepos < ForemanMaintain::Feature
|
2
|
-
metadata do
|
3
|
-
label :system_repos
|
4
|
-
description 'Feature for operations on yum repositories of system'
|
5
|
-
end
|
6
|
-
|
7
|
-
def upstream_repos
|
8
|
-
repositories = {}
|
9
|
-
enabled_repos_hash.each do |repo, url|
|
10
|
-
upstream_repo_urls.each do |regex|
|
11
|
-
repositories[repo] = url if url =~ regex
|
12
|
-
end
|
13
|
-
end
|
14
|
-
repositories
|
15
|
-
end
|
16
|
-
|
17
|
-
def enabled_repos_hash
|
18
|
-
repos = execute("yum repolist enabled -d 6 -e 0 2> /dev/null | grep -E 'Repo-id|Repo-baseurl'")
|
19
|
-
return {} if repos.empty?
|
20
|
-
|
21
|
-
Hash[*repos.delete!(' ').split("\n")]
|
22
|
-
end
|
23
|
-
|
24
|
-
def enabled_repos_ids
|
25
|
-
trim_repoids(enabled_repos_hash.keys)
|
26
|
-
end
|
27
|
-
|
28
|
-
def upstream_repos_ids
|
29
|
-
trim_repoids(upstream_repos.keys)
|
30
|
-
end
|
31
|
-
|
32
|
-
def disable_repos(repo_ids)
|
33
|
-
execute!("yum-config-manager --disable #{repo_ids.join(',')}")
|
34
|
-
end
|
35
|
-
|
36
|
-
def enable_repos(repo_ids)
|
37
|
-
execute!("yum-config-manager --enable #{repo_ids.join(',')}")
|
38
|
-
end
|
39
|
-
|
40
|
-
private
|
41
|
-
|
42
|
-
def trim_repoids(repos)
|
43
|
-
repos.map { |r| r.gsub(%r{Repo-id:|\/+\w*}, '') }
|
44
|
-
end
|
45
|
-
|
46
|
-
def upstream_repo_urls
|
47
|
-
repo_urls = { :Foreman => %r{yum.theforeman.org\/},
|
48
|
-
:Katello => %r{fedorapeople.org\/groups\/katello\/releases\/yum\/[\/|\w|.]*} }
|
49
|
-
[/#{repo_urls[:Foreman]}+releases/,
|
50
|
-
/#{repo_urls[:Foreman]}+plugins/,
|
51
|
-
/#{repo_urls[:Katello]}+katello/,
|
52
|
-
/#{repo_urls[:Katello]}+client/,
|
53
|
-
/#{repo_urls[:Katello]}+candlepin/,
|
54
|
-
/#{repo_urls[:Katello]}+pulp/,
|
55
|
-
%r{yum.puppetlabs.com\/el\/[\w|\/|\.]*\/x86_64},
|
56
|
-
%r{repos.fedorapeople.org\/repos\/pulp\/[\/|\w|.]*\/x86_64}]
|
57
|
-
end
|
58
|
-
end
|