def UpdateData(_bc_a, _bc_b, catalogname): a = bc_a[x] b = bc_b[x] cmp_result = opencsw.CompareVersions( a["version"], b["version"]) if cmp_result < 0: direction = "upgrade" else: direction = "downgrade" return { "from": a, "to": b, "type": self.DiffType(a, b), "direction": direction, }
def GetDiffsByCatalogname(catrel_from, catrel_to, include_downgrades): rest_client = rest.RestClient() diffs_by_catalogname = {} for arch in common_constants.PHYSICAL_ARCHITECTURES: logging.debug("Architecture: %s", arch) for osrel in common_constants.OS_RELS: logging.debug("OS release: %s", osrel) cat_from = rest_client.GetCatalog(catrel_from, arch, osrel) cat_to = rest_client.GetCatalog(catrel_to, arch, osrel) # Should use catalog comparator, but the data format is different if cat_from is None: cat_from = [] if cat_to is None: cat_to = [] cat_from_by_c = IndexByCatalogname(cat_from) cat_to_by_c = IndexByCatalogname(cat_to) comparator = catalog.CatalogComparator() new_pkgs, removed_pkgs, updated_pkgs = comparator.GetCatalogDiff( cat_to_by_c, cat_from_by_c) # By passing the catalogs (as arguments) in reverse order, we get # packages to be updated in new_pkgs, and so forth. for pkg in new_pkgs: catalogname_d = diffs_by_catalogname.setdefault(pkg["catalogname"], {}) catalogname_d.setdefault("new_pkgs", []).append((arch, osrel, pkg)) for pkg in removed_pkgs: catalogname_d = diffs_by_catalogname.setdefault(pkg["catalogname"], {}) catalogname_d.setdefault("removed_pkgs", []).append((arch, osrel, pkg)) for pkg_pair in updated_pkgs: # Upgrade or downgrade? cmp_result = opencsw.CompareVersions( pkg_pair["from"]["version"], pkg_pair["to"]["version"]) if cmp_result < 0: direction = "upgrade" else: direction = "downgrade" pkg_pair["direction"] = direction pkg = pkg_pair["from"] if direction == "upgrade" or include_downgrades: catalogname_d = diffs_by_catalogname.setdefault(pkg["catalogname"], {}) catalogname_d.setdefault("updated_pkgs", []).append((arch, osrel, pkg_pair)) return diffs_by_catalogname
def testNoEqual(self): self.assertEqual(0, opencsw.CompareVersions("1.8.1", "1.8.1"))
def testNoRev(self): self.assertEqual(-1, opencsw.CompareVersions("1.8.1", "1.8.2"))
def testRevNoRevIgnoreVersion(self): self.assertEqual(-1, opencsw.CompareVersions("1.8.2", self.V1))
def testEquals(self): self.assertEqual(0, opencsw.CompareVersions(self.V1, self.V1))
def testGreaterThan(self): self.assertEqual(1, opencsw.CompareVersions(self.V2, self.V1))
def testLessThan(self): self.assertEqual(-1, opencsw.CompareVersions(self.V1, self.V2))