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 |