-
Notifications
You must be signed in to change notification settings - Fork 71
/
packages.rb
114 lines (100 loc) · 3.72 KB
/
packages.rb
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
module ForemanMaintain::Scenarios
module Packages
def self.skip_installer_run?(packages_list)
packages_list = packages_list.split(',').map(&:strip) if packages_list.is_a?(String)
return false unless packages_list.any? { |p| p.include?('foreman_maintain') }
return true if packages_list.length == 1
fm_pkg = ForemanMaintain.main_package_name
puts "ERROR: install or update '#{fm_pkg}' package individually."
exit 1
end
class Status < ForemanMaintain::Scenario
metadata do
label :packages_status
description 'detection of status of package version locking'
manual_detection
end
def compose
add_step(Procedures::Packages::LockingStatus)
end
end
class Unlock < ForemanMaintain::Scenario
metadata do
label :packages_unlock
description 'unlocking of package versions'
manual_detection
end
def compose
add_step(Procedures::Packages::UnlockVersions)
end
end
class Lock < ForemanMaintain::Scenario
metadata do
label :packages_lock
description 'locking of package versions'
manual_detection
end
def compose
add_step(Procedures::Packages::LockVersions)
end
end
class Install < ForemanMaintain::Scenario
metadata do
description 'install packages in unlocked session'
param :packages, 'List of packages to install', :array => true
param :assumeyes, 'Do not ask for confirmation'
manual_detection
end
def compose
if Packages.skip_installer_run?(context.get(:packages))
add_step_with_context(Procedures::Packages::Install,
:force => true, :warn_on_errors => true)
else
add_step_with_context(Procedures::Packages::InstallerConfirmation)
add_step_with_context(Procedures::Packages::UnlockVersions)
add_step_with_context(Procedures::Packages::Install,
:force => true, :warn_on_errors => true)
add_step_with_context(Procedures::Installer::Upgrade)
add_step(Procedures::Packages::LockingStatus)
end
end
def set_context_mapping
context.map(:packages,
Procedures::Packages::Install => :packages)
context.map(:assumeyes,
Procedures::Packages::Install => :assumeyes)
end
end
class Update < ForemanMaintain::Scenario
metadata do
description 'update packages in unlocked session'
param :packages, 'List of packages to Update', :array => true
param :assumeyes, 'Do not ask for confirmation'
manual_detection
end
def compose
if Packages.skip_installer_run?(context.get(:packages))
add_step_with_context(Procedures::Packages::Update,
:force => true, :warn_on_errors => true)
else
add_steps_with_context(
Procedures::Packages::UpdateAllConfirmation,
Procedures::Packages::InstallerConfirmation,
Procedures::Packages::UnlockVersions
)
add_step_with_context(Procedures::Packages::Update,
:force => true, :warn_on_errors => true)
add_step_with_context(Procedures::Installer::Upgrade)
add_step(Procedures::Packages::LockingStatus)
end
end
def set_context_mapping
context.map(:packages,
Procedures::Packages::Update => :packages,
Procedures::Packages::UpdateAllConfirmation => :packages)
context.map(:assumeyes,
Procedures::Packages::Update => :assumeyes)
end
end
end
end