class TestQuery(unittest.TestCase): def setUp(self): self.query = Query(tracer=TracerMock) def test_affected_applications(self): apps_query = self.query.affected_applications() self.assertIsInstance(apps_query, Lazy) self.assertTrue(hasattr(apps_query, "get")) self.assertListEqual(list(apps_query.get()), ["A", "B", "C"])
def query_apps(conduit): """Returns all apps that need restarting """ query = Query() if conduit: # When running via yum we need to pass tracer a list of packages and # their last modified time so it has no need to access the rpmdb (which # would fail as yum/dnf has a lock on it) packages = [] pkgs = conduit.getTsInfo().getMembers() # Packages in the current transation for pkg in pkgs: pkg.modified = time.time() packages.append(pkg) rpmdb = conduit.getRpmDB() # All other packages for pkg in rpmdb: pkg.modified = pkg.installtime packages.append(pkg) return query.from_packages(packages).now().affected_applications().get() else: return query.affected_applications().get()
def query_affected_apps(plugin=None): query = Query() return query.affected_applications().get()
def setUp(self): self.query = Query(tracer=TracerMock)
import json from tracer.query import Query q = Query() applications = q.affected_applications().get() def filter_by_type(apps, type_str): return [app.name for app in apps if app.type == type_str] dump_obj = {} # ignore type "session" for cockpit use case dump_obj["reboot"] = filter_by_type(applications, "static") dump_obj["daemons"] = filter_by_type(applications, "daemon") dump_obj["manual"] = filter_by_type(applications, "application") print(json.dumps(dump_obj))