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)
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")
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
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
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)
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")})