foreman_maintain 0.0.6 → 0.0.7
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/README.md +75 -3
- data/config/foreman_maintain.yml.example +6 -0
- data/config/foreman_maintain.yml.packaging +6 -0
- data/definitions/checks/disk_speed_minimal.rb +1 -1
- data/definitions/checks/foreman_proxy/verify_dhcp_config_syntax.rb +17 -0
- data/definitions/checks/system_registration.rb +1 -1
- data/definitions/features/downstream.rb +31 -0
- data/definitions/features/foreman_1_7_x.rb +33 -0
- data/definitions/features/foreman_proxy.rb +72 -0
- data/definitions/features/sync_plans.rb +14 -20
- data/definitions/features/upstream.rb +4 -0
- data/definitions/procedures/foreman_tasks/delete.rb +2 -1
- data/definitions/procedures/hammer_setup.rb +4 -4
- data/definitions/procedures/installer/upgrade.rb +19 -0
- data/definitions/procedures/maintenance_mode/disable.rb +13 -0
- data/definitions/procedures/maintenance_mode/enable.rb +13 -0
- data/definitions/procedures/packages/install.rb +20 -0
- data/definitions/procedures/packages/update.rb +20 -0
- data/definitions/procedures/repositories/setup.rb +18 -0
- data/definitions/procedures/sync_plans/disable.rb +4 -0
- data/definitions/procedures/sync_plans/enable.rb +5 -0
- data/definitions/scenarios/upgrade_to_satellite_6_2.rb +77 -0
- data/lib/foreman_maintain.rb +5 -2
- data/lib/foreman_maintain/check.rb +11 -4
- data/lib/foreman_maintain/cli.rb +23 -0
- data/lib/foreman_maintain/cli/advanced/procedure/abstract_by_tag_command.rb +38 -0
- data/lib/foreman_maintain/cli/advanced/procedure/abstract_procedure_command.rb +17 -0
- data/lib/foreman_maintain/cli/advanced/procedure/by_tag_command.rb +32 -0
- data/lib/foreman_maintain/cli/advanced/procedure/run_command.rb +17 -0
- data/lib/foreman_maintain/cli/advanced/procedure_command.rb +11 -0
- data/lib/foreman_maintain/cli/advanced_command.rb +9 -0
- data/lib/foreman_maintain/cli/base.rb +52 -7
- data/lib/foreman_maintain/cli/health_command.rb +0 -12
- data/lib/foreman_maintain/cli/transform_clamp_options.rb +66 -0
- data/lib/foreman_maintain/cli/upgrade_command.rb +45 -33
- data/lib/foreman_maintain/concerns/metadata.rb +28 -2
- data/lib/foreman_maintain/concerns/scenario_metadata.rb +44 -0
- data/lib/foreman_maintain/concerns/system_helpers.rb +27 -5
- data/lib/foreman_maintain/config.rb +10 -5
- data/lib/foreman_maintain/core_ext.rb +5 -1
- data/lib/foreman_maintain/csv_parser.rb +81 -0
- data/lib/foreman_maintain/dependency_graph.rb +10 -48
- data/lib/foreman_maintain/error.rb +4 -0
- data/lib/foreman_maintain/executable.rb +64 -13
- data/lib/foreman_maintain/param.rb +1 -0
- data/lib/foreman_maintain/reporter.rb +84 -3
- data/lib/foreman_maintain/reporter/cli_reporter.rb +57 -21
- data/lib/foreman_maintain/runner.rb +80 -21
- data/lib/foreman_maintain/runner/execution.rb +29 -4
- data/lib/foreman_maintain/runner/stored_execution.rb +23 -0
- data/lib/foreman_maintain/scenario.rb +90 -7
- data/lib/foreman_maintain/upgrade_runner.rb +194 -0
- data/lib/foreman_maintain/utils.rb +1 -0
- data/lib/foreman_maintain/utils/curl_response.rb +21 -0
- data/lib/foreman_maintain/version.rb +1 -1
- metadata +24 -14
- data/definitions/checks/sync_plans/with_disabled_status.rb +0 -18
- data/definitions/checks/sync_plans/with_enabled_status.rb +0 -19
- data/definitions/procedures/install_package.rb +0 -17
- data/definitions/scenarios/pre_upgrade_check_foreman_1_14.rb +0 -13
- data/definitions/scenarios/pre_upgrade_check_satellite_6_0_z.rb +0 -14
- data/definitions/scenarios/pre_upgrade_check_satellite_6_1.rb +0 -14
- data/definitions/scenarios/pre_upgrade_check_satellite_6_1_z.rb +0 -14
- data/definitions/scenarios/pre_upgrade_check_satellite_6_2.rb +0 -14
- data/definitions/scenarios/pre_upgrade_check_satellite_6_2_z.rb +0 -14
- data/definitions/scenarios/pre_upgrade_check_satellite_6_3.rb +0 -14
- data/lib/foreman_maintain/object_cache.rb +0 -34
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA1:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: f06770124cbd3e2be20090877be87d6180a42eb5
|
4
|
+
data.tar.gz: ac4527d5767a4a83ac0a261acb7fc909e52e7388
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: e0ac14d818c8eef103783ac56812c86961c4e159cd7cadb1ee18a21391d754a62af9171b7162b5aa6f6ab0bfc0056ed21c52931cbe092cea95485b4329111e58
|
7
|
+
data.tar.gz: 78c4598b243767017b594f7ee3819843025f4c5c314a3713515a6333e4ffbcecdc3e25629eba63b347716e1136de8f87941b911d2180678614cc3dd5020a581c
|
data/README.md
CHANGED
@@ -1,4 +1,4 @@
|
|
1
|
-
# Foreman Maintenance
|
1
|
+
# Foreman Maintenance [](https://travis-ci.org/theforeman/foreman_maintain)
|
2
2
|
|
3
3
|
`foreman_maintain` aims to provide various features that helps keeping the
|
4
4
|
Foreman/Satellite up and running. It supports multiple versions and subparts
|
@@ -17,8 +17,80 @@ Subcommands:
|
|
17
17
|
--tags tags Limit only for specific set of tags
|
18
18
|
|
19
19
|
upgrade Upgrade related commands
|
20
|
-
list-versions
|
21
|
-
check TARGET_VERSION
|
20
|
+
list-versions List versions this system is upgradable to
|
21
|
+
check --target-version TARGET_VERSION Run pre-upgrade checks for upgradeing to specified version
|
22
|
+
run --target-version TARGET_VERSION Run the full upgrade
|
23
|
+
[--phase=phase TARGET_VERSION] Run just a specific phase of the upgrade
|
24
|
+
```
|
25
|
+
|
26
|
+
### Upgrades
|
27
|
+
|
28
|
+
Foreman-maintain implements upgrade tooling that helps the administrator to go
|
29
|
+
through the upgrade process.
|
30
|
+
|
31
|
+
Foreman-maintain scans the system to know, what version are available
|
32
|
+
to upgrade to for the particular system. To see what versions are available
|
33
|
+
for upgrade, run:
|
34
|
+
|
35
|
+
```
|
36
|
+
foreman-maintain upgrade list-versions
|
37
|
+
```
|
38
|
+
|
39
|
+
To perform just the pre-upgrade checks for the system, run:
|
40
|
+
|
41
|
+
```
|
42
|
+
foreman-maintain upgrade check --target-version TARGET_VERSION
|
43
|
+
```
|
44
|
+
|
45
|
+
The upgrade tooling is able to handle the full end-to-end upgrade via:
|
46
|
+
|
47
|
+
```
|
48
|
+
foreman-maintain upgrade run --target-version TARGET_VERSION
|
49
|
+
```
|
50
|
+
|
51
|
+
The upgrade is split into several phases with different level of impact the run
|
52
|
+
of the system:
|
53
|
+
|
54
|
+
* **pre-upgrade check** - this phase performs the checks to ensure that the system is
|
55
|
+
in ready state before the upgrade. The system should still be operational
|
56
|
+
at the current version, while this phase runs.
|
57
|
+
|
58
|
+
* **pre-migrations** - these steps perform changes on the system before
|
59
|
+
the actual upgrade stars. An example is disabling access to the system from
|
60
|
+
external sources, a.k.a. maintenance mode or disabling sync plans during the run.
|
61
|
+
|
62
|
+
After this phase ends, the system is still running the old version, and it's possible
|
63
|
+
to revert the changes by running the post-migrations steps.
|
64
|
+
|
65
|
+
* **migrations** - this phase performs the actual migrations, starting with
|
66
|
+
configuring new repositories, updated the packages and running the installer.
|
67
|
+
|
68
|
+
At the end of this phase, the system should be fully migrated to the new version.
|
69
|
+
However, the system is not fully operational yet, as the post-migrations steps
|
70
|
+
need to revert the pre-migrations steps.
|
71
|
+
|
72
|
+
* **post-migrations** - these steps revert the changes made in pre-migrations phase,
|
73
|
+
turning the system into fully-operational again.
|
74
|
+
|
75
|
+
* **post-upgrade checks** - this steps should perform sanity check of the system
|
76
|
+
to ensure the system is valid and ready to be used again.
|
77
|
+
|
78
|
+
|
79
|
+
The state of the upgrade is kept between runs, allowing to re-run the `upgrade run`
|
80
|
+
in case of failure. The tool should start at the appropriate point. For example,
|
81
|
+
in case the upgrade is already in *migrations* phase, there is no point in running
|
82
|
+
the *pre-upgrade check* phase. In case the upgrade failed before **migrations**
|
83
|
+
phase made some modifying changes, the tool tries to rollback to the previous
|
84
|
+
state of the system.
|
85
|
+
|
86
|
+
#### Satellite notes
|
87
|
+
|
88
|
+
To use custom organzation/activation key for configuring repositories during
|
89
|
+
upgrade, set the following environment variables
|
90
|
+
|
91
|
+
```
|
92
|
+
export EXTERNAL_SAT_ORG='Sat6-CI'
|
93
|
+
export EXTERNAL_SAT_ACTIVATION_KEY='Satellite QA RHEL7'
|
22
94
|
```
|
23
95
|
|
24
96
|
## Implementation
|
@@ -5,6 +5,9 @@
|
|
5
5
|
# Logger levels: mention one of debug, info, warning, error, fatal
|
6
6
|
:log_level: 'error'
|
7
7
|
|
8
|
+
# Mention log file size in KB. Default set to 10000KB.
|
9
|
+
# :log_file_size: 10000
|
10
|
+
|
8
11
|
# Mention definitions directories. Default
|
9
12
|
# :definitions_dirs:
|
10
13
|
|
@@ -13,3 +16,6 @@
|
|
13
16
|
|
14
17
|
# Mention directory to store whole backup data
|
15
18
|
# :backup_dir: '/lib/foreman-maintain'
|
19
|
+
|
20
|
+
# Mention path where foreman-proxy certificates stored on filesystem
|
21
|
+
# :foreman_proxy_cert_path: '/etc/foreman'
|
@@ -5,6 +5,9 @@
|
|
5
5
|
# Logger levels: mention one of debug, info, warning, error, fatal
|
6
6
|
# :log_level: 'error'
|
7
7
|
|
8
|
+
# Mention log file size in KB. Default set to 10000KB.
|
9
|
+
# :log_file_size: 10000
|
10
|
+
|
8
11
|
# Mention definitions directories. Default
|
9
12
|
# :definitions_dirs:
|
10
13
|
|
@@ -14,3 +17,6 @@
|
|
14
17
|
# Mention directory to store whole backup data
|
15
18
|
:backup_dir: '/var/lib/foreman-maintain'
|
16
19
|
|
20
|
+
# Mention path where foreman-proxy certificates stored on filesystem
|
21
|
+
# :foreman_proxy_cert_path: '/etc/foreman'
|
22
|
+
|
@@ -3,7 +3,7 @@ class Checks::DiskSpeedMinimal < ForemanMaintain::Check
|
|
3
3
|
label :disk_io
|
4
4
|
description 'Check for recommended disk speed of pulp, mongodb, pgsql dir.'
|
5
5
|
tags :pre_upgrade
|
6
|
-
preparation_steps { Procedures::
|
6
|
+
preparation_steps { Procedures::Packages::Install.new(:packages => %w[hdparm fio]) }
|
7
7
|
end
|
8
8
|
|
9
9
|
EXPECTED_IO = 80
|
@@ -0,0 +1,17 @@
|
|
1
|
+
module Checks::ForemanProxy
|
2
|
+
class VerifyDhcpConfigSyntax < ForemanMaintain::Check
|
3
|
+
metadata do
|
4
|
+
for_feature :foreman_proxy
|
5
|
+
description 'Check for verifying syntax for ISP DHCP configurations'
|
6
|
+
tags :default
|
7
|
+
confine do
|
8
|
+
file_exists?('/etc/dhcp/dhcpd.conf')
|
9
|
+
end
|
10
|
+
end
|
11
|
+
|
12
|
+
def run
|
13
|
+
success = feature(:foreman_proxy).valid_dhcp_configs?
|
14
|
+
assert(success, 'Please check and verify DHCP configurations.')
|
15
|
+
end
|
16
|
+
end
|
17
|
+
end
|
@@ -11,7 +11,7 @@ class Checks::SystemRegistration < ForemanMaintain::Check
|
|
11
11
|
|
12
12
|
def run
|
13
13
|
if system_is_self_registerd?
|
14
|
-
|
14
|
+
warn! 'System is self registered'
|
15
15
|
else
|
16
16
|
puts 'System is not self registered'
|
17
17
|
end
|
@@ -11,8 +11,39 @@ class Features::Downstream < ForemanMaintain::Feature
|
|
11
11
|
@current_version ||= rpm_version('satellite') || version_from_source
|
12
12
|
end
|
13
13
|
|
14
|
+
def current_minor_version
|
15
|
+
current_version.to_s[/^\d+\.\d+/]
|
16
|
+
end
|
17
|
+
|
18
|
+
def setup_repositories(version)
|
19
|
+
activation_key = ENV['EXTERNAL_SAT_ACTIVATION_KEY']
|
20
|
+
org = ENV['EXTERNAL_SAT_ORG']
|
21
|
+
if activation_key
|
22
|
+
org_options = org ? %(--org #{shellescape(org)}) : ''
|
23
|
+
execute!(%(subscription-manager register #{org_options}\
|
24
|
+
--activationkey #{shellescape(activation_key)} --force))
|
25
|
+
else
|
26
|
+
execute!(%(subscription-manager repos --disable '*'))
|
27
|
+
enable_options = rh_repos(version).map { |r| "--enable=#{r}" }.join(' ')
|
28
|
+
execute!(%(subscription-manager repos #{enable_options}))
|
29
|
+
end
|
30
|
+
end
|
31
|
+
|
14
32
|
private
|
15
33
|
|
34
|
+
def rh_repos(sat_version)
|
35
|
+
sat_version = version(sat_version)
|
36
|
+
["rhel-#{rh_version.major}-server-rpms",
|
37
|
+
"rhel-#{rh_version.major}-rhscl-#{rh_version.major}-rpms",
|
38
|
+
"rhel-#{rh_version.major}-server-satellite-#{sat_version.major}.#{sat_version.minor}-rpms"]
|
39
|
+
end
|
40
|
+
|
41
|
+
def rh_version
|
42
|
+
return @rh_version if defined? @rh_version
|
43
|
+
release_package = execute!('rpm -qf /etc/redhat-release')
|
44
|
+
@rh_version = rpm_version(release_package, 'RELEASE')
|
45
|
+
end
|
46
|
+
|
16
47
|
def version_from_source
|
17
48
|
version(File.read('/usr/share/foreman/lib/satellite/version.rb')[/6\.\d\.\d/])
|
18
49
|
end
|
@@ -6,4 +6,37 @@ class Features::Foreman_1_7_x < ForemanMaintain::Feature
|
|
6
6
|
check_min_version('foreman', '1.7')
|
7
7
|
end
|
8
8
|
end
|
9
|
+
|
10
|
+
def maintenance_mode(enable_disable)
|
11
|
+
case enable_disable
|
12
|
+
when :enable
|
13
|
+
custom_iptables_chain('FOREMAN_MAINTAIN',
|
14
|
+
['-i lo -j ACCEPT',
|
15
|
+
'-p tcp --dport 443 -j REJECT'])
|
16
|
+
when :disable
|
17
|
+
del_custom_iptables_chain('FOREMAN_MAINTAIN')
|
18
|
+
else
|
19
|
+
raise "Unexpected argument #{enable_disable}"
|
20
|
+
end
|
21
|
+
end
|
22
|
+
|
23
|
+
private
|
24
|
+
|
25
|
+
def custom_iptables_chain(name, rules)
|
26
|
+
# if the chain already exists, we assume it was set before: we're not touching
|
27
|
+
# it again
|
28
|
+
return if execute?("iptables -L #{name}")
|
29
|
+
execute!("iptables -N #{name}")
|
30
|
+
rules.each do |rule|
|
31
|
+
execute!("iptables -A #{name} #{rule}")
|
32
|
+
end
|
33
|
+
execute!("iptables -I INPUT -j #{name}")
|
34
|
+
end
|
35
|
+
|
36
|
+
def del_custom_iptables_chain(name)
|
37
|
+
return unless execute?("iptables -L #{name}") # the chain is already gone
|
38
|
+
execute!("iptables -D INPUT -j #{name}")
|
39
|
+
execute!("iptables -F #{name}")
|
40
|
+
execute!("iptables -X #{name}")
|
41
|
+
end
|
9
42
|
end
|
@@ -0,0 +1,72 @@
|
|
1
|
+
class Features::ForemanProxy < ForemanMaintain::Feature
|
2
|
+
metadata do
|
3
|
+
label :foreman_proxy
|
4
|
+
end
|
5
|
+
|
6
|
+
attr_reader :dhcpd_conf_file, :cert_path
|
7
|
+
|
8
|
+
def initialize
|
9
|
+
@dhcpd_conf_file = '/etc/dhcp/dhcpd.conf'
|
10
|
+
@cert_path = ForemanMaintain.config.foreman_proxy_cert_path
|
11
|
+
end
|
12
|
+
|
13
|
+
def valid_dhcp_configs?
|
14
|
+
dhcp_req_pass? && !syntax_error_exists?
|
15
|
+
end
|
16
|
+
|
17
|
+
private
|
18
|
+
|
19
|
+
def dhcp_curl_cmd
|
20
|
+
"curl -w '\n%{http_code}' -slient -ks --cert #{cert_path}/client_cert.pem \
|
21
|
+
--key #{cert_path}/client_key.pem \
|
22
|
+
--cacert #{cert_path}/proxy_ca.pem https://$(hostname):9090/dhcp"
|
23
|
+
end
|
24
|
+
|
25
|
+
def find_http_error_msg(array_output, curl_http_status)
|
26
|
+
http_line = ''
|
27
|
+
array_output.each do |str|
|
28
|
+
next unless str.include?('HTTP')
|
29
|
+
http_line = str
|
30
|
+
end
|
31
|
+
http_line.split(curl_http_status.to_s).last.strip
|
32
|
+
end
|
33
|
+
|
34
|
+
def run_dhcp_curl
|
35
|
+
curl_resp = execute(dhcp_curl_cmd)
|
36
|
+
array_output = curl_resp.split(/\r\n/)
|
37
|
+
result_array = array_output.last.split(/\n/)
|
38
|
+
curl_http_status = result_array.delete_at(result_array.length - 1).strip.to_i
|
39
|
+
curl_http_resp = json_parse(result_array.join(''))
|
40
|
+
ForemanMaintain::Utils::CurlResponse.new(
|
41
|
+
curl_http_resp,
|
42
|
+
curl_http_status,
|
43
|
+
find_http_error_msg(array_output, curl_http_status)
|
44
|
+
)
|
45
|
+
end
|
46
|
+
|
47
|
+
def dhcp_req_pass?
|
48
|
+
dhcp_curl_resp = run_dhcp_curl
|
49
|
+
success = true
|
50
|
+
if dhcp_curl_resp.http_code.eql?(200)
|
51
|
+
if dhcp_curl_resp.result.empty?
|
52
|
+
success = false
|
53
|
+
puts "Verify DHCP Settings. Response: #{dhcp_curl_resp.result.inspect}"
|
54
|
+
end
|
55
|
+
else
|
56
|
+
success = false
|
57
|
+
puts dhcp_curl_resp.error_msg
|
58
|
+
end
|
59
|
+
success
|
60
|
+
end
|
61
|
+
|
62
|
+
def syntax_error_exists?
|
63
|
+
cmd = "dhcpd -t -cf #{dhcpd_conf_file}"
|
64
|
+
output = execute(cmd)
|
65
|
+
is_error = output.include?('Configuration file errors encountered')
|
66
|
+
if is_error
|
67
|
+
puts "\nFound syntax error in file #{dhcpd_conf_file}:"
|
68
|
+
puts output
|
69
|
+
end
|
70
|
+
is_error
|
71
|
+
end
|
72
|
+
end
|
@@ -20,10 +20,6 @@ class Features::SyncPlans < ForemanMaintain::Feature
|
|
20
20
|
).map { |r| r['id'].to_i }
|
21
21
|
end
|
22
22
|
|
23
|
-
def disabled_plans_count
|
24
|
-
data[:disabled].length
|
25
|
-
end
|
26
|
-
|
27
23
|
def make_disable(ids)
|
28
24
|
update_records(ids, false)
|
29
25
|
end
|
@@ -32,6 +28,14 @@ class Features::SyncPlans < ForemanMaintain::Feature
|
|
32
28
|
update_records(data[:disabled], true)
|
33
29
|
end
|
34
30
|
|
31
|
+
def load_from_storage(storage)
|
32
|
+
@data = storage.data.fetch(:sync_plans, :enabled => [], :disabled => [])
|
33
|
+
end
|
34
|
+
|
35
|
+
def save_to_storage(storage)
|
36
|
+
storage[:sync_plans] = @data
|
37
|
+
end
|
38
|
+
|
35
39
|
private
|
36
40
|
|
37
41
|
def update_records(ids, enabled)
|
@@ -46,30 +50,20 @@ class Features::SyncPlans < ForemanMaintain::Feature
|
|
46
50
|
end
|
47
51
|
updated_record_ids
|
48
52
|
ensure
|
49
|
-
|
50
|
-
save_state(new_data)
|
53
|
+
update_data(enabled, updated_record_ids)
|
51
54
|
end
|
52
55
|
|
53
56
|
def data
|
54
|
-
|
55
|
-
@data ||= upgrade_storage.data.fetch(:sync_plans, :enabled => [], :disabled => [])
|
57
|
+
raise 'Use load_from_storage before accessing the data' unless defined? @data
|
56
58
|
@data
|
57
59
|
end
|
58
60
|
|
59
|
-
def
|
60
|
-
sync_plan_hash = data
|
61
|
+
def update_data(enabled, new_ids)
|
61
62
|
if enabled
|
62
|
-
|
63
|
-
|
63
|
+
@data[:disabled] -= new_ids
|
64
|
+
@data[:enabled] = new_ids
|
64
65
|
else
|
65
|
-
|
66
|
+
@data[:disabled].concat(new_ids)
|
66
67
|
end
|
67
|
-
sync_plan_hash
|
68
|
-
end
|
69
|
-
|
70
|
-
def save_state(sync_plan_hash = {})
|
71
|
-
storage = ForemanMaintain.storage(:upgrade)
|
72
|
-
storage[:sync_plans] = sync_plan_hash
|
73
|
-
storage.save
|
74
68
|
end
|
75
69
|
end
|
@@ -2,6 +2,7 @@ module Procedures::ForemanTasks
|
|
2
2
|
class Delete < ForemanMaintain::Procedure
|
3
3
|
metadata do
|
4
4
|
param :state, 'In what state should the task be deleted'
|
5
|
+
description 'delete tasks'
|
5
6
|
end
|
6
7
|
|
7
8
|
def run
|
@@ -26,7 +27,7 @@ module Procedures::ForemanTasks
|
|
26
27
|
end
|
27
28
|
end
|
28
29
|
|
29
|
-
def
|
30
|
+
def runtime_message
|
30
31
|
"Delete #{@state} tasks"
|
31
32
|
end
|
32
33
|
end
|
@@ -1,4 +1,8 @@
|
|
1
1
|
class Procedures::HammerSetup < ForemanMaintain::Procedure
|
2
|
+
metadata do
|
3
|
+
description 'setup hammer'
|
4
|
+
end
|
5
|
+
|
2
6
|
def run
|
3
7
|
setup_from_default || setup_from_answers
|
4
8
|
puts "New settings saved into #{hammer.config_file}"
|
@@ -9,10 +13,6 @@ class Procedures::HammerSetup < ForemanMaintain::Procedure
|
|
9
13
|
!hammer.ready?
|
10
14
|
end
|
11
15
|
|
12
|
-
def description
|
13
|
-
'Setup hammer'
|
14
|
-
end
|
15
|
-
|
16
16
|
private
|
17
17
|
|
18
18
|
def setup_from_default
|
@@ -0,0 +1,19 @@
|
|
1
|
+
module Procedures::Installer
|
2
|
+
class Upgrade < ForemanMaintain::Procedure
|
3
|
+
def run
|
4
|
+
execute!("#{installer_command} --upgrade", :interactive => true)
|
5
|
+
end
|
6
|
+
|
7
|
+
private
|
8
|
+
|
9
|
+
def installer_command
|
10
|
+
if package_version('satellite-installer')
|
11
|
+
'satellite-installer'
|
12
|
+
elsif package_version('katello-installer')
|
13
|
+
'katello-installer'
|
14
|
+
else
|
15
|
+
'foreman-installer'
|
16
|
+
end
|
17
|
+
end
|
18
|
+
end
|
19
|
+
end
|