Esempio n. 1
0
 def __init__(self, config, name, version=None, force=False):
     self.config = config
     self.force = force
     self.rules_name = name
     self.log = kaizen.logging.getLogger(self)
     self.handler = RulesHandler(config, name, version, force)
     self.db = Db(config)
     self._init_signals()
     self.init_sequences()
Esempio n. 2
0
class RulesManager(object):

    url = []
    patches = []

    def __init__(self, config, name, version=None, force=False):
        self.config = config
        self.force = force
        self.rules_name = name
        self.log = kaizen.logging.getLogger(self)
        self.handler = RulesHandler(config, name, version, force)
        self.db = Db(config)
        self._init_signals()
        self.init_sequences()

    def init_sequences(self):
        self.download_seq = self.handler.download_seq
        self.extract_seq = self.handler.extract_seq
        self.patch_seq = self.handler.patch_seq
        self.configure_seq = self.handler.configure_seq
        self.build_seq = self.handler.build_seq
        self.destroot_seq = self.handler.destroot_seq
        self.activate_seq = self.handler.activate_seq
        self.deactivate_seq = self.handler.deactivate_seq
        self.delete_destroot_seq = self.handler.delete_destroot_seq
        self.delete_build_seq = self.handler.delete_build_seq
        self.distclean_seq = self.handler.distclean_seq
        self.unpatch_seq = self.handler.unpatch_seq
        self.delete_source_seq = self.handler.delete_source_seq
        self.delete_download_seq = self.handler.delete_download_seq

        self.install_seq = self.activate_seq
        self.uninstall_seq = self.delete_source_seq

        # self.install_seq = Sequence("install",
        #                            phases_list.get("None"),
        #                            phases_list.get("Activated"), [],
        #                            False, self.activate_seq)

        # self.uninstall_seq = UnSequence("uninstall",
        #                                 phases_list.get("Extracted"),
        #                                 phases_list.get("Downloaded"),
        #                                 phases_list.get("Extracted"),
        #                                 [""], False,
        #                                 self.delete_source_seq)

    def _init_signals(self):
        self.already_activated = \
            ForwardSignal(self.handler.already_activated)

    def _install_dependencies(self, depanalyzer):
        dependencies = depanalyzer.analyse()
        missing = depanalyzer.get_missing()
        if missing:
            raise UnresolvedDependencies(self.rules_name, missing)
        for dependency in DependencyEvaluator(dependencies).list():
            if not dependency.get_type() == Dependency.SESSION:
                continue
            if not phases_list.get("Activated") in \
                dependency.rules.get_phases():
                self.install_seq(dependency.rules)

    def install_dependencies(self):
        depanalyzer = DependencyAnalyser(self.config, self.handler)
        self._install_dependencies(depanalyzer)

    def install_runtime_dependencies(self):
        depanalyzer = RuntimeDependencyAnalyser(self.config,
                                                self.handler)
        self._install_dependencies(depanalyzer)

    def download(self, all=False, resume_on_error=True):
        if all:
            dependencies = self.handler.build_depends()
            for dependency in dependencies.itervalues():
                if not dependency.get_type() == Dependency.SESSION:
                    continue
                if not resume_on_error:
                    self.download_seq(dependency.rules)
                else:
                    try:
                        self.download_seq(dependency.rules)
                    except Error, e:
                        self.log.err("Error while downloading " + 
                                     "rules '%s': %s" %\
                                     (dependency.name, e))
        self.download_seq(self.handler, self.force)