Dev commited on 2018-06-17 09:13:36
Showing 2 changed files, with 38 additions and 44 deletions.
... | ... |
@@ -19,7 +19,7 @@ module RCM |
19 | 19 |
@logger.debug("Setting owner as #{file.owner}:#{file.group} and mode as #{file.mode} on #{file.path}") |
20 | 20 |
# Will throw exception if something poopy happens |
21 | 21 |
::FileUtils.chown(file.owner, file.group, file.path) |
22 |
- ::FileUtils.chmod(file.mode.to_i, file.path) |
|
22 |
+ ::FileUtils.chmod(file.mode.to_i(8), file.path) |
|
23 | 23 |
|
24 | 24 |
file.changed = true |
25 | 25 |
0 |
... | ... |
@@ -17,40 +17,34 @@ module RCM |
17 | 17 |
VALID_LOG_LEVELS = %w(fatal error info debug).freeze |
18 | 18 |
RCM_ENV = ENV.fetch('ENVIRONMENT', '') |
19 | 19 |
|
20 |
- @@wanted = { |
|
20 |
+ @wanted = { |
|
21 | 21 |
PACKAGES => {}, |
22 | 22 |
FILES => {}, |
23 | 23 |
SERVICES => {} |
24 | 24 |
} |
25 | 25 |
|
26 |
- @@got = { |
|
26 |
+ @got = { |
|
27 | 27 |
PACKAGES => {}, |
28 | 28 |
FILES => {}, |
29 | 29 |
SERVICES => {} |
30 | 30 |
} |
31 | 31 |
|
32 |
- @@crackalackin = { |
|
33 |
- PACKAGES => [], |
|
34 |
- FILES => [], |
|
35 |
- SERVICES => [] |
|
36 |
- } |
|
37 |
- |
|
38 |
- @@logger = ::Logger.new(STDOUT) |
|
32 |
+ @logger = ::Logger.new(STDOUT) |
|
39 | 33 |
|
40 |
- @@pkg_mgr = ::RCM::Apt.new(@@logger) |
|
41 |
- @@file_mgr = ::RCM::FileManager.new(@@logger) |
|
42 |
- @@svc_mgr = ::RCM::ServiceManager.new(@@logger) |
|
34 |
+ @pkg_mgr = ::RCM::Apt.new(@logger) |
|
35 |
+ @file_mgr = ::RCM::FileManager.new(@logger) |
|
36 |
+ @svc_mgr = ::RCM::ServiceManager.new(@logger) |
|
43 | 37 |
|
44 | 38 |
def self.configure_logger |
45 | 39 |
# Can be exposed as settings but was expanding the scope as this |
46 | 40 |
# object will need to be passed to all other objects |
47 |
- @@logger.level = ::Logger::DEBUG |
|
48 |
- @@logger.progname = 'rcm' |
|
41 |
+ @logger.level = ::Logger::DEBUG |
|
42 |
+ @logger.progname = 'rcm' |
|
49 | 43 |
end |
50 | 44 |
|
51 | 45 |
def self.parse_packages(markup) |
52 |
- @@logger.info("Environment = #{RCM_ENV}") |
|
53 |
- @@pkg_mgr.update unless RCM_ENV == 'dev' |
|
46 |
+ @logger.info("Environment = #{RCM_ENV}") |
|
47 |
+ @pkg_mgr.update unless RCM_ENV == 'dev' |
|
54 | 48 |
|
55 | 49 |
markup.each do |d| |
56 | 50 |
# ensure package version exists, if mentioned. |
... | ... |
@@ -64,13 +58,13 @@ module RCM |
64 | 58 |
end |
65 | 59 |
|
66 | 60 |
unless version.empty? |
67 |
- available_versions = @@pkg_mgr.get_versions(d['name']) |
|
61 |
+ available_versions = @pkg_mgr.get_versions(d['name']) |
|
68 | 62 |
if (available_versions & [version]).empty? |
69 | 63 |
raise "\n\n#{d['name']} = #{version} is not available.\nAvailable versions: #{available_versions.join(', ')}" |
70 | 64 |
end |
71 | 65 |
end |
72 | 66 |
p = RCM::Package.new(d['name'], version, desired_state) |
73 |
- @@wanted[PACKAGES][d['name']] = p |
|
67 |
+ @wanted[PACKAGES][d['name']] = p |
|
74 | 68 |
end |
75 | 69 |
end |
76 | 70 |
|
... | ... |
@@ -80,13 +74,13 @@ module RCM |
80 | 74 |
raise "\n\nFile state can only be one of #{valid_file_states.join (', ')}" if (valid_file_states | [d['desired_state']]).empty? |
81 | 75 |
raise "\n\n'#{d['local_file']}' is not readable.\n\n" if d['desired_state'] == ::RCM::File::PRESENT && !::File.readable?(d['local_file']) |
82 | 76 |
f = RCM::File.new(d['path'], d['owner'], d['group'], d['mode'], d['local_file'], d['desired_state']) |
83 |
- @@wanted[FILES][d['path']] = f |
|
77 |
+ @wanted[FILES][d['path']] = f |
|
84 | 78 |
end |
85 | 79 |
end |
86 | 80 |
|
87 | 81 |
def self.parse_services(markup) |
88 |
- pkgs = @@wanted[PACKAGES] |
|
89 |
- files = @@wanted[FILES] |
|
82 |
+ pkgs = @wanted[PACKAGES] |
|
83 |
+ files = @wanted[FILES] |
|
90 | 84 |
file_dependencies = {} |
91 | 85 |
package_dependencies = {} |
92 | 86 |
markup.each do |d| |
... | ... |
@@ -114,12 +108,12 @@ module RCM |
114 | 108 |
|
115 | 109 |
end |
116 | 110 |
s = RCM::Service.new(d['name'], file_dependencies, package_dependencies) |
117 |
- @@wanted[SERVICES][d['name']] = s |
|
111 |
+ @wanted[SERVICES][d['name']] = s |
|
118 | 112 |
end |
119 | 113 |
end |
120 | 114 |
|
121 | 115 |
def self.whachuwant # or parse_config |
122 |
- # Consume config from YAML, and convert it to usable objects in @@wanted. |
|
116 |
+ # Consume config from YAML, and convert it to usable objects in @wanted. |
|
123 | 117 |
config_file = RCM_ENV.empty? ? 'config.yaml' : "config_#{RCM_ENV}.yaml" |
124 | 118 |
|
125 | 119 |
raise "#{config_file} not found." unless ::File.readable?(config_file) |
... | ... |
@@ -143,59 +137,59 @@ module RCM |
143 | 137 |
end |
144 | 138 |
|
145 | 139 |
def self.whachugot # or get_current_state |
146 |
- @@got[PACKAGES] = @@pkg_mgr.get_current_state(@@wanted[PACKAGES]) |
|
147 |
- @@got[FILES] = @@file_mgr.get_current_state(@@wanted[FILES]) |
|
148 |
- # @@got[SERVICES] = @@svc_mgr.get_current_state(@@wanted[SERVICES]) |
|
140 |
+ @got[PACKAGES] = @pkg_mgr.get_current_state(@wanted[PACKAGES]) |
|
141 |
+ @got[FILES] = @file_mgr.get_current_state(@wanted[FILES]) |
|
142 |
+ # @got[SERVICES] = @svc_mgr.get_current_state(@wanted[SERVICES]) |
|
149 | 143 |
end |
150 | 144 |
|
151 | 145 |
def self.converge_packages |
152 |
- @@wanted[PACKAGES].each do |pkg_name, pkg_obj| |
|
153 |
- current_pkg = @@got[PACKAGES][pkg_name] |
|
146 |
+ @wanted[PACKAGES].each do |pkg_name, pkg_obj| |
|
147 |
+ current_pkg = @got[PACKAGES][pkg_name] |
|
154 | 148 |
|
155 | 149 |
if current_pkg == pkg_obj |
156 |
- @@logger.info("#{pkg_name} is in expected state.") |
|
150 |
+ @logger.info("#{pkg_name} is in expected state.") |
|
157 | 151 |
next |
158 | 152 |
end |
159 | 153 |
|
160 |
- @@logger.debug('Missing package:' + pkg_name) |
|
154 |
+ @logger.debug('Missing package:' + pkg_name) |
|
161 | 155 |
if current_pkg.version != pkg_obj.version && current_pkg.state == ::RCM::Package::INSTALLED |
162 | 156 |
# Wrong version is installed. Remove current version and install the correct one. |
163 | 157 |
# Not the best way to go about it... but we are not implementing a legit solution. |
164 | 158 |
@logger.debug("#{current_pkg.name}=#{current_pkg.version} is installed. Uninstalling first.") |
165 |
- @@pkg_mgr.remove(pkg_obj) |
|
166 |
- @@pkg_mgr.install(pkg_obj) |
|
159 |
+ @pkg_mgr.remove(pkg_obj) |
|
160 |
+ @pkg_mgr.install(pkg_obj) |
|
167 | 161 |
elsif current_pkg.state == ::RCM::Package::REMOVED |
168 |
- @@pkg_mgr.install(pkg_obj) |
|
162 |
+ @pkg_mgr.install(pkg_obj) |
|
169 | 163 |
end |
170 | 164 |
end |
171 | 165 |
|
172 | 166 |
end |
173 | 167 |
|
174 | 168 |
def self.converge_files |
175 |
- @@wanted[FILES].each do |path, file_obj| |
|
176 |
- file_on_fs = @@got[FILES][path] |
|
169 |
+ @wanted[FILES].each do |path, file_obj| |
|
170 |
+ file_on_fs = @got[FILES][path] |
|
177 | 171 |
|
178 | 172 |
if file_on_fs.state == ::RCM::File::PRESENT && file_obj.state == ::RCM::File::ABSENT |
179 |
- @@logger.info("#{path} is present on disk when it should not be. Removing...") |
|
180 |
- @@file_mgr.remove(file_obj) |
|
173 |
+ @logger.info("#{path} is present on disk when it should not be. Removing...") |
|
174 |
+ @file_mgr.remove(file_obj) |
|
181 | 175 |
next |
182 | 176 |
end |
183 | 177 |
|
184 | 178 |
if file_on_fs == file_obj |
185 |
- @@logger.info("#{path} is in expected state (#{file_on_fs.state}).") |
|
179 |
+ @logger.info("#{path} is in expected state (#{file_on_fs.state}).") |
|
186 | 180 |
next |
187 | 181 |
end |
188 | 182 |
|
189 |
- @@logger.info("#{path} is not present on disk.") |
|
190 |
- status = @@file_mgr.copy(file_obj) |
|
191 |
- @@file_mgr.apply_attributes(file_obj) if status == 0 |
|
183 |
+ @logger.info("#{path} is not present on disk.") |
|
184 |
+ status = @file_mgr.copy(file_obj) |
|
185 |
+ @file_mgr.apply_attributes(file_obj) if status == 0 |
|
192 | 186 |
|
193 | 187 |
end |
194 | 188 |
end |
195 | 189 |
|
196 | 190 |
def self.restart_services_if_needed |
197 |
- @@wanted[SERVICES].values.each do |svc_obj| |
|
198 |
- @@svc_mgr.restart(svc_obj) if @@svc_mgr.dependencies_changed?(svc_obj) |
|
191 |
+ @wanted[SERVICES].values.each do |svc_obj| |
|
192 |
+ @svc_mgr.restart(svc_obj) if @svc_mgr.dependencies_changed?(svc_obj) |
|
199 | 193 |
end |
200 | 194 |
end |
201 | 195 |
|
202 | 196 |