SILENT KILLERPanel

Current Path: > > lib > python3.6 > site-packages > up2date_client


Operation   : Linux premium131.web-hosting.com 4.18.0-553.44.1.lve.el8.x86_64 #1 SMP Thu Mar 13 14:29:12 UTC 2025 x86_64
Software     : Apache
Server IP    : 162.0.232.56 | Your IP: 216.73.216.111
Domains      : 1034 Domain(s)
Permission   : [ 0755 ]

Files and Folders in: //lib/python3.6/site-packages/up2date_client

NameTypeSizeLast ModifiedActions
__pycache__ Directory - -
__init__.py File 0 bytes May 29 2025 13:37:22.
capabilities.py File 7452 bytes May 29 2025 13:37:22.
clientCaps.py File 2208 bytes May 29 2025 13:37:22.
clpwd.py File 3643 bytes May 29 2025 13:37:22.
config.py File 14803 bytes May 29 2025 13:37:22.
debUtils.py File 2830 bytes May 29 2025 13:37:22.
getMethod.py File 4302 bytes May 29 2025 13:37:22.
haltree.py File 4642 bytes May 29 2025 13:37:22.
hardware.py File 32675 bytes May 29 2025 13:37:22.
hardware_gudev.py File 13216 bytes May 29 2025 13:37:22.
hardware_hal.py File 11604 bytes May 29 2025 13:37:22.
hardware_udev.py File 13300 bytes May 29 2025 13:37:22.
pkgUtils.py File 295 bytes May 29 2025 13:37:22.
pkgplatform.py File 309 bytes May 29 2025 13:47:19.
pmPlugin.py File 2859 bytes May 29 2025 13:37:22.
rhnChannel.py File 5031 bytes May 29 2025 13:37:22.
rhnHardware.py File 328 bytes May 29 2025 13:37:22.
rhnPackageInfo.py File 2396 bytes May 29 2025 13:37:22.
rhncli.py File 9335 bytes May 29 2025 13:37:22.
rhnreg.py File 32101 bytes May 29 2025 13:37:22.
rhnreg_constants.py File 18569 bytes May 29 2025 13:37:22.
rhnserver.py File 9531 bytes May 29 2025 13:37:22.
rpcServer.py File 11999 bytes May 29 2025 13:37:22.
rpmUtils.py File 5321 bytes May 29 2025 13:37:22.
transaction.py File 4193 bytes May 29 2025 13:37:22.
tui.py File 44749 bytes May 29 2025 13:37:22.
up2dateAuth.py File 10944 bytes May 29 2025 13:37:22.
up2dateErrors.py File 10502 bytes May 29 2025 13:37:22.
up2dateLog.py File 2108 bytes May 29 2025 13:37:22.
up2dateUtils.py File 5180 bytes May 29 2025 13:47:19.

Reading File: //lib/python3.6/site-packages/up2date_client/transaction.py

#
# Client code for Update Agent
# Copyright (c) 1999--2016 Red Hat, Inc.  Distributed under GPLv2.
#
#         Adrian Likins <alikins@redhat.com
#
#
# a couple of classes wrapping up transactions so that we
#    can share transactions instead of creating new ones all over
#

import rpm

read_ts = None
ts = None

# ************* NOTE: ************#
# for the sake of clarity, the names "added/removed" as used here
# are indicative of what happened when the original transaction was
# ran. Aka, if you "up2date foobar" and it updates foobar-1-0 with
# foobar-2-0, you added foobar-2-0 and removed foobar-1-0
#
# The reason I mention this explicitly is the trouble of describing
# what happens when you rollback the transaction, which is basically
# the opposite, and leads to plenty of confusion
#


class TransactionData:
    # simple data structure designed to transport info
    # about rpm transactions around
    def __init__(self):
        self.data = {}
        # a list of tuples of pkg info, and mode ('e', 'i', 'u')
        # the pkgInfo is tuple of [name, version, release, epoch, arch]
        # size is never used directly for this, it's here as a place holder
        # arch is optional, if the server specifies it, go with what
        # removed packages only need [n,v,r,e,arch]
        self.data['packages'] = []
        # list of flags to set for the transaction
        self.data['flags'] = []
        self.data['vsflags'] = []
        self.data['probFilterFlags'] = []


    def display(self):
        out = ""
        removed = []
        installed = []
        updated = []
        misc = []
        for (pkgInfo, mode) in self.data['packages']:
            if mode == 'u':
                updated.append(pkgInfo)
            elif mode == 'i':
                installed.append(pkgInfo)
            elif mode == 'e':
                removed.append(pkgInfo)
            else:
                misc.append(pkgInfo)
        for pkgInfo in removed:
            out = out + "\t\t[e] %s-%s-%s:%s\n" % (pkgInfo[0], pkgInfo[1], pkgInfo[2], pkgInfo[3])
        for pkgInfo in installed:
            out = out + "\t\t[i] %s-%s-%s:%s\n" % (pkgInfo[0], pkgInfo[1], pkgInfo[2], pkgInfo[3])
        for pkgInfo in updated:
            out = out + "\t\t[u] %s-%s-%s:%s\n" % (pkgInfo[0], pkgInfo[1], pkgInfo[2], pkgInfo[3])
        for pkgInfo in misc:
            out = out + "\t\t[%s] %s-%s-%s:%s\n" % (pkgInfo[5], pkgInfo[0], pkgInfo[1],
                                                    pkgInfo[2], pkgInfo[3])
        return out


# wrapper/proxy class for rpm.Transaction so we can
# instrument it, etc easily
class Up2dateTransaction:
    def __init__(self):
        self.ts = rpm.TransactionSet()
        self._methods = ['dbMatch',
                         'check',
                         'order',
                         'addErase',
                         'addInstall',
                         'run',
                         'IDTXload',
                         'IDTXglob',
                         'rollback',
                         'pgpImportPubkey',
                         'pgpPrtPkts',
                         'Debug',
                         'setFlags',
                         'setVSFlags',
                         'setProbFilter',
                         'hdrFromFdno']
        self.tsflags = []

    def __getattr__(self, attr):
        if attr in self._methods:
            return self.getMethod(attr)
        else:
            raise AttributeError(attr)

    def getMethod(self, method):
        # in theory, we can override this with
        # profile/etc info
        return getattr(self.ts, method)

    # push/pop methods so we dont lose the previous
    # set value, and we can potentiall debug a bit
    # easier
    def pushVSFlags(self, flags):
        self.tsflags.append(flags)
        self.ts.setVSFlags(self.tsflags[-1])

    def popVSFlags(self):
        del self.tsflags[-1]
        self.ts.setVSFlags(self.tsflags[-1])

def initReadOnlyTransaction():
    global read_ts
    if read_ts == None:
        read_ts =  Up2dateTransaction()
        # FIXME: replace with macro defination
        read_ts.pushVSFlags(-1)
    return read_ts


SILENT KILLER Tool