Minor cleanup and bug fix for file mode.
Dev

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