Exemple #1
0
    def test_updatecollection_setters(self):
        col = cr.UpdateCollection()
        self.assertTrue(col)

        self.assertEqual(col.shortname, None)
        self.assertEqual(col.name, None)
        self.assertEqual(col.packages, [])

        module = cr.UpdateCollectionModule()
        module.name = "kangaroo"
        module.stream = "0"
        module.version = 20180730223407
        module.context = "deadbeef"
        module.arch = "noarch"

        pkg = cr.UpdateCollectionPackage()
        pkg.name = "foo"
        pkg.version = "1.2"
        pkg.release = "3"
        pkg.epoch = "0"
        pkg.arch = "x86"
        pkg.src = "foo.src.rpm"
        pkg.filename = "foo.rpm"
        pkg.sum = "abcdef"
        pkg.sum_type = cr.SHA1
        pkg.reboot_suggested = True

        col.shortname = "short name"
        col.name = "long name"
        col.module = module
        col.append(pkg)

        self.assertEqual(col.shortname, "short name")
        self.assertEqual(col.name, "long name")
        self.assertEqual(len(col.packages), 1)

        # Check if the appended module was appended properly
        module = col.module
        self.assertEqual(module.name, "kangaroo")
        self.assertEqual(module.stream, "0")
        self.assertEqual(module.version, 20180730223407)
        self.assertEqual(module.context, "deadbeef")
        self.assertEqual(module.arch, "noarch")

        # Also check if the appended package was appended properly
        pkg = col.packages[0]
        self.assertEqual(pkg.name, "foo")
        self.assertEqual(pkg.version, "1.2")
        self.assertEqual(pkg.release, "3")
        self.assertEqual(pkg.epoch, "0")
        self.assertEqual(pkg.arch, "x86")
        self.assertEqual(pkg.src, "foo.src.rpm")
        self.assertEqual(pkg.filename, "foo.rpm")
        self.assertEqual(pkg.sum, "abcdef")
        self.assertEqual(pkg.sum_type, cr.SHA1)
        self.assertEqual(pkg.reboot_suggested, True)
Exemple #2
0
        def create_collection_scope():
            col = cr.UpdateCollection()
            col.name = "name"

            module = cr.UpdateCollectionModule()
            module.name = "kangaroo"
            module.stream = "0"
            module.version = 20180730223407
            module.context = "deadbeef"
            module.arch = "noarch"

            col.module = module

            return col
    def test_updatecollectionmodule_setters(self):
        module = cr.UpdateCollectionModule()
        self.assertTrue(module)

        self.assertEqual(module.name, None)
        self.assertEqual(module.stream, None)
        self.assertEqual(module.version, 0)
        self.assertEqual(module.context, None)
        self.assertEqual(module.arch, None)

        module.name = "foo"
        module.stream = "0"
        module.version = 20180730223407
        module.context = "deadbeef"
        module.arch = "noarch"

        self.assertEqual(module.name, "foo")
        self.assertEqual(module.stream, "0")
        self.assertEqual(module.version, 20180730223407)
        self.assertEqual(module.context, "deadbeef")
        self.assertEqual(module.arch, "noarch")
Exemple #4
0
    def to_createrepo_c(self):
        """
        Convert to a createrepo_c UpdateCollection object.

        Returns:
            col(cr.UpdateCollection): createrepo_c representation of a collection

        """
        col = cr.UpdateCollection()
        col.shortname = self.shortname
        col.name = self.name
        if self.module:
            module = cr.UpdateCollectionModule()
            module.name = self.module["name"]
            module.stream = self.module["stream"]
            module.version = self.module["version"]
            module.context = self.module["context"]
            module.arch = self.module["arch"]
            col.module = module

        for package in self.packages.all().order_by("sum"):
            col.append(package.to_createrepo_c())

        return col
Exemple #5
0
    def to_createrepo_c(self):
        """
        Convert to a createrepo_c UpdateCollection object.

        Returns:
            col(cr.UpdateCollection): createrepo_c representation of a collection

        """
        col = cr.UpdateCollection()
        col.shortname = self.shortname
        col.name = self.name
        if self.module:
            module = cr.UpdateCollectionModule()
            module.name = self.module['name']
            module.stream = self.module['stream']
            module.version = self.module['version']
            module.context = self.module['context']
            module.arch = self.module['arch']
            col.module = module

        for package in self.packages.all():
            col.append(package.to_createrepo_c())

        return col
Exemple #6
0
    def create_pulp3_content(self):
        """
        Create a Pulp 3 Advisory content for saving it later in a bulk operation.
        """
        rec = cr.UpdateRecord()
        rec.fromstr = self.errata_from
        rec.status = self.status
        rec.type = self.errata_type
        rec.version = self.version
        rec.id = self.errata_id
        rec.title = self.title
        rec.issued_date = get_datetime(self.issued)
        rec.updated_date = get_datetime(self.updated)
        rec.rights = self.rights
        rec.summary = self.summary
        rec.description = self.description
        rec.reboot_suggested = get_bool(self.reboot_suggested)
        rec.severity = self.severity
        rec.solution = self.solution
        rec.release = self.release
        rec.pushcount = self.pushcount

        collections = self.get_collections()
        for collection in collections:
            col = cr.UpdateCollection()
            col.shortname = collection.get('short')
            col.name = collection.get('name')
            module = collection.get('module')
            if module:
                cr_module = cr.UpdateCollectionModule()
                cr_module.name = module['name']
                cr_module.stream = module['stream']
                cr_module.version = int(module['version'])
                cr_module.context = module['context']
                cr_module.arch = module['arch']
                col.module = cr_module

            for package in collection.get('packages', []):
                pkg = cr.UpdateCollectionPackage()
                pkg.name = package['name']
                pkg.version = package['version']
                pkg.release = package['release']
                pkg.epoch = package['epoch']
                pkg.arch = package['arch']
                pkg.src = package.get('src')
                pkg.filename = package['filename']
                pkg.reboot_suggested = get_bool(package.get('reboot_suggested'))
                pkg.restart_suggested = get_bool(package.get('restart_suggested'))
                pkg.relogin_suggested = get_bool(package.get('relogin_suggested'))
                checksum_tuple = get_package_checksum(package)
                if checksum_tuple:
                    pkg.sum_type, pkg.sum = checksum_tuple
                col.append(pkg)

            rec.append_collection(col)

        for reference in self.references:
            ref = cr.UpdateReference()
            ref.href = reference.get('href')
            ref.id = reference.get('id')
            ref.type = reference.get('type')
            ref.title = reference.get('title')
            rec.append_reference(ref)

        update_record = UpdateRecord(**UpdateRecord.createrepo_to_dict(rec))
        update_record.digest = hash_update_record(rec)
        relations = {'collections': defaultdict(list), 'references': []}

        for collection in rec.collections:
            coll_dict = UpdateCollection.createrepo_to_dict(collection)
            coll = UpdateCollection(**coll_dict)

            for package in collection.packages:
                pkg_dict = UpdateCollectionPackage.createrepo_to_dict(package)
                pkg = UpdateCollectionPackage(**pkg_dict)
                relations['collections'][coll].append(pkg)

        for reference in rec.references:
            reference_dict = UpdateReference.createrepo_to_dict(reference)
            ref = UpdateReference(**reference_dict)
            relations['references'].append(ref)

        return (update_record, relations)
Exemple #7
0
    def test_updateinfo_xml_dump_05(self):
        now = datetime.now()
        # Microseconds are always 0 in updateinfo
        now = datetime(now.year, now.month, now.day, now.hour, now.minute,
                       now.second, 0)

        # Collection module with unset fields
        mod = cr.UpdateCollectionModule()
        mod.version = 18446744073709551615
        mod.context = "deadbeef"
        mod.arch = "x86"

        pkg = cr.UpdateCollectionPackage()
        pkg.name = "foo"
        pkg.version = "1.2"
        pkg.release = "3"
        pkg.epoch = "0"
        pkg.arch = "x86"
        pkg.src = "foo.src.rpm"
        pkg.filename = "foo.rpm"
        pkg.sum = "abcdef"
        pkg.sum_type = cr.SHA1
        pkg.reboot_suggested = True
        pkg.restart_suggested = True

        col = cr.UpdateCollection()
        col.shortname = "short name"
        col.name = "long name"
        col.module = mod
        col.append(pkg)

        ref = cr.UpdateReference()
        ref.href = "href"
        ref.id = "id"
        ref.type = "type"
        ref.title = "title"

        rec = cr.UpdateRecord()
        rec.fromstr = "from"
        rec.status = "status"
        rec.type = "type"
        rec.version = "version"
        rec.id = "id"
        rec.title = "title"
        rec.issued_date = now
        rec.updated_date = now
        rec.rights = "rights"
        rec.release = "release"
        rec.pushcount = "pushcount"
        rec.severity = "severity"
        rec.summary = "summary"
        rec.description = "description"
        rec.solution = "solution"
        rec.reboot_suggested = True
        rec.append_collection(col)
        rec.append_reference(ref)

        ui = cr.UpdateInfo()
        ui.append(rec)

        xml = ui.xml_dump()

        self.assertEqual(
            xml, """<?xml version="1.0" encoding="UTF-8"?>
<updates>
  <update from="from" status="status" type="type" version="version">
    <id>id</id>
    <title>title</title>
    <issued date="%(now)s"/>
    <updated date="%(now)s"/>
    <rights>rights</rights>
    <release>release</release>
    <pushcount>pushcount</pushcount>
    <severity>severity</severity>
    <summary>summary</summary>
    <description>description</description>
    <solution>solution</solution>
    <reboot_suggested>True</reboot_suggested>
    <references>
      <reference href="href" id="id" type="type" title="title"/>
    </references>
    <pkglist>
      <collection short="short name">
        <name>long name</name>
        <module version="18446744073709551615" context="deadbeef" arch="x86"/>
        <package name="foo" version="1.2" release="3" epoch="0" arch="x86" src="foo.src.rpm">
          <filename>foo.rpm</filename>
          <sum type="sha1">abcdef</sum>
          <reboot_suggested>True</reboot_suggested>
          <restart_suggested>True</restart_suggested>
        </package>
      </collection>
    </pkglist>
  </update>
</updates>
""" % {"now": now.strftime("%Y-%m-%d %H:%M:%S")})