~ubuntu-core-dev/update-manager/main

« back to all changes in this revision

Viewing changes to UpdateManager/UpdateManager.py

  • Committer: Robert Ancell
  • Date: 2022-09-29 20:01:45 UTC
  • mfrom: (2947.1.13 update-manager-ua)
  • Revision ID: robert.ancell@canonical.com-20220929200145-g0tia8s145rmu9mt
Show pending Ubuntu pro packages

Show diffs side-by-side

added added

removed removed

Lines of Context:
36
36
 
37
37
import distro_info
38
38
import fnmatch
 
39
import json
39
40
import os
40
41
import subprocess
41
42
import sys
85
86
        self.unity = UnitySupport()
86
87
        self.controller = None
87
88
        self.cache = None
 
89
        self.ua_security_packages = []
88
90
        self.update_list = None
89
91
        self.meta_release = None
90
92
        self.hwe_replacement_packages = None
268
270
               and pkg.installed:
269
271
                self.oem_metapackages.add(pkg)
270
272
 
 
273
    def _get_ua_security_status(self):
 
274
        self.ua_security_packages = []
 
275
        try:
 
276
            p = subprocess.Popen(['ua', 'security-status', '--format=json'], stdout=subprocess.PIPE)
 
277
        except OSError:
 
278
            pass
 
279
        else:
 
280
            while p.poll() is None:
 
281
                while Gtk.events_pending():
 
282
                    Gtk.main_iteration()
 
283
                time.sleep(0.05)
 
284
            s = json.load(p.stdout)
 
285
            ua_attached = s.get('summary', {}).get('ua', {}).get('attached', False)
 
286
            for package in s.get('packages', []):
 
287
                status = package.get('status', '')
 
288
                if status == 'pending_attach':
 
289
                    name = package.get('name', '')
 
290
                    version = package.get('version', '')
 
291
                    size = package.get('download_size', 0)                    
 
292
                    self.ua_security_packages.append((name, version, size))
 
293
 
271
294
    def _make_available_pane(self, install_count, need_reboot=False,
272
295
                             cancelled_update=False, error_occurred=False):
273
296
        self._check_hwe_support_status()
423
446
 
424
447
        self._check_oem_metapackages()
425
448
 
 
449
        self._get_ua_security_status()
 
450
 
426
451
        for pkgname in self.oem_metapackages:
427
452
            try:
428
453
                if not self.cache[pkgname].is_installed:
433
458
        self.update_list = UpdateList(self)
434
459
        try:
435
460
            self.update_list.update(self.cache, eventloop_callback=iterate,
436
 
                                    duplicate_packages=self.duplicate_packages)
 
461
                                    duplicate_packages=self.duplicate_packages, ua_security_packages=self.ua_security_packages)
437
462
        except SystemError as e:
438
463
            header = _("Could not calculate the upgrade")
439
464
            desc = _("An unresolvable problem occurred while "