Skip to content

Commit

Permalink
report reboot for new kernels (#83)
Browse files Browse the repository at this point in the history
This compares `uname -r` to the directories in /lib/modules/, if a directory name in /lib/modules/ is bigger than `uname -r` a fake `AffectedApplication` is added for it.
  • Loading branch information
sean797 committed May 16, 2017
1 parent 4b7144e commit 20f23c6
Showing 1 changed file with 13 additions and 0 deletions.
13 changes: 13 additions & 0 deletions tracer/resources/tracer.py
Original file line number Diff line number Diff line change
Expand Up @@ -18,13 +18,16 @@

from __future__ import absolute_import

import os
from distutils.version import LooseVersion
from psutil import NoSuchProcess
from tracer.resources.system import System
from tracer.resources.FilenameCleaner import FilenameCleaner
from tracer.resources.processes import AffectedProcess
from tracer.resources.collections import ApplicationsCollection, AffectedProcessesCollection, PackagesCollection
from tracer.resources.exceptions import UnsupportedDistribution
from tracer.resources.applications import Applications, AffectedApplication
from tracer.resources.lang import _


class Tracer(object):
Expand Down Expand Up @@ -119,9 +122,19 @@ def trace_affected(self, user=None):
affected[a.name].affected_instances.append(p)
except NoSuchProcess:
pass
if self._has_updated_kernel() and not self._applications.find('kernel').ignore:
# Add fake AffectedApplication
affected['kernel'] = AffectedApplication({"name": "kernel", "type": Applications.TYPES["STATIC"],
"helper": _("You will have to reboot your computer")})

return ApplicationsCollection(affected.values())

def _has_updated_kernel(self):
for k_version in next(os.walk('/lib/modules/'))[1]:
if LooseVersion(os.uname()[2]) < LooseVersion(k_version):
return True
return False

def _apply_rules(self, process):
parent = process.parent()
if not parent:
Expand Down

0 comments on commit 20f23c6

Please sign in to comment.