From 79b3c51dac13c1b2689d139bb0667fa27e8a02a9 Mon Sep 17 00:00:00 2001 From: Nathan Pratta Teodosio <nathan.teodosio@canonical.com> Date: Fri, 22 Mar 2024 08:24:04 +0100 Subject: 1:22.04.20 (patches unapplied) # Changelog portion removed to avoid version conflict --ark74 Imported using git-ubuntu import. --- UpdateManager/UpdateManager.py | 60 ++++++++++++++++++++++-------------------- debian/changelog | 10 +++++++ 2 files changed, 41 insertions(+), 29 deletions(-) diff --git a/UpdateManager/UpdateManager.py b/UpdateManager/UpdateManager.py index 5882e0a0..03b11aa3 100644 --- a/UpdateManager/UpdateManager.py +++ b/UpdateManager/UpdateManager.py @@ -27,6 +27,7 @@ from gi.repository import Gdk, GdkX11 from gi.repository import Gio from gi.repository import GLib from gi.repository import GObject +import uaclient.api.u.pro.packages.updates.v1 as ua GdkX11 # pyflakes @@ -36,11 +37,11 @@ warnings.filterwarnings("ignore", "Accessed deprecated property", import distro_info import fnmatch -import json import os import subprocess import sys import time +import threading from gettext import gettext as _ import dbus @@ -270,36 +271,37 @@ class UpdateManager(Gtk.Window): and pkg.installed: self.oem_metapackages.add(pkg) + def _fetch_ua_updates(self): + self.ua_updates = ua.updates().updates + def _get_ua_security_status(self): self.ua_security_packages = [] - try: - p = subprocess.Popen(['pro', 'security-status', '--format=json'], - stdout=subprocess.PIPE) - except OSError: - pass - else: - while p.poll() is None: - while Gtk.events_pending(): - Gtk.main_iteration() - time.sleep(0.05) - s = json.load(p.stdout) - for package in s.get('packages', []): - if package.get('service_name', '') == 'standard-security': - continue - status = package.get('status', '') - if ( - status == 'pending_attach' - or status == 'pending_enable' - or status == 'upgrade_available' - ): - name = package.get('package', '') - version = package.get('version', '') - size = package.get('download_size', 0) - downloadable = status == 'upgrade_available' - self.ua_security_packages.append( - (name, version, size, downloadable) - ) - self.cache.create_pro_cache(self.ua_security_packages) + t = threading.Thread(target=self._fetch_ua_updates, daemon=True) + t.start() + while t.is_alive(): + while Gtk.events_pending(): + Gtk.main_iteration() + time.sleep(0.05) + for package in self.ua_updates: + if ( + package.provided_by == 'standard-security' + or package.provided_by == 'standard-updates' + ): + continue + status = package.status + if ( + status == 'pending_attach' + or status == 'pending_enable' + or status == 'upgrade_available' + ): + name = package.package + version = package.version + size = package.download_size + downloadable = status == 'upgrade_available' + self.ua_security_packages.append( + (name, version, size, downloadable) + ) + self.cache.create_pro_cache(self.ua_security_packages) def _make_available_pane(self, install_count, need_reboot=False, cancelled_update=False, error_occurred=False): -- cgit v1.2.3