Esempio n. 1
0
File: DB.py Progetto: grkvlt/Vostok
    def _dt_register_deps(self, info):
        """
        register dependencies given in info in dt
        @param info:
        """
        if info.Depends:
            for clause in info.Depends:  # iterates over all dependencies required by cartridge
                dtentry = DependencyTableInfo()

                # prepare dt entry
                pr = None
                # select providing version
                for expr in clause:  # iterate over any alternative versions
                    cname = expr.Name
                    pred = expr.Predicate

                    # check if cname exists in package db, with required version
                    pkg = self.lookup(cname, pred)

                    # TODO: proper version selection, currently the first found
                    # version is selected.
                    if pkg is not None:
                        # pr = {KEY_DT_NAME : pkg.Name, KEY_DT_VERS : pkg.Version, KEY_DT_PROV_SF : cname}
                        pr = ProvidesInfo(pkg.Name, pkg.Version, "")
                        pr._SelectedFeature = cname

                        dtentry.setProvider(pr)
                        break

                # update dt
                dtentry.addFeature(clause)

                self.update_dependency_table(info.Name, dtentry)
Esempio n. 2
0
File: DB.py Progetto: grkvlt/Vostok
    def _dt_reregister_deps(self, dt_db, reregister_list):
        """
        set new provider for each element in reregister_list
        @param dt_db:
        @param reregister_list:
        """
        for pkg in reregister_list:
            te = dt_db[pkg]
            for entry in te:
                entry_index = dt_db[pkg].index(entry)

                for expr in entry.Feature:
                    # check all possible features
                    cname = expr.Name
                    pred = expr.Predicate or None

                    new_prov = self.lookup(cname, pred)

                    if new_prov is not None:
                        # pr = {KEY_DT_NAME : new_prov.Name, KEY_DT_VERS : new_prov.Name, KEY_DT_PROV_SF : cname}

                        pr = ProvidesInfo(new_prov.Name, new_prov.Version, "")
                        pr._SelectedFeature = cname

                        dt_db[pkg][entry_index].Provider = pr